自分が使用していたR8C/M12A「R5F2M122ANDD」はRAMが512バイトROMが8kバイトとなっていた、そんでもって作っているプログラムをコンパイルするプログラムが3kバイトちょっとだった。
一方、ある人が使っているR8C/M12A「R5F2M120ANDD」はRAMが256バイトROMが2kバイトとなっていた、なのに、プログラムちゃんと入って動く。
どゆこと? とおもって調べるとなんやかんやするとROMは32kバイトまで増やせるし(増やしてない)RAMは1kバイト、がんばれば1.25kバイトまで増やせるって、どゆこと?
とりあえずプログラム動くからいいとして、なぞの問題が発覚。変数をテラタームで覗くと見事にぶっ壊れているのだ。変数のアドレスをすべて出して確認してみるとある配列のアドレスと変数のアドレスが被っている どゆこと?
しかも、マニュアルには「RAMは00400番地から」と書いてあるのに、とある配列の先頭アドレスは003df番地(うろ覚え)から始まっている。...
結局、すべての変数の頭にstaticをつけて静的にRAM領域を確保することでその場しのぎではあるが解決。
0 件のコメント:
コメントを投稿