ROM化支援機能でRAMに展開した関数から,ROM上の関数を呼ぶことができない

お世話になっております.

HEWのROM化支援機能でRAMで実行されている関数からROMに置かれている関数を呼び出すと,関数呼び出しが失敗し,INT_Illegal_codeが呼び出されてしまいます.

使用マイコンは,SH2AのSH7254Rです.

 

現在の実装詳細をお伝えします.

REPRO と呼ばれるセクションをきりまして,

0x00100000 : PREPRO, CREPRO, DREPRO (内蔵ROM)

0x04000000 : RREPRO, BREPRO(外部RAM)

と,さらにプログラミングのRAM展開場所として,

0x02200000 : PRREPRO, CRREPRO(外部RAM)

とセクションを割り当てています.

 

そして,HEWの最適化リンカ→出力→ROMからRMAにマップするセクションで,

DREPRO→RREPRO

PREPRO→PRREPRO

CREPRO→CRREPRO

と設定しています.

 

そして,以下の添付画像のように,

BOOT_LOADER_test関数をRAMに展開し,

その内部でROMにある関数BOOT_LOADER_test_innerを呼び出しているのですが,

処理がそちらのROMの関数へ飛ばず,全く別のアドレスへ飛んでしまい,結局INT_Illegal_codeとなってしまいます.

 

RAMへ割り付けた関数からROMにある関数を呼び出す方法を教えてくださいませ.

どうぞよろしくお願いいたします.

 

Parents Reply Children
No Data