開発のヒント
周辺機能、I/O、メモリ
FlashのRWW (Read While Write)
データシート等のマニュアルに「RWW可能」と記載してあるSTM32はFlashから命令を実行中に、Flashにデータを書き込むことができます。
しかし、いくつかのSTM32は、Flashから命令を実行中にFlashにデータを書き込むことができません。
STM32では、Flashにはコードエリアとデータエリアの区分が無く、どこにでも命令とデータを置くことができるのですが、一部の製品では、ハードウエア的にメモリマップと内部バスが共通になっているため、命令実行とデータ書き込みは同時実行ができません。
しかし、RAM上で命令を実行していれば、Flashにデータを書き込むことは可能です。
STM32シリーズはRAM上で命令を実行できます。RAMとFlashは異なるハードウエアですので、RAMの命令を実行中にFlashにデータを書き込む事ができます。
ただし、RAMはFlashほどメモリ容量が大きくないため、メインルーチンを含む全てのコードを置くことはできません。
そのため、Flashにデータを書き込むコードを関数(サブルーチン)化し、それだけをRAM上に置き、Flashにデータを書きたいときだけコールすれば、容量の大きいメインルーチンはFlashに置くことができ、通常のプログラムコードと同じ扱いが可能です。
過去の開発のヒントはこちら