IAR EWARMでバイナリファイルのダウンロード

基本的に、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ファイルも確認しておく。