以前開発したPICマイコンのプログラムに修正依頼が来た。1つはロジック上の問題(抜け)で、もう1つはプログラム上の問題。
ロジック上の問題は、原因がすぐに分かったので対応も容易だった。1つ関数を追加して完了。
プログラム上の問題は、ロジックには問題が無いと思われたのでとりあえずシミュレータでプログラムを走らせてみて、挙動を確認してみることに。すると、4ビットの数値同士の比較で、ケアしていなかった上位4ビットに変な値が設定されている事が判明。比較時に上位ビットをマスクするマクロを書いて対応。
普段は4ビット数値の取り扱いなんてやっていないので、こういうところは非常に勉強になりますです。
このプログラムを仕上げる時は、試行錯誤で二日ほど徹夜仕事にもなったりして大変だったんだけれど、その時苦労した分上がってきたバグは非常に簡単なもので、その点では良かったと思う。まぁ、簡単なバグなんだから最初から潰しておけって言う突っ込みもありそうだけれど(^^
もうバグが無いと良いな~。
2009年2月12日木曜日
2009年1月23日金曜日
PIC開発完了
昨日PICプログラムの開発が何とか完了しました。
初めての経験だったので色々とはまりましたが、これで一息といったところです。今回の経験で得られたTIPSは以下のような感じでしょうか。
いやいや、それにしてもアセンブラをステップ実行してデバッグするのは本当にしんどいです。。。
初めての経験だったので色々とは
- 変数を使い過ぎてバンク0の空き
領域を使い切らない様にする - MPLAB IDEのエディタはアセンブラの
ソースファイルが更新されている 事は検知してくれるが、再ビルド (=アセンブル)はしてくれない
いやいや、それにしてもアセンブ
2009年1月21日水曜日
非同期
PIC16のアセンブラをIDEでデバッグしててハマった。
ステップ実行しているのにサブルーチンに何故かジャンプ・インしない・・・と思って悪戦苦闘していたのだけれど、実はマシン語にアセンブルされたバージョンのアセンブラコードと、IDEのビューアでデバッグ用に見ていたアセンブラコードのバージョンが違ったというお粗末なミス・・・orz つまり、アセンブラコードとマシン語の実行コードが同期していなかったんですわ。
IDEが新しいバージョンのアセンブラソースをリロードしてくれるのに、マシン語への再ビルドはしてくれないのです。ちょっと不親切だな~とも思うんですが、ともあれミスはミスですわ。
寝る前に解決してくれて嬉しいんだけれど、しょーも無い話で1時間以上無駄にした感がある。ちょっと勿体無かった。まぁ、何事も経験と言えば経験なのですが。
ステップ実行しているのにサブルーチンに何故かジャンプ・インしない・・・と思って悪戦苦闘していたのだけれど、実はマシン語にアセンブルされたバージョンのアセンブラコードと、IDEのビューアでデバッグ用に見ていたアセンブラコードのバージョンが違ったというお粗末なミス・・・orz つまり、アセンブラコードとマシン語の実行コードが同期していなかったんですわ。
IDEが新しいバージョンのアセンブラソースをリロードしてくれるのに、マシン語への再ビルドはしてくれないのです。ちょっと不親切だな~とも思うんですが、ともあれミスはミスですわ。
寝る前に解決してくれて嬉しいんだけれど、しょーも無い話で1時間以上無駄にした感がある。ちょっと勿体無かった。まぁ、何事も経験と言えば経験なのですが。
今度はPICマイコン
8ビットPICマイコン (PIC16F874) 向けのコードを書いています。人生初PIC体験です。
と言いつつ、昨年まで書いていたH8 3069向けのコードでGPIOを使っていたので、そういった意味での敷居は高くありませんでした。
敷居が高いのは、アセンブラ!人生初アセンブラです。H8向け開発でもアセンブラコードを読む機会がありましたが(TOPPERS/JSPのモニタプログラムとか)、今回はまさに開発対象がアセンブラです。一応、Cライクな独自言語を書いてそれをコンパイラに掛けるというスタイルで開発しているんですが、出力されたアセンブラをPICベンダの配っているアセンブラ向けIDEでデバッグしてます。
う~む、どんどんとプリミティブになってきた。。。
それにしても、アセンブラ読むの大変です。かなり大変です。
と言いつつ、昨年まで書いていたH8 3069向けのコードでGPIOを使っていたので、そういった意味での敷居は高くありませんでした。
敷居が高いのは、アセンブラ!人生初アセンブラです。H8向け開発でもアセンブラコードを読む機会がありましたが(TOPPERS/JSPのモニタプログラムとか)、今回はまさに開発対象がアセンブラです。一応、Cライクな独自言語を書いてそれをコンパイラに掛けるというスタイルで開発しているんですが、出力されたアセンブラをPICベンダの配っているアセンブラ向けIDEでデバッグしてます。
う~む、どんどんとプリミティブになってきた。。。
それにしても、アセンブラ読むの大変です。かなり大変です。
登録:
投稿 (Atom)