説明:
リンカースクリプトでは、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つは直接的に関連しています。メールボックスを保持する起動時の編集がスタンバイのウェイクアップを壊す原因です。
私の質問:
添付ファイル: startup_cm7.s(txt)(編集済み RamInit)、PBL リンカー スクリプト (txt) (メールボックスを 0x20417F80 に表示)、system.c。
S32DS-ARM S32K312EVB-Q172
こんにちは、@Arif9845 さん。
サポートチケットも入力されているのが見えますが、誤解を避けるために、そちらで質問にお答えします。
よろしくお願いします、
ジュリアン