プログラム領域(P)のRAM割り付けについて、ご存知の方がいらっしゃいましたらお教えください。
マイコン:SH7269
開発環境:HEW
コンパイラのユーザーズマニュアルには、初期化データ領域(D)は起動時に_INISCTを使用して初期値をROMからRAMにコピーすると記載があります。
プログラム領域(P)も同様にできるのか試してみましたが、できませんでした。
どのようにしてプログラム領域(P)をRAMに割り付けるのかお教えください。
どうぞ宜しくお願いいたします。
m-ueno さん
まずプログラムが収まるだけのRAMが必要です、SRAM,DRAM,シンクロナスDRAMとか十分の容量がなければなりません、方法は2種類あります
1.自動的にRAMに転送して起動する
HEWのROM化支援機能を使用すれば簡単にできます
「HEWのROM化支援機能」で検索すれば必要な資料が見つかると思います
一部がROMから起動してROMからRAMへコピーしてRAMに制御を渡す
ということになります、少しの設定でできてしまいます。
2.ROMの初期ブートローダがRAMに媒体のデータを転送して起動させる
ROMに実行できるプログラムを入れておきます、ROMが起動すると
SDカード、メモリ、他から実行用のRAMのプログラムをRAMに転送して
制御をRAMに渡します、RAMのプログラム作成の場合は
セクションの設定をRAM用に調整します、出来上がった実行プログラムを
起動したROMが読み込めるように、媒体に入れておきます
以上です、それほど難度が高くありませんので、がんばってください、ね
IKUZO様、どうもありがとうございます。
ご指摘の「ROM化支援機能」でRAMに割り付けようとしていました。
初期化データ領域(D)は正常に割り付けられていましたので、プログラム領域(P)も同様にしようとしたところできなかった状況です。
ROM化支援機能についてアプリケーションノートを参考に、_INTSCTのセクション名を変更し、他のセクションのプログラム領域(P)をRAMに割り振るようにしましたが、コピーできませんでした。
確かに難易度は高くないはずなので、ちょっとしたことが原因なのだと思います。
設定など再度確認してみます。
どうもありがとうございます。
アプリケーショーンノート 「RJJ06J0053-0100/Rev.1.00」 の「5.2作成方法」で
詳しく説明されていますが 、なにか不都合がありましたか?
ROM化支援機能の「ROMからRAMへマップするセクション」で設定すると、C$BSECとC$DSECが自動生成されるのだとばかり思っていました。
C$BSECとC$DSECにROMからRAMへマップするセクションを追加したところ、正常に動作しました。
どうもありがとうございました。