ARM Cortex MのCPUはフラッシュのセルフプログラミング中に停止しますか?


8

ほとんどのARM Cortex M MCUは、EEPROMメモリを備えていません。代わりに、プログラムも保持する同じフラッシュメモリに永続データを書き込むことができます。

  • この消去/書き込みプロセス中のCPUの状態は何ですか?
  • 止まりますか?正常に動作していますか?
  • CPUの動作は、使用する特定のMCUファミリ(STM32、Kinetis Lなど)に依存しますか?

(一部の人にとってこれは愚かな質問のように見えるかもしれませんが、マイクロチップのPIC16はフラッシュの自己プログラミング中に最大40msの間CPUを停止します。)


PIC16の停止についてのリファレンスはありますか?
Daniel Grillo 2013年

@Wouterどれ?完全にRAMで実行される割り込みでそれをテストしましたか?
starblue 2013年

2
UserManualsから読み取る前にコメントしたのとは対照的に、NXPチップは、アプリケーションプログラミング中にフラッシュインターフェイスのみを無効にするようです。そのため、フラッシュの消去または書き込み時に、RAMから完全に実行される割り込みが発生する可能性があります。しかし、この大部分は手つかずの領域です。たとえば、割り込みにかなりの時間がかかると、フラッシュの耐久性に影響を与えるタイミングの問題を想像できます。
Wouter van Ooijen 2013年

はい、彼らはeepromを持っていませんが、この状況では、ST32のような一部のCortex-Mにはバックアップレジスタがあり、そこにPIC16に関する情報を保存できます。興味深いことだと思います。PIC16に関する情報源を明記してください。(データシート?)
Roh

@Wouterはい、タイミングが問題になる可能性があります。LPC8xxを除いて、「RAMをフラッシュにコピー」IAPコマンドはクロック周波数をパラメーターとして取るので、単純な遅延ループを使用しているのではないかと思います。
starblue 2013年

回答:


4

コアの動作は実装によって異なります。FlashはARMコアに不可欠ではないため、すべてのベンダーが異なる方法で実装しています。通常、消去/書き込みプロセス中にRAMから実行されるため、実行には影響しません。

STM32では、消去/書き込みサイクルが進行中にフラッシュストールからの読み取りを行うと思います。これにより、操作が完了するまでコアの実行が停止します。一部のフラッシュ構成では、フラッシュの実行/読み取りを続行でき、消去/プログラミングしているフラッシュの部分にアクセスした場合にのみ、ストールします。

他のCortex Mを使用しましたが、フラッシュの内容を変更しながらRAMから実行する必要があります。そうしないと、バスフォールトが発生します(バスフォールト/ハードフォールトハンドラーがフラッシュ内にある場合、システムがクラッシュする可能性があります)。大量のフラッシュを備えた一部のマイクロは、2つの独立したフラッシュアレイとしてそれを実装し、これらは通常、他のバンクで動作しながら1つのバンクへのフルアクセスを可能にします。

フラッシュの内容を変更する際の実行の制限を確認するには、特定の部分のドキュメントを参照する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.