2268337_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2268337_ja-JP

2268337_ja-JP

mk64 フラッシュ 0xE5FF8 からの読み取りによりバスフォールトが発生する

こんにちは、
FRDM_k64 に似た MK64FN01M を実行するボードがあります。

最後のバイトに CRC を保存して、フラッシュに設定を保存します。
ボード上の1つのセクターで、そのセクションを読み込むとバス障害が発生します

このコードは、0xE5FF8 から 8 バイトの長さの RAM への単純な memcpy を呼び出します。
このコード内のこの関数は、以前に異なるメモリ セクションで呼び出されます。
これらの場所でのみコードがクラッシュします。
このセクターを他の場所に移動すると、機能します。


その特定のメモリが問題になる可能性がある理由について何かアイデアはありますか?

ありがとう、アディブ

Re: mk64 read from flash 0xE5FF8 causes busfault

こんにちは@theadib

まずセクター全体を消去し、次に 8 バイト境界に合わせて設定データ (CRC を含む) を書き込んでください。同じ 8 バイトのフレーズに対して部分的な更新を実行しないでください。その後、読み取り操作を続行します。
 

BR

アリス

Re: mk64 read from flash 0xE5FF8 causes busfaultこんにちは、アリスさん。返信ありがとうございます。
バス障害は読み取り操作中に発生します(フラッシュ位置からのmemcpy)
通常のフラッシュ アドレスを使用するとバス障害が発生する原因は何でしょうか?
以前は書き込み操作はありませんでした。
フラッシュの読み取りを永続的に「ブロック/保護」することは可能ですか。
私のプログラムは他のデバイスでは正常に動作していました。
何かアイデアはありますか?
ありがとう、アディブ
Re: mk64 read from flash 0xE5FF8 causes busfault

こんにちは@theadib

FSECレジスターがあります。FSEC の SEC ビットは、MCU が安全な状態か安全でない状態かを決定します。これは MCU 全体を制御しますが、あなたの CASE は一部のメモリのみが読み取れないため、これが原因ではないと思います。
前回の書き込み時にエラーが発生した可能性がございますので、一度メモリを消去し、再度読み込みを行って正常に動作するか確認して頂く事をお勧め致します。
 
よろしくお願いします。
 
BR
アリス
 
Re: mk64 read from flash 0xE5FF8 causes busfault

こんにちは@Alice_Yang

おそらく、この問題は、私が SEGGER JLink を使用しているときに認識した奇妙な動作によるものだと思います。

JLink で MK64FN1M0XXX12 を使用して MK64FN1MOVLQ12 に接続すると、次のようになります。

デバイス MK64FN1MoXXX12

SWDの場合

スピード1000

connect

消去する
ロードビン イメージファイル.bin 0

通常、JLink は消去後にデバイスが保護されていると主張します。
そして、この添付のダイアログを提示します。

消去コマンドの後、デバイスは保護されておらず、セキュリティも保護されていないと予想されます。

JLink を使用してフラッシュを完全に消去し、新しいイメージをロードする場合の推奨されるシーケンスは何ですか?


前もって感謝します

Re: mk64 read from flash 0xE5FF8 causes busfault

こんにちは@Alice_Yang

ご迷惑をおかけして申し訳ございません。
根本的な原因は、同じアドレスに同じデータが二重に書き込まれていることにまで遡りました。
バグのないコードではこのようなことは起こらないはずだ
しかし、
2回目の書き込みはエラーコードを返します
しかし、そのセクターを読み取るだけでも BUS_FAULT トラップが発生します。

アクセスによってプログラム全体がクラッシュする前に、セクターの状態を確認する方法はありますか?
そうすることで、セクターを再度適切に消去し、セクターを正しい状態にすることができます。
???
リファレンスマニュアルのセクション29.4.10.2でFSFEの説明を確認しました。フラッシュコマンド。
しかし、プログラム メモリからセクターを「テスト」できるコマンドは見つかりません。
何か見逃しているでしょうか?

そうすれば、再起動後にフラッシュの状態を確認するための、より回復力のあるアプリケーションを作成できます。


前もって感謝します、

アディブ


Re: mk64 read from flash 0xE5FF8 causes busfault

こんにちは@theadib

J-Link を使用して消去する場合、同じチップに対して 2 つのオプションがあります。「セキュリティを許可する」のないデバイス名を選択してください。このようにすると、消去後にセキュリティが保護されなくなります。

Alice_Yang_0-1767951588914.pngAlice_Yang_0-1767951588914.png

ありがとう。


BR

アリス

Re: mk64 read from flash 0xE5FF8 causes busfault

こんにちは@theadib

Erase Flash Sector コマンドを起動すると、FRFE は選択したフラッシュを消去し、消去されたことを確認します。消去検証に失敗した場合、FSTAT[MGSTAT0]ビットが設定されます。CCIFフラグはフラッシュセクター消去操作後に設定されます。
完了します。フラッシュセクター消去コマンドは一時停止可能です(FCNFG[ERSSUSP]ビットと図29-11を参照)。

Alice_Yang_0-1767953891145.pngAlice_Yang_0-1767953891145.png


BR

アリス

标记 (1)
无评分
版本历史
最后更新:
‎01-10-2026 02:23 AM
更新人: