こんにちは、
カスタム ボード上の QuadSPI NOR Flash IS25WP256 で i.MXRT1176 ブートを作成しようとしています。MIMXRT1170EVK 評価ボードと同じ方法でメモリを接続しました (ピン GPIO_SD_B2_05 ~ 11)。ブート ピンも評価ボードと同じ状態に設定します。
M7 コア上で実行されるシンプルな「Hello world」アプリケーションを作成しました。このアプリケーションは評価ボードでは正常に起動しますが、カスタム ボードでは起動しません。2 つのボードの唯一の違いはメモリで、カスタム ボードでは 32 MB、評価ボードでは 16 MB です。
そこで、私は FCFB (フラッシュ メモリの 0x400 にプログラム) を次のように変更しました。
フラッシュ サイズを 32MB に変更し、LUT 内の読み取りコマンドを、評価ボード上のフラッシュ メモリに十分な 24 ビット アドレスではなく 32 ビット アドレスの読み取りコマンドを使用するように変更しました。
これらの変更にもかかわらず、i.MXRT はカスタム ボード上で起動しません。
そこで、バスの信号を調べてみました。
ブート ROM はフラッシュ メモリから FCFB (512 バイト) を正しく読み取り、いくつかの構成 (書き込みの有効化、読み取りパラメータの設定、ステータス レジスタの読み取り) を実行します。これは、RM に記載されているように、30MHz のクロックで実行されます。
この後、ブート ROM は 133MHz のクロックで、それぞれ 64 バイトの読み取りアクセスを 4 回実行します (これにより、ブート ROM が FCFB を読み取り、設定を適用したことが確認されます)。ただし、アドレス 0x0000、0x0040、0x0080、0x00C0 のメモリを読み取ります。これらはブート ROM が行う最後のアクセスであり、M7 コアは起動しません。JLink プローブを M7 コアに接続したところ、ブート ROM が 0x223104 で無限ループに陥っていることがわかりました。
ブート ROM が 0x1000 にある IVT テーブルを読み取り、アプリケーション コードをロードして実行を開始できると予想しました。
クロック周波数を 133MHz ではなく 30MHz に変更してみました。ブート ROM は最後の 4 回の読み取りアクセスを 30 MHz で実行しますが、アプリケーションはまだ起動しません。
何が間違っているのでしょうか?
行き詰まっています。助けていただけると嬉しいです
デビッド
こんにちは@davidjaouen 、
このページのリセットセクションで参照されているアドレス 0x223104 で実行が停止しているため、この問題はデバッガーに関連している可能性があります。デバッグ セッションを終了し、プロジェクトをクリーンアップして再構築してください。その後、デバッグ モードに入らずにアプリケーションを実行して、結果をお知らせください。
BR
ハビブ
こんにちは、ハビブさん。
ご回答ありがとうございます。
残念ながら、デバッガー プローブをボードから取り外し、ハードウェア リセットを実行しましたが、i.MXRT はまだフラッシュ メモリから起動しません。
他に何かアイデアはありますか?
よろしくお願いいたします。
デビッド
こんにちは、ハビブさん。
ついに、カスタム ボードを QSPI フラッシュで起動できるようになりました。問題はBOOT_CFG1[1]ピンがローレベルではなくハイレベルになっていたことです。つまり、ブート ROM は暗号化されたイメージを起動しようとしましたが、イメージは暗号化されていません。
ご助言ありがとうございます。
デビッド
こんにちは、 @Habib_MS さん。
リセット/デバッグ起動後、ターゲットが0x002231FCのままになるという同じ問題に直面しています。ただし、ボードの電源を入れ直すと、アプリケーションはQSPIフラッシュから正常に起動して実行されます。
私は以下を使用しています:
私の観察によると、この問題はデバッガーのリセット/デバッグ起動時にのみ発生し、スタンドアロン起動時には発生しません。
この問題を解決するための適切なリセット/デバッグ設定、または回避策をご提案いただけますでしょうか?
ご回答をお待ちしております。
よろしくお願いいたします。
ナゲンドラ・クマールS