2389010_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2389010_ja-JP

2389010_ja-JP

startup_cm7.sのRaminitを編集した後、S32K312のスタンバイウェイクアップが機能しなくなりました。スラムの一部を保持する

説明:

リンカースクリプトでは、SRAMの0x20417F80(RAMの最上位、NOLOAD、初期化テーブル/ゼロテーブルから除外)に128バイトのメールボックスがあります。アプリケーションが起動にジャンプする際にフラグをブートローダーに渡すために使っています — このデータはプログラムフラグのために保存しなければなりません

起動時の ECC-init ループがそのメールボックスをクリアしないようにするため、startup_cm7.s の RamInit セクションを編集しました。つまり、ゼロループは郵便受けの前で止まるのではなく、__INT_SRAM_END:

RamInit:
ldr r0, =__RAM_INIT
cmp r0、0
beq SRAM_LOOP_END
ldr r0、=MCRGM_DES
ldr r1, [r0]
ldr r2、=MCRGM_DES_F_POR
r1、r1、r2
cmp r1、0
beq NO_INIT_STANDBY_REGION
ldr r1, =__INT_SRAM_START
ldr r2, =__PBL_SBL_MAILBOX_ADDR ; <-- 編集済み (元は __INT_SRAM_END)
b ZERO_64B_RAM
NO_INIT_STANDBY_REGION:
ldr r1, =__BSS_SRAM_START
ldr r2, =__PBL_SBL_MAILBOX_ADDR ; <-- 編集済み (元は __INT_SRAM_END)
ZERO_64B_RAM:

この編集により、アプリケーションがブートローダーにジャンプしても メールボックスは正しく保持 されます。プログラミング/フラッシュ用

しかし、この編集後、スタンバイ状態からの復帰機能が動作しなくなります。私のアプリケーションはIGNの最低モードでスタンバイに入り、起動しなくなり、コアが止まって再開できません。rasr[] 0x2040012e

RamInitをデフォルト設定(ループが__INT_SRAM_ENDで終了する)に戻すと、スタンバイウェイクアップは再び正常に動作するようになりますが、メールボックスは保持されなくなります。

つまり、この2つは直接的に関連しています。メールボックスを保持する起動時の編集がスタンバイのウェイクアップを壊す原因です。

私の質問:

  1. RamInit領域を編集する(SRAMゼロループの停止位置を変更する)と、スタンバイからの復帰が壊れるのはなぜですか?スタンバイ/ウェイクアップ再開パスのどの部分が、起動時のRAM初期化動作に依存するのか?
  2. スタンバイウェイクアップを壊さずに、アプリケーションからブートローダーへのジャンプを通じてメールボックスのリージョンを保持するために、起動を正しく変更する方法は何ですか?
  3. 別の RTD バージョンに切り替えると (例:RTD 2.0.0 または RTD 4.0.0)この起動/ウェイクアップ動作を変更して解決すれば良いのでしょうか、それともこれはRTDのバージョンとは関係ないのでしょうか?

添付ファイル: startup_cm7.s(txt)(編集済み RamInit)、PBL リンカー スクリプト (txt) (メールボックスを 0x20417F80 に表示)、system.c。

 S32DS-ARM     S32K312EVB-Q172    

デバッグ | フラッシュプログラミングSDKRe: S32K312 standby wakeup stops working after editing RamInit in startup_cm7.s to retain part of s

こんにちは、@Arif9845 さん

サポートチケットも入力されているのが見えますが、誤解を避けるために、そちらで質問にお答えします。

よろしくお願いします、
ジュリアン

タグ(1)
評価なし
バージョン履歴
最終更新日:
木曜日
更新者: