RXマイコンを使ってプログラムを書いています。
ブートローダーのプログラムとアプリのプログラムの2つがあります。
ブートローダーのプログラムを起動して動かし、以下のapp_boot関数を動作させて
アプリケーションのプログラムにジャンプしたいのですが、上手くいかず、
ブートローダーのプログラムの中にいます。
アドレス空間↓
RAM
アドレス サイズ 機能
0x08000000 0x100000(1MB) ブートローダ ①
0x08100000 0x700000(7MB) アプリケーション ②
内蔵ROM(コードフラッシュメモリ)
アドレス サイズ 機能
0xFFC00000 0x200000(2MB) アプリケーション ③
0xFFF00000 0x100000(1MB) ブートローダ ④
動作詳細↓
④のアドレスでブートローダーを起動し、ブートローダーを①にコピーして
①にジャンプします。アプリケーションを③に書き込んで、app_boot関数を実行します。
②にジャンプするはずが、何故かできません。
以下でどこが悪いか教授いただけると助かります。
#define APP_VECTOR_START (0x08100000)
//--------------------------------------------------------------------------
// アプリへジャンプ
//--------------------------------------------------------------------------
void app_boot( int argc, char *argv[] )
{
void (*jmp_program)(void) = (void (*)(void))APP_VECTOR_START; // アプリプログラムをRAMへコピー memcpy((void *)0x08100000, (void *)0xFFC00000, 0x200000); //0xFFC00000から2MB分 0x08100000にコピー // 割込み禁止 vdis_psw(); /* Jump to the application */ jmp_program();
}
OS:NORTi
コンパイラ:CCRX
環境:e2studio

回答2件
あなたの回答
tips
プレビュー