適用先: ARM 開発ツール
回答
この記事に含まれている情報の適用先:
- Keil Development Suite for ARM バージョン 2.0 以降
- ULINK USB-JTAG アダプタ
質問
Philips LPC2000 デバイス上のオンチップ RAM (アドレス 0x40000000 から開始) 内でデバッグ作業を行うプロジェクトを立ち上げようとしています。この作業は可能でしょうか?必要な手順を教えてください。
回答
可能です。プログラムをオンチップ RAM の中に置くことができます。その後、デバッグすることができます。その際、Flash に保存されているプログラム用の ARM Embedded ICE ハードウェアによって暗黙に定義されるブレークポイントの制限は受けません。
Keil MCB2100 ボードの場合、KeilARMBoardsKeil MCB2100Blinky フォルダの中にサンプル プロジェクトがあります。このサンプル プロジェクトには 3 つのターゲットがあります。ターゲット MCB2100 RAM は RAM のデバッグ作業用に設定されています。
プロジェクトを設定するときは、プログラム コード全体がオンチップ RAM の中に存在していることを確認する必要があります。以下の手順に従って、Keil CARM Compiler を設定してください。
1. [Project]→[Options for Target]→[LA Locate] ダイアログを開きます。オプション [Use Memory Layout from Target Dialog] を無効にします。これにより、[Project]→[Options for Target]→[Target] ダイアログ ページ上でのメモリ設定が無効になります。
2. [Project]→[Options for Target]→[LA Locate] ダイアログで、メモリ クラス DATA、CODE、および CONST に対するアドレス範囲を [User Classes] の下で入力します。これらすべてのクラスは、オンチップ RAM 空間に適合する必要があります。以下に例を示します。
DATA (0x40003000-0x40003FFF),
CODE (0x40000000-0x40002FFF), CONST (0x40000000-0x40002FFF)
3. STARTUP.S ファイルは割り込みベクタを含み、オンチップ割り込みベクタに対して設定する必要があります。[Project Workspace - Files] タブで、STARTUP.S ファイルを右クリックして、[Options for File 'Startup.s']→[ASM] ダイアログを開きます。[Set:] の下で RAM_INTVEC と入力します。このオプションによって、MEMMAP は 2 に設定され(割り込みベクタは 0x40000000 からフェッチ)、セグメント STARTUPCODE は 0x40000000 に置かれます。
リンカ マップ ファイル内にある自分のプログラムの位置を確認することができます。メモリ クラスは以下のように表示されるはずです。
ACTIVE MEMORY CLASSES OF MODULE: .RAMBlinky (STARTUP)
BASE START END USED MEMORY CLASS
========================================================
00000000H 40003000H 40003FFFH 00000490H DATA
00000000H 40000000H 40002FFFH 0000030CH CODE
00000000H 40000000H 40002FFFH 00000022H CONST
[MEMORY MAP OF MODULE] の下で、セグメントをオンチップ RAM 空間の外部に置かないでください。
詳細
- Getting Started User's Guide
関連項目
- ARM: LOCATING VARIABLES AT ABSOLUTE MEMORY ADDRESSES
- LARM: USING ON-CHIP AND OFF-CHIP FLASH ON PHILIPS ARM
- ULINK: DEBUG IN OFF-CHIP FLASH OF PHILIPS LPC22XX