指定された記憶場所変数STM32でフラッシュチップ

例えばSTM32L4R5(公式DEMOボード)において、内部変数は、フラッシュアドレス指定されたシート(0x081F8000)に格納されています。

A、MDK Keil社のソフトウェアの操作

uint8_t version[12] __attribute__((section(".ARM.__AT_0x081F8000")))= {0x11,0x12,0x13,0x14,0x15,0x16};
uint8_t version1[12] __attribute__((at(0x081F8010)))= {0x11,0x12,0x13,0x14,0x15,0x16};

以下のように、上述した実施の形態では、上に示され、そしてバージョンバージョン1であり、フラッシュSTM32マイコンチップに0x081F8000 0x081F8010アドレスを格納することができます。

組み込みシステムまたはマイクロコントローラのために、通常プロファイルの一連の指定された領域(部分)に格納されるであろう。言い換えれば、変数のいくつかの種類が指定された領域に保存されています。ここでは、STM32のリンクファイルを修正する必要があります。

ショー下図デフォルトのリンクSTM32の設定ファイル。
STM32は、デフォルトの設定ファイルにリンク
スキャッタファイルは、ファイルを変更しました。図コード内の赤いボックスを追加し、このコードの意味はRW_IROM2(段落属性UNINIT_FIXED_LOC)領域を定義することで、領域の開始アドレスは0x081F8000、0x00008000のサイズです。.ANY(UNINIT_FIXED_LOC)は、任意のデータセグメント属性UNINIT_FIXED_LOCの記憶を示しています。
ここに画像を挿入説明
1のチェックを外し、自分の2に変更した後、スキャッタファイルを選択します。文書リンクを裏返しにする必要性
したがって、プログラミングのみ対応するデータ型がそのように定義されたとき。

uint8_t version2[12] __attribute__((section("UNINIT_FIXED_LOC"), zero_init));

チェック.MAPファイルでコンパイルした後、あなたはデータセグメントの0x081f8000保存0x0000000cサイズで見ることができますUNINIT_FIXED_LOC属性
.MAPファイル

二、IAR操作

リンクファイル(.icf)中に次のコードを追加します。

define symbol __ICFEDIT_region_FIXED_LOC_start__ = 0x081F8000;
define region uninit_fixed_loc = mem:[from __ICFEDIT_region_FIXED_LOC_start__ size 32K];

place in uninit_fixed_loc  { readonly section UNINIT_FIXED_LOC };  

第三に、注意を払います

紙は、そう動作変数は、ロック解除に必要な動作モードチップFLASHに従って、すなわちに、次に変更するとき、可変FLASH STM32シートにロックを格納されています。

参考:
https://blog.csdn.net/qq_40888343/article/details/86223609
https://blog.csdn.net/YinShiJiaW/article/details/101466575
https://blog.csdn.net/qq_35862573/article/詳細/ 104193991

リリース5元の記事 ウォンの賞賛3 ビュー2374

おすすめ

転載: blog.csdn.net/u010351030/article/details/104773062