2394409_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2394409_ja-JP

2394409_ja-JP

フラッシュ消去時にRAM内でピット割り込みが実行されます

フラッシュを消している間にタイマー割り込みに入れないことがわかりました。私の要件を満たすために、タイマー割り込みをRAM上で実行する予定です。linker_flash_s32k388.ld ファイルを修正して IntCtrl_Ip.o と Pit_Ip.o を RAM に配置するようにしましたが、フラッシュを消去すると、タイマー割り込みの発生により依然としてエラーが発生します。私が見落としている点があれば教えてください。#s32k388

Re: Pit interrupt runs in ram wen flash erase

こんにちは、

IntCtrl_Ip.oとPit_Ip.oを配置するだけでRAMに書き込むだけでは通常は不十分です。PFLASH消去操作中は、CPUは影響を受けたフラッシュアレイへのアクセスを避けなければなりません。

割り込みベクタテーブル、PIT ISR、ISRによって呼び出されるすべての関数、およびISRで使用されるすべてのデータ/定数がSRAMに配置されていることを確認してください。さらに、VTORレジスタがRAMベースのベクタテーブルを指していることを確認してください。リンカーマップファイルは通常、残りのフラッシュアクセスを特定する最良の方法です。

S32K3リファレンスマニュアルには、フラッシュ操作が継続実行を必要とする場合はコード実行をSRAMに移す必要があると記載されています。

よろしくお願いいたします。

ピーター

Re: Pit interrupt runs in ram wen flash erase

私のISRとISRが呼び出す関数はRAMに配置されており、VTORのアドレスも0x2...0x4ではなく...RTDの設定時にフラッシュドライバーがRAMで動作するのを選びました。PITが閉じている間は正常に動作しますが、PITを有効にするとフリーズします。ただ、デバッグしても問題の原因を特定できません

Re: Pit interrupt runs in ram wen flash erase

こんにちは、

説明文だけでは判断しにくい。

見落とされがちなこと:

  1. 割り込みベクタテーブルはまだフラッシュメモリに保存されています

    • CPUはまずベクタテーブルからISRアドレスを取得する。
    • ベクターテーブルがP-Flashに残る場合、割り込みは消去中にFlashにアクセスし続けます。
    • ベクトルテーブルはRAMにコピーされ、それに応じてVTORが更新される必要がある。
  2. PIT ISR関数自体はRAMに存在しなければならない。

    • PITドライバ(Pit_Ip.o)だけでなく、アプリケーションのコールバックやISRも含まれます。
  3. ISRから呼び出されるものはすべてRAMに存在しなければならない。

    • アプリケーション機能
    • OSサービス
    • スケジューラフック
    • ログ記録/デバッグ機能
    • ISRによって呼び出されるヘルパー関数
  4. Flashに常駐する定数はありません

    • たとえコードがRAMから実行されていても、以下へのアクセスがあります:
      • const
      • 補正データ
      • 文字列リテラル
      • 構成構造は依然としてフラッシュ読み取りを生じさせることがあります。
  5. スタックトレース/デバッグインフラストラクチャによるフラッシュアクセスはありません

    • デバッグビルドでは、予期しないFlash参照が混入することがよくあります。

よろしくお願いいたします。

ピーター

Tags (1)
No ratings
Version history
Last update:
‎07-17-2026 03:28 AM
Updated by: