__at を使用したフラッシュメモリでのキーの配置

一部のフラッシュメモリデバイスでは、特定の機能をアクティブにするためにキーをアドレスに書き込む必要があります。 __at セクションを使用すると、値を特定のアドレスに簡単に書き込むことができます。

デバイスに 0x80000x10000 のフラッシュメモリが搭載されており、アドレス 0x8000 でキーが必要であると仮定します。 __at セクションを使用してキーをアドレスに書き込むには、変数を宣言し、コンパイラが .ARM.__at_0x8000 というセクションを生成できるようにする必要があります。

Example 24. C または C++ コードでのフラッシュキー変数の配置

// flash_key を .ARM.__at_0x8000 という名前のセクションに配置する
long flash_key __attribute__((section(".ARM.__at_0x8000")));

以下の例では、フラッシュメモリの実行領域の手動配置を記述したスキャッタファイルを示しています。

Example 25. フラッシュメモリの実行領域の手動配置

ER_FLASH 0x8000 0x2000
{
    *(+RO)
    *(.ARM.__at_0x8000) ; キー
}

リンカのコマンドラインオプション --no_autoat を使用して、手動配置を有効にします。

以下の例では、フラッシュメモリの実行領域の自動配置を記述したスキャッタファイルを示しています。 リンカのコマンドラインオプション --autoat を使用して、自動配置を有効にします。

Example 26. フラッシュメモリの実行領域の自動配置

ER_FLASH 0x8000 0x2000
{
    *(+RO)               ; 他のコードと読み出し専用データ
                         ; __at セクションが自動的に選択される
}

Show/hide関連項目

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0474GJ
Non-ConfidentialID051612