Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

HEXファイル

PICのプログラムのHEXファイルについて

駆動しているPICがあって、そのソースがどのプロジェクトだったか分からなくなるというお馬鹿な状況になった。
改良したいんだが元がどれだかわからない。

プログラムは現に動いているので、PICから読み出してHEXファイルに書き出す。
プロジェクトのフォルダには作成されたHEXが残っている。
同じのを見つければそのプロジェクトが元のプロジェクトということになる。

同じものが見つからない。

試しに、別のPICに今ビルドしたばかりのプログラムを書き込んでから読み出して作ったHEXファイルと、プロジェクト内のいま作成されたばかりのHEXファイルを比較してみた。
違う。
というか、同一ファイルとして認識されないし、エディタで開いてちょっと眺めた限りでは、やはり何だか違う感じだ。
pic_hex_comp_01
もう少し我慢して眺めると、ズレてはいるが同じ内容の部分が確認できる。
pic_hex_comp_02
ここまで来て、やっとHEXファイルの構造を調べてみたら、下の青くなった部分はプログラムと無関係らしい。
スタートコードが1バイト、データ長を示す2バイト、アドレスオフセット値が4バイト、レコード種別が2バイト、そしてプログラムが指定したデータ長分だけ続き、最後にチェックサムが2バイトだ。
pic_hex_comp_03
これは Intel HEX と呼ばれる書式のようで、Intel HEX で検索すれば情報が出てくる。

なので、この部分を削除してしまうと、最初の数行が異なるが、あとは完全に一致することがわかる。
pic_hex_comp_04

つまり、先頭部分が若干異なるためにデータ全体がずれ、しかもデータ長やアドレスのデータが入るために、眺めても同じに見えなくなってただけのようだ。

その後さらに調べると、要は7、8バイト目がゼロでない行はデータではないので、今回は無視すれば良さそうだと分かった。
分かったが、手作業でやるしかないのかなあというところで、面倒になって止まる。

このエントリーをはてなブックマークに追加

Posted under: MPLAB X, PIC その他


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.