[NXP マイコン初心者ガイド 8]へ | |||
NXP マイコン初心者ガイド まとめサイト |
目次
- はじめに
- 1. i.MXRT1050 Evaluation Kit に付属の SDRAM について
- 2. SDRAM Debug を実行する際に考慮する事
- 3. SDRAM で Debug させた結果
- まとめ
はじめに
NXP Semiconductor が提供している i.MXRT の SDK に付属しているサンプルプロジェクトはほとんどが XIP 実行となっています。(*XIP = Execute in place:Flash にある命令コードを直接 Read して実行する方式)
i.MXRT シリーズは、Smart External Memory Controller (SEMC) が搭載されており、SDRAM、SRAM、NOR Flash、NAND Flash の外部 Memory Interface をサポートしていますので、外部 RAM でソフトウェアを実行する方式にも対応しています。
今回は、i.MXRT1050 Evaluation Kit に搭載されている SDRAM で Debug 実行する方法をご紹介します。
なお、当コンテンツは「Hello World」プロジェクトが生成できている事を前提に解説しています。
下記コンテンツを参考に新規プロジェクト生成するか、すでに開発済みのプロジェクトをご準備ください。
-
参考:[NXP マイコン初心者ガイド 1] MCUXpresso IDE でサンプルプロジェクトを作成する方法
-
ポイント:今回ご紹介する方法を利用することで、様々なサンプルプロジェクトにて SDRAM で Debug できます。
1. i.MXRT1050 Evaluation Kit に付属の SDRAM について
i.MXRT1050 Evaluation Kit には、Micron 社製の 256Mb SDRAM (16bit bus 接続/最大166 MHz) が搭載されています。
SDK の中には、メモリーテスト用のサンプルプロジェクト (semc) が用意されていますので、必要に応じてご参照ください。SDRAM を初期化する方法が記載されていますので、別の SDRAM で動作させる場合の参考とすることができます。
図1:SDRAM メモリーテスト用サンプルプロジェクト「semc」
2. SDRAM Debug を実行する際に考慮する事
SDRAM 上でデバッグを行う場合、下記3つを考慮する必要があります。次の章でそれぞれ解説します。
- ①:Project Properties でRAM 実行の設定
- ②:SDK サンプルソフトウェアにて、SDRAM (SEMC Core)の Clock 設定 を変更
- ③:SDRAM を初期化してからアプリケーションを Debug
なお、NXP から Debug に必要な情報が提供されていますので、こちらの情報を参考に実施した内容を元に解説しています。
2-1. ① Project Properties でRAM 実行の設定
XIP 実行となっている Project Properties の設定を、SDRAM 実行に変更します。
-
図2 の通り、Project Properties を表示させ、Settings > Managed Linker Script にて
Link application to RAMを ON にしてください。
図2:Link application to RAM の設定場所
- 図3 の通り、MCU settings > Memory Details にて、BOARD_SDRAMを一番上にしてください。
図3:Memory Details の 設定場所
ポイント:Managed Linker Script の設定にて MCUXpresso は Lincker Scruipt ファイル .ld ファイルを自動生成します。
-
ポイント:Link application to RAM を有効にすることで、Memory Details の一番上にある RAM 領域に Application 領域を配置するよう Lincker Script を自動生成してくれます。SDRAM 以外にも SRAM にも適用できます。
2-2. ② SDK サンプルソフトウェアにて、SDRAM (SEMC Core)の Clock 設定 を変更
サンプルソフトウェアに実装されている SDRAM (SEMC Core) の Clock 設定処理を無効化します
(付属の SDK サンプルソフトウェアでは、SDRAM のクロック設定を処理させない仕組みが用意されています)
該当のソフトウェアは <Project Folder>/board/clock_config.c (231行目、369行目)です。
コメントにはこのように記載されており、SKIP_SYSCLK_INIT の定義を Project Properties に追加すると Clock 初期化処理がスキップされます。
/* In SDK projects, SDRAM (configured by SEMC) will be initialized in either debug script or dcd.
* With this macro SKIP_SYSCLK_INIT, system pll (selected to be SEMC source clock in SDK projects) will be left unchanged.
* Note: If another clock source is selected for SEMC, user may want to avoid changing that clock as well.*/
- 図4 のように Settings >Preprocessor の Defined symbols に SKIP_SYSCLK_INIT が設定されているのを確認します。定義がない場合は追加してください。
図4:SKIP_SYSCLK_INIT 設定場所
-
ポイント:SDRAM で Debug を実行する場合、Debug Script にて、SDRAM を初期化してから Debug を開始するため(次の章で紹介)、SDK サンプルソフトウェアを使用する場合は Clock 設定を実行しないように「SKIP_SYSCLK_INIT」の設定が必要となっています。
2-3. ③ SDRAM を初期化してからアプリケーションを Debug
冒頭で紹介した下記 NXP サイトにある「
- Project Folder にある **.launch ファイルをダブルクリックして、Edit Configuration を開きます。
- Linkserver Debugger > Debu Connection > Reset script をダウンロードした「 」に変更します。(Connect Script はデフォルトのままにします)
図5:SDRAM 初期化用 Debug Script の設定場所
ポイント:**.launch ファイル が表示されない場合、i.MXRT Evaluation Kit と PC を USB に接続した状態で、Quickstart Panel にある Debug ボタンを一度押して、一度 Debug を開始させると自動生成されます。Debug の方法に関しては下記を参照ください。
-
参考:[NXP マイコン初心者ガイド 2] i.MXRT1050 を使って Hello World を Debug してみた
3. SDRAM で Debug させた結果
実際に Debug を実行すると、図6の通り、Main 関数が SDRAM 領域 0x8000 0000 内で実行していることを確認できます。
図6:Debug 実行後
まとめ
XIP 実行となっている SDK サンプルプロジェクトを SDRAM 実行に変更し、Debug を行う方法を紹介しました。
様々な SDK サンプルプロジェクトで使用できますので他のサンプルでも試してみてください。
[NXP マイコン初心者ガイド 8]へ | |||
NXP マイコン初心者ガイド まとめサイト |