基本的に、IAR EWARMでプログラムをFlashにダウンロードするには *.sim ファイルが必要となる。
デバッグ情報の無い生のバイナリファイル(*.bin)をEWARMでダウンロードすることはできない。
(例えばSTM32マイコンであればSTM32CubeProgrammerのようなツールを別途使用することになる。)
ただし、EWARMで生のバイナリファイルをリンクしてダウンロードすることはできる。
手順1
EWARMで新しい「空のプロジェクト」を作成する。適当な名前のソースファイルを1個作成し、空のmain関数だけを書く。
int main(void) { return 0; }
手順2
プロジェクトのオプションの「一般オプション」の「ターゲット」タブで「プロセッサ選択」を指定する。
手順3
「一般オプション」の「ライブラリ設定」タブで、「ライブラリ」と「低レベルインターフェースのライブラリ実装」を「なし」に設定する。
手順4
例えば下記のようなリンカスクリプト(*.icf)を作成する。
オプションの「リンカ」の「設定」タブで「デフォルトのオーバーライド」をチェックし、作成したリンカスクリプトを指定する。
define symbol __ICFEDIT_region_ROM_start__ = 0x08008000; define symbol __ICFEDIT_region_ROM_end__ = 0x0805FFFF; define symbol __ICFEDIT_region_RAM_start__ = 0x20000000; define symbol __ICFEDIT_region_RAM_end__ = 0x20017FFF; define memory mem with size = 4G; define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; /* USER DEFINED SECTIONS */ place at address mem:0x08000000 { section .program }; place at address mem:0x08060000 { section .resource };
手順5
「リンカ」の「入力」タブで、ダウンロードしたいバイナリファイルを指定し、対応するシンボルを定義する。(こちらを参照。以前は1個しか指定できなかったが、現在は2個まで指定できる。3個以上指定したい場合は「追加オプション」タブで指定する。)
手順6
- 「リンカ」の「ライブラリ」タブで、「自動ランタイムライブラリ選択」のチェックを外す。
- 「デフォルトのプログラムエントリをオーバーロードする」をチェックし、手順5で指定したバイナリファイルのうち、プログラムのエントリーがあるバイナリファイルのシンボルを指定する。
手順7
オプションの「デバッガ」の「設定」タブで、使用するデバッガプローブを指定し、「指定位置まで実行」と「マクロファイルの使用」のチェックを外す。
手順8
「デバッガ」の「ダウンロード」タブで、「フラッシュローダを使用する」をチェックする。
手順9
ビルドして、デバッガでダウンロードする。念のためmapファイルも確認しておく。