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

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

FAQ詳細情報

ID 10810608
FAQカテゴリ(大) デバイス対応
最終更新日 2014-01-16

質問内容

TN77989: フリースケール Kinetis K60Xxxx の永久デバイスロック/保護

回答内容

EWのターゲット : ARM
EWのコンポーネント : 一般
キーワード : .icf ファイル、リンク
更新日 :  July 3, 2013

 

問題
Embedded Workbench for ARM version 6.30.3 またはそれ以前のバージョンで、フリースケール K60Xxxxxデバイス用のプロジェクトをスクラッチから作成しする時、
プロジェクトメニュー> オプション > 一般オプション > ターゲットで
コア > Cortex-M4 を選択するか、デバイス > Freescale K60Xxxx を選択すると、デフォルトのリンカ設定ファイルはgeneric_cortex.icf になります。このリンカ設定ファイルでリンクすると、プログラムをボードにダウンロードした時に、永久デバイス保護 (すなわち、そのデバイスに対する再書き込みができなくなる) に状態になる原因となりことがあります。

Embedded Workbench for ARM version 6.30.4 とそれ以降のバージョンでは、他のリンカ設定ファイル (Freescale\MK60xxxx.icf) が自動的に選択されるので、この問題を防ぐことができます。

 

解決策
EWARM 6.30.3 とそれ以前のバージョン

以下のリンカ設定ファイルを K60Xxxx デバイス用に使用します。

$TOOLKIT_DIR$\examples\Freescale\K60\
TWR-K60\GettingStarted\config\K60X_Flash.icf

EWARM 6.30.4 とそれ以降のバージョン
自動的に選択される、
$TOOLKIT_DIR$\config\linker\Freescale にある、
デフォルトのリンカ設定ファイルを使用します。

背景
IAR Embedded Workbench IDE でコア指定=Cortexの場合、デフォルトのリンカ設定ファイルは、コードを 0番地から配置します。プログラムのサイズが増えると、0x40C番地の周りを取り囲むようになり、NVFSECに書きこまれてしまいます。

NVFSECレジスタの中の2ビットで、チップのマス・イレース機能を永久に禁止することができます。これらのビットはMass Erase Enable (MEEN) と呼ばれます。.同じレジスタに同じく、フラッシュのセキュリティを制御する2つのビットがあります。これらのビットを合わせて使用すると、デバイスを永久にロックすることができます。

EWARM バージョン 6.30.3 とそれ以前のバージョンでは、
プロジェクトメニュー > オプション > ターゲット > デバイス: Freescale K60Xxxx を選択した時はデフォルトで、
プロジェクトメニュー > オプション > リンカ > 設定 > リンカ設定ファイル > generic_cortex.icf が設定されていることに注意してください。

設定を変更するには、このページの下のリンク絵を参照してください。

注 1
IAR K60N512 キットのサンプルプロジェクトは、デフォルトのリンカ設定ファイルではなく、K60X_ram.icf またはK60X_Flash.icf を使用していますから、この問題は発生しません。

注 2
Freescale MQX のサンプルプロジェクトは、ベクターテーブルが vector.c にあり flash config 領域まで拡張されていて、正しい値が設定されています。

注 3
デバイスが Flash security ビット のみでロックされている場合、J-Link Commander (jlink.exe) コマンドでロックを解除することができます。
J-Link> unlock Kinetis

注 4
Embedded Workbench for ARM version 6.60.1は I-jet を使用し、以下のコマンドでロックを解除することができます。

<EWARM>\arm\bin\jet\bin\Kinetis_unlock_swd.bat

 

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

参考資料URL