2138344_ja-JP

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

2138344_ja-JP

2138344_ja-JP

FlexSPI NORフラッシュブートの問題

こんにちは、

カスタム ボードには IMXRT1176 があり、MX25L6433F NOR フラッシュが FlexSPI1 ポート A、セカンダリ ピン グループ経由でコネクテッドされています。FLEXSPI_PIN_GROUP_SEL ヒューズが切れて、セカンダリ ピン グループが有効になります。

私たちのアプリケーションは、OCRAM から実行するためのリンカー スクリプトを使用して SRAM (OCRAM) から実行すると実行されます。

別のリンカー スクリプトとリンクして ResetISR を 'XIP' フラッシュ セクションに配置すると、ResetISR が実行されないように見えます。

イメージにコンパイルされた FCB と IVT が、アドレス 0x30000400 と 0x30001000 に配置されています。

graffiti_0-1753180736009.png

graffiti_2-1753181614878.png



エントリ ポイントは 0x300020ad で、これは ResetISR です。

% arm-none-eabi-readelf -Wl MIMXRT1176_Project.elf 

Elf file type is EXEC (Executable file)
Entry point 0x300020ad
There are 15 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  EXIDX          0x005000 0x20240000 0x30002560 0x00098 0x00098 R   0x4
  LOAD           0x001000 0x30000000 0x30000000 0x02148 0x02148 R E 0x1000
  LOAD           0x004000 0x00000000 0x30002148 0x00418 0x00418 R E 0x1000
  LOAD           0x005000 0x20240000 0x30002560 0x00098 0x00098 R   0x1000
  LOAD           0x0050a0 0x202400a0 0x300025f8 0x9e658 0x9e658 R E 0x1000
  LOAD           0x0a3800 0x202de800 0x300a0c50 0x1de20 0x1de20 RW  0x1000
  LOAD           0x0c2000 0x20340000 0x300bea70 0x00080 0x00080 RW  0x1000
  LOAD           0x0c2620 0x202fc620 0x300beaf0 0x054f8 0x054f8 RW  0x1000
  LOAD           0x000000 0x20000000 0x300c3fe8 0x00000 0x64000 RW  0x1000
  LOAD           0x000000 0x20064000 0x300c3fe8 0x00000 0x02000 RW  0x1000
  LOAD           0x000b20 0x20301b20 0x300c3fe8 0x00000 0x1ec60 RW  0x1000
  LOAD           0x000780 0x20320780 0x300c3fe8 0x00000 0x007ec RW  0x1000
  LOAD           0x000f6c 0x20320f6c 0x300c3fe8 0x00000 0x00010 RW  0x1000
  LOAD           0x000080 0x20340080 0x300c3fe8 0x00000 0x0a580 RW  0x1000
  LOAD           0x000000 0x20360000 0x300c3fe8 0x00000 0x18000 RW  0x1000

 Section to Segment mapping:
  Segment Sections...
   00     .ARM.exidx 
   01     .boot_hdr .xip 
   02     .startup 
   03     .ARM.exidx 
   04     .text 
   05     .data_RAM3 
   06     .data_RAM5 
   07     .data .got .got.plt 
   08     .noinit 
   09     .heap2stackfill 
   10     .bss 
   11     NonCacheable 
   12     .heap 
   13     .noinit_RAM5 
   14     .noinit_RAM7

graffiti_3-1753181676255.png

不思議なことに、マップ ファイルでは ResetISR が 0x300020ac に表示されていますが、エントリ ポイントと FCB は 0x300020ad に設定されています... この違いはサム ビットによって生じているのでしょうか。

イメージは JFlash を使用してフラッシュに書き込まれ、検証されます。

ボードをリセットしても何も起こりません。UART には何もないので、コードは実行されていません。NXP セキュア プロビジョニング ツールを使用して接続CAN。これは、フラッシュ ブートが失敗し、ブートローダ ROM がまだ実行中であることを示しています。

デバッガーをアタッチしようとすると(またはデバッガー内からイメージを実行しようとすると)、次のメッセージが表示されます。

graffiti_4-1753181964304.png

PC は 0x2230C8 に設定されています。そのメモリ アドレスは認識できません。ITCM より上で DTCM より下にあるようです。それはROMアドレスですか?あるいはブートローダーが無効な場所にジャンプしたのでしょうか?

これをデバッグする方法を何かご存知ですか?

ありがとうございます

キーラン。




   

Re: FlexSPI NOR flash boot issue

はい、 0x300020ac0x300020adの違いはThumbビットによるものです。ARM Cortex-Mは、Thumbモードを示すためにアドレスの最下位ビットを使用します。IVTのエントリポイントは、実際のResetISRアドレスと一致する必要があります。さらに、FCBがセカンダリピングループと一致していることを確認してください。

 

BR、
オマール

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎11-20-2025 04:41 PM
更新者: