FAQ~よくある質問~ | FAQマスタ詳細表示
FAQ詳細情報
ID | 10810594 |
---|---|
FAQカテゴリ(大) | デバイス対応 |
最終更新日 | 2016-03-26 |
質問内容
TN52619: ielftoolのチェックサム - NXPのLPCデバイスを使用する場合
回答内容
ターゲット:ARM
コンポーネント:一般
公開日:2013年2月12日午前10時23分
概要
このテクニカルノートでは、いくつかのNXP LPCデバイスで必要な「特別な」ベクタテーブルのチェックサムについて説明します。
NXP LPCデバイスについて
LPCデバイスは、デバイスの特定の場所 (ベクターテーブル) に特別なチェックサムを配置する必要があります。IAR Embedded Workbench は自動的にこのチェックサムを計算し配置します。但し、一連のテクニカルノートに書かれている CRC チェックサムは、ベクターテーブルのこの領域を計算対象外にしなくてはなりません。
問題 1 - ielftool error
ビルドすると次のエラーになります。
ielftool error: Checksums have dependencies
エラーになる理由は、ベクターテーブルのチェックサムとアプリケーションのチェックサムが同じ ielftool コマンドで作成されているからです。
解決策1 - ベクタテーブルを除外
start アドレスをベクターテーブルの次のアドレスに書き換えて、アプリケーションのチェックサムの計算から、ベクターテーブルを除外します。
プロジェクトメニュー > オプション > リンカ > チェックサム > 開始アドレス を 0x0 から 0x40 に書き換え。
(.map で .intvec セクションの終了アドレスを調べてください)
問題2 - チェックサムは、vector テーブルを含める必要があります
アプリケーションのチェックサムは、ベクターテーブルを含めなくてはならないが、解決策 1では、ベクターテーブルを除外している。
解決策 2 - ポストビルドコマンドラインを使用する。
ポストビルドコマンドラインを使用すると、2つのチェックサムを 別々のielftool を使って計算することができます。これで ielftool error の原因となる「依存」を避け、0x0番地をスタートアドレスにすることができます。
1.プロジェクトメニュー > オプション > リンカ > チェックサムタブ
□未使用のコードメモリをフィルする
のチェックをはずします。
2. プロジェクトメニュー > オプション > リンカ > 追加オプション > コマンドラインオプションの使用に以下を追加します。
--place_holder __checksum,2,.checksum,1
--define_symbol __checksum_begin=0x0
--define_symbol __checksum_end=0xfffb
3. プロジェクトメニュー > オプション > ビルドアクション > ビルドアクション設定タブの「ポストビルドコマンドライン」に、以下の行を記入します。
ielftool
--fill 0xFF;0x0-0xfffb
--checksum __checksum:2,crc16,0x0;0x0-0xfffb
--verbose "$TARGET_PATH$" "$TARGET_PATH$"
問題 3 - バイナリファイルにチェックサムが含まれていない。
プロジェクトメニュー > オプション > 出力コンバータ > 出力タブ
□追加出力ファイルを生成
にチェックを入れてバイナリ出力を作成。バイナリファイルにチェックサムが含まれていない。
理由は、バイナリファイルがリンク後作成されますが、ポストビルドの前だからです。すなわち、ポストビルドアクションによりチェックサムが計算される前です。
解決策 3 - post-build .bat ファイルを使用する
ポストビルドコマンドラインで、最初にチェックサムを計算し、次に追加の出力を行う .bat ファイルを起動します。
サンプルプロジェクト、IAR Embedded Workbench for ARM - Example (LPC device).zipを参照してください。
注意:
注: このサンプルプロジェクトは、Example (1 range, 3 diff. locations)、ビルド設定 PlaceEndOfROM です。このプロジェクトは、ielftool エラーを発生させるため、デバイスを LPC1768 に変更してあります。しかし、チェックサムを計算するアドレス範囲 は同じです。
説明:
1.Project メニュー> Options… > Build Actions > Post-build command line に以下の文字列を書き込みます。
$PROJ_DIR$\post-build.bat $TARGET_BPATH$
2.以下の内容の、post-build.bat というファイルをプロジェクトフォルダに作ります。
set OUT=%1.out set HEX=%1.hex set BIN=%1.bin
:: アプリケーションのチェックサムを計算します
ielftool --fill 0xFF;0x0-0xfffb --checksum __checksum:2,crc16,0x0;0x0-0xfffb --verbose %OUT% %OUT%
:: 追加のヘキサファイルの出力
ielftool.exe --ihex --verbose %OUT% %HEX%:: 追加のバイナリファイルの出力 ielftool.exe --bin --verbose %OUT% %BIN%
全ての製品の名前は、それぞれの所有者の商標または登録商標です。
参考資料URL
-
http://supp.iar.com/Support/?Note=52619
Tecn Note 52619: 英文サイト