はじめて投稿いたします。
nakaiと申します。
試作で汎用基板(RL78/G13-100LEAFB)で開発したプログラムを、試作基板RL78/G13-100LLAFBで
動作させたところ、誤動作してしまいます。
開発環境:e2studio, gcc
同一のソースプログラム群をビルドしデバッガ(E1)経由で動作させたところ
現象としてはプログラムの飛び先がおかしくなります。
例えば、関数のあるアドレスを静的にテーブル化して
関数コールした場合にあらぬところにジャンプします。
見てみると、そもそもテーブルに正しい飛び先が格納されていません。
汎用基板と試作基板にI/Oデバイスは違いますが、I/Oデバイスアクセスの以前のところで
トラぶっているようです。
この様な現象で解決の糸口がつかめていません。
チェックする項目をご教示頂きたく、お願い致します。
RL78/G13-100LEAFBでは正常動作 RL78/G13-100LLAFBでは誤動作
RL78/G13-100LEAFBでは正常動作
RL78/G13-100LLAFBでは誤動作
コード・フラッシュ・メモリ容量が 64kB の R5F100LEAF と 512kB の R5F100LLAFB では、データ・フラッシュ・メモリや Mirror 領域の開始/終了アドレスが全然違います。詳しくは『RL78/G13 ユーザーズマニュアル ハードウェア編』に掲載されてるメモリ・マップを参照してください。
チョコです。 同じプログラムということですが,ビルドだけはやり直したのでしょうか? ビルド結果のHEXファイルをそのまま使わないで,ビルドだけをやり直せば, ミラー領域(固定値に使用)はデバイスに合わせてくれるはずです。
その場合に注意するのは,プログラムが64kを超えてしまったかどうかです。
100LEは64Kなので,16ビットでアドレスできますが,100LLは16ビットでは
指定できなくなります。ミラー領域のアドレスが0x2000から0x3000に変わり,
コードもその分後ろにずれることになり,64kを超えてしまい,16ビットで表せなく
なっている可能性は無いでしょうか。