カスタムCortex-M3ベースのデバイスで作業しています.JTAGなしでデバイスファームウェアをアップデートできるように、IAP(In-Application Programming)メカニズムを実装する必要があります(代わりにTFTPまたはHTTPを使用します)。 )。 STマイクロエレクトロニクスから入手可能なIAP関連のコード例は私にとってははっきりしていますが、再点滅がどのように機能するかはわかりません。ARM(Cortex M3)のアプリケーション内プログラミングはどのように機能しますか?
私が理解する限り、命令はフラッシュからICodeバス(およびプリフェッチブロック)を介してCPUによってフェッチされます。だから、私はかなり愚かな質問です:それはそれ自体が再フラッシュ(すなわち、それが実行されているフラッシュメモリを変更)中に実行中のプログラムが壊れてしまうのはなぜですか?
ああ...そうですね、私はコードを勉強している間にその部分を逃しました! –
はい、多くのデバイスでは、実際にフラッシュをプログラミングしている間にRAMから実際に実行する必要があるため、プログラミングコードの短いブロックをRAMにコピーして、実際のプログラミングを実行する必要があります。フラッシュの予約された部分のコード。 –
考慮する必要のある多くの障害シナリオがあります。そうしないと、システムが壊れてしまう可能性があります。IAPはf/w開発の礎石であり、特に損失の多いネットワーク上ではそれを行うのが難しい場合があります。 – Amit