こんにちは、
私はMCUXpressoとそのSDKを使用してRT1170用のアプリケーションを開発しています。
提供されているサンプル プロジェクトはすべて、「DTC」 RAM を使用するように構築されているようです。他の多くのユーザーと同様に、私のアプリケーションは大きすぎてそこに収まらないため、「外部 SDRAM」を使用しようとしています。
他のフォーラム投稿で提案されている解決策をいくつか試してみました(特にhttps://community.nxp.com/t5/i-MX-RT/MCUXpresso-and-RT1050-download-and-debug-in-SDRAM/mp/896979)これでプログラムを実行できるようになり、アプリケーションがフラッシュされていればプログラムをデバッグできます。
ただし、 「アプリケーションを RAM にリンク」でビルドして実行すると、ブレークポイントに到達すると、通常、アプリケーションはそこで停止します。
これは SDRAM を正しく初期化しなかったことが原因であると推測します。前述の投稿では、デバッガーが SDRAM コントローラを初期化するための接続スクリプトとして「RT1050_SDRAM_Init.scp」を使用しています。このファイルを使用すると、当然ながら失敗します。
このスクリプトを RT1170 で動作するように適応させるアイデアが全くありません。これを実行した人はいますか、またはこれを生成する方法についてアドバイスをくれますか?
ご協力いただければ幸いです。
こんにちは@jingpan
提供されている手順に従い、RT1170_BriefOverview_v210.pdf に記載されている変更を加えて hello world をフラッシュすると、デバッグ モードで SDRAM を使用できるようになります。
しかし、この変更後、SDRAM もコードの保存に使用されるようになりました。
私のアプリケーションでは、コードをフラッシュ メモリに保存し、BOARD_SDRAM をヒープ セクションとスタック セクションにのみ使用したいと考えています。
アプリケーションをフラッシュ メモリにフラッシュし、そのアプリケーションはヒープ セクションとスタック セクションに BOARD_SDRAM を使用します。
SOのために必要な変更についてご指導ください。
ありがとう@jingpan 、
.scpを追加するだけで済みましたファイルとそれは機能しました。
ステップ 5、6、8 はすでに実行しましたが、他のステップも試してみます。
参考になればと思い、board.cに以下の変更を加えました。これは、< https://community.nxp.com/t5/i-MX-RT/MCUXpresso-and-RT1050-download-and-debug-in-SDRAM/mp/896979>で説明されているものと同等だと思います - RT1170_SDRAM_NOT_CACHED が定義されています:
#ifdef USE_SDRAM
#ifndef RT1170_SDRAM_NOT_CACHED
/* 領域 9 の設定: 通常タイプのメモリ、共有不可、外側/内側の書き戻し */
MPU->RBAR = ARM_MPU_RBAR(9, 0x80000000U);
MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64MB);
#それ以外
MPU->RBAR = ARM_MPU_RBAR(9, 0x80000000U);
MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 1, 0, 0, 0, 0, ARM_MPU_REGION_SIZE_64MB);
#endif /* RT1170_SDRAM_NOT_CACHED */
#endif
こんにちは@robert_s 、
このスクリプトは RT1050/60 には適合しますが、RT1170/60 には適合しません。添付のスクリプトを使用CAN。スクリプト ファイルの他に、実行する必要がある手順が他にもあります。
C/C++ ビルド > プロパティの MCU 設定のメモリ詳細で、BOARD_SDRAM を SRAM_DTC_m7 の上に移動します。
よろしくお願いいたします。
ジン