PICのプログラムのHEXファイルについて
駆動しているPICがあって、そのソースがどのプロジェクトだったか分からなくなるというお馬鹿な状況になった。
改良したいんだが元がどれだかわからない。
プログラムは現に動いているので、PICから読み出してHEXファイルに書き出す。
プロジェクトのフォルダには作成されたHEXが残っている。
同じのを見つければそのプロジェクトが元のプロジェクトということになる。
同じものが見つからない。
試しに、別のPICに今ビルドしたばかりのプログラムを書き込んでから読み出して作ったHEXファイルと、プロジェクト内のいま作成されたばかりのHEXファイルを比較してみた。
違う。
というか、同一ファイルとして認識されないし、エディタで開いてちょっと眺めた限りでは、やはり何だか違う感じだ。
もう少し我慢して眺めると、ズレてはいるが同じ内容の部分が確認できる。
ここまで来て、やっとHEXファイルの構造を調べてみたら、下の青くなった部分はプログラムと無関係らしい。
スタートコードが1バイト、データ長を示す2バイト、アドレスオフセット値が4バイト、レコード種別が2バイト、そしてプログラムが指定したデータ長分だけ続き、最後にチェックサムが2バイトだ。
これは Intel HEX と呼ばれる書式のようで、Intel HEX で検索すれば情報が出てくる。
なので、この部分を削除してしまうと、最初の数行が異なるが、あとは完全に一致することがわかる。
つまり、先頭部分が若干異なるためにデータ全体がずれ、しかもデータ長やアドレスのデータが入るために、眺めても同じに見えなくなってただけのようだ。
その後さらに調べると、要は7、8バイト目がゼロでない行はデータではないので、今回は無視すれば良さそうだと分かった。
分かったが、手作業でやるしかないのかなあというところで、面倒になって止まる。