カスタマーサポートセンター

FAQ~よくある質問~ | FAQマスタ詳細表示

FAQ詳細情報

ID 10810918
FAQカテゴリ(大) コンパイラ
最終更新日 2016-01-01

質問内容

TN62349: HCS12のRAMのリマップ

回答内容

ターゲット:  HCS12
コンポーネント  デバッガ
公開  2007/05/22 8:18 

 

概要
このテクニカルノートは、HCS12用 IAR Embedded Workbench バージョン 3.x および以降のバージョンに適用されます。

 

ディスカッション
SFR 領域は少しの RAM を隠しますが、この RAM はアプリケーションにとって必要です。

 

背景
HCS12用 IAR Embedded Workbench は、それぞれの派生品用にチップ設定ファイルを持っています。これらのセットアップ ファイルは、メモリの種類を移動しません。つまり、リセット部分は、SFR、EEPROM、RAMに使用されています。したがって、アドレス 0x00 とその上で、あなたは通常お互いをカバーするメモリのこれらの 3 つのタイプを見つけます。

フリースケール MC9S12DG128 (例えば) は、リセットよりこのメモリーマップ (下位 16 KB)を持ちます。

種類 サイズ から    まで
SFRs 1 kB 0x0000 0x03FF
RAM 8 kB 0x0000 0x1FFF
EEPROM 2 kB 0x0000 0x07FF 

...  RAM メモリ1 KB と EEPROM メモリのすべて (2KB) は優先のメモリタイプにカバーされます。(優先順位は SFR、RAM、EEPROM)

 

解決策
デバイスの起動時に、RAM メモリを希望の位置に移動する値にSFR INITRM を設定します。

変更は次のとおりです(IAR ファイル) 。

* .ddf ファイルの中で行を追加
 ... Sfr3 = INITRM         2     YES     YES     0x20

... そして、INITRM SFR を書くために行を追加する時、番号 "Sfr #" を修正しなくてはならないことに注意してください。値 0x20 を読む必要があります。
"RAM をアドレス 0x2000 に置き、RAM の上側をこのアドレスに置きます。"

* .ddf ファイルのその行を修正します...
Memory1 = RAM         Memory       0x00000    0x01FFF  RW

...読む代わりに...
Memory1 = RAM         Memory       0x02000    0x03FFF  RW

* xcl ファイルの... 

-D_RAM_BEGIN=00000
-D_RAM_END=01FFF
を、

-D_RAM_BEGIN=02000
-D_RAM_END=03FFF
に。

 

* 最後に、プロジェクトの設定を、修正した .ddf ファイルと .xcl ファイルを参照するように、変更します。

これらの設定は、
Project > Options > Linker > Config

...と、 
Project > Options > Debugger > Setup
です。

サンプル (Freescale MC9S12DG128)

添付されているサンプル (Example for MC9S12DG128.zip) は、0x2000 ~ 0x3FFFから.移動したRAM メモリ です。

 

ノート
.ddf を修正したときは、プロジェクトを閉じて、開きなおす必要があります。(.ddf ファイルはプロジェクトを開いたときに一度だけ読み出されます)

推奨される解決方法は、.ddf より供給された値を BDM デバッガ が SFRに書き込むので、C-SPY BDMデバッガを使用してダウンロードした時のみ有効です。デバイスをスタンドアロンで動作させる時は、SFRへの書き込み動作は __low_level_initに移動する必要があります。

サンプルをビルドして、Special Single Chip Mode を適用・テストします。他のモードの時のINTREM への書き込みは .ddf ファイルの中に追加します。

 

全ての製品の名前は、それぞれの所有者の商標または登録商標です。

参考資料URL