こんにちは
現在H8 300Tinyの評価キット(デバイスは36079)を使用して、
ROMのサムを計算するプログラムを作成しています。
ROMの0x00000000番地から0x0001EFFF番地の値を加算しているのですが、
毎回サムの計算値が異なってしまいます。
チェックサムの関数は下記のようにしています。
#define ROM_STR_ADDR ((unsigned int)0x00000000)
#define ROM_END_ADDR((unsigned int)0x0001EFFF)
static void check_sum(void){ unsigned char *sum_addr; unsigned int sum_cnt; unsigned int sum_data = 0;
sum_addr = ((unsigned char*)ROM_STR_ADDR); for(sum_cnt = ROM_STR_ADDR ; sum_cnt < ROM_END_ADDR ; sum_cnt++ ) { sum_data += *sum_addr; sum_addr++; } }
HEWにて上記関数を実行して、その後Reset実行すると値が変わっていることがあります。
上記の関数が悪いか、他の関数が影響しているか調べている最中なのですが、
何かご存知のある方いましたら教えていただけますか?
チェックSUM動きました。
原因はいまいちわかりませんが、
ビルド時にROM内のデータが変わっていたようなので、
やはりソフトウェアブレーク処理かもしれません。
皆様有難うございました。