7

STM32F103 では、フラッシュ ページの消去に 20 ミリ秒かかり、その間にコアがストールします。ST PM00042 フラッシュ プログラミング マニュアルからは、フラッシュ ページを消去するときにコアが常にストールするのか、それとも命令ストリーム自体がフラッシュ メモリ (私のプロジェクト) にあり、FPEC (フラッシュ メモリ インターフェイス) がビジーで、これ以上命令をフェッチできません。

この質問のもう 1 つの言い方は、「フラッシュ プログラミング コードを RAM から実行すると、フラッシュ ページ消去のストールを回避できますか?」です。

ありがとう、

4

1 に答える 1

7

フラッシュのプログラミング中に、フラッシュへのアクセスを試みると、CPU が停止すると思います。

したがって、プログラム操作中に重要なコード (おそらく割り込みハンドラー、ウォッチドッグ キッカーなど) が RAM を使い果たすことができるようにする必要があります。最後に STM32 を使用したとき (おそらく 2 年ほど前) は、まさにその通りでした。

明確にするために、投稿の最後にある質問に答えます。

この質問のもう 1 つの言い方は、「フラッシュ プログラミング コードを RAM から実行すると、フラッシュ ページ消去の停止を回避できますか?」です。

答えは「いいえ」だと思います。フラッシュ プログラミング ドライバーがどこにあるかはそれほど重要ではありません。重要なのは、消去/プログラム操作の進行中にコードが何をするかです。CPU が操作中にフラッシュにアクセスしようとすると、プログラムの命令を読み取ったり、定数のテーブルを読み取ったりする場合でも、停止すると思います。

これがNXPフラッシュがARM uCでどのように機能するかを知っていますが、STM32についても章と節を引用したいと思いました. 何らかの理由で、フラッシュ プログラミング マニュアルは現在入手できないようですが、同様の文書で次の言語を見つけました (PM0068 だと思います)。

CPU がフラッシュ メモリにアクセスしない限り、進行中のフラッシュ メモリ操作によって CPU がブロックされることはありません。

プログラミング中に [フラッシュへの] 読み取り/書き込み操作が開始された場合 (BSY ビットがセットされている)、進行中のメイン フラッシュ メモリのプログラミングが終了するまで、CPU は停止します。

于 2010-08-10T03:59:12.237 に答える