| [NXP マイコン初心者ガイド 1]へ | |||
| NXP マイコン初心者ガイド まとめサイト |
もくじ
- はじめに
- 1. Hello World Project の解説
- 2. MCUXpresso IDE の Project Settings について
- 3. Hello World Project の Debug 実行方法
- まとめ
はじめに
この記事では Hello World Sample Projct の構成と Project Settings について、そして実際に Debug する方法を解説します。
SDK のインストール方法と Build 方法の確認がまだの方は以下のページを参考に Build を実行ください。
MCU Xpresso IDE User Guide も併せてご参照ください。
1. Hello World Project の解説
MCUXpresso IDE の Sample Project は【図1】に示すような構成になっています。各フォルダーに格納されているファイルを確認する際の参考にしてください。
【図1】Hello World Sample Projct の構成
source フォルダーに hello_world.c が格納されています。
Build を実行すると Build 結果を格納するフォルダーが作成されます。
Debug Build 設定(最適化が -O0 の設定)の場合、Debug フォルダーが生成され、Release Build 設定(最適化が -Os の設定)の場合、Release フォルダーが生成されます。設定の変更方法は次の章で解説します。
Project Settings には、Project Properties で設定した内容が表示され、編集ができるようになっています。こちらも次の章で解説します。
続いて、hello_world.c の中身について解説します。【図2】に示すような構成になっています。
【図2】hello_world.c の構成
#inclucde では、デバイス固有の設定値等を記載している "fsl_device_registers.h" や printf 結果を Debug Console に表示するために必要な "fsl_device_registers.h"、Pin, Clock, Board 設定等が記載されている "pin_mux.h"、"clock_config.h"、"board.h" などが定義されています。
main 関数内では変数の定義の後、Pin, Clock, Board 設定用の関数を記述してから、メインの記述を実装いただくことになります。
また、Pin, Clock, Board 設定用の関数の中身は MCUXpresso Config Tools を使用し GUI で設定等を変更可能で、設定いただいた内容に従って関数内のコードが自動生成されます。
print 文で Debug Console に文字を表示する場合 printf() ではなく PRINTF() を使用します。
改行コードは "\r\n" を使用します。
また、Debug Console として使用する Console は下記 2つ あり、変更方法は次の章で解説します。
- Semihost Console :MCUXpresso IDE 内に付属の Console ウィンドウに表示
- UART Console: PC の ターミナルソフトウェア(Tera Term など) に表示(Debug 用 USB ケーブルを接続)
2. MCUXpresso IDE の Project Settings について
Project の細かい設定は Project Properties ですべて行います。その中でよく使われる設定項目が【図3】のように Project Settings 画面に用意されています。
詳しくは、User Guide をご確認ください。
-
参考:MCUXpresso IDE User Guide > Configuring a Project
【図3】Project Settings の項目
Edit Libraries では、Build で使用する C/C++ Library を変更できます。
Debug Console として使用する Console の切り替え設定はそれぞれ下記になります。
- Semihost Console :Semihost の Library を選択することで使用可能
- UART Console :Nohost の Library を選択することで使用可能
Library それぞれの解説を【表1】と【表2】にまとめています。
| Library 名 | 概要 |
| Redlib | MCUXpresso IDE 独自の Library 。C90 に準拠した C Library になっており、C99 も一部使用可能となっている。C 言語ではデフォルトで使用。 |
| Newlib | C99 と C/C++ を完全にサポートした GNU Library。コードサイズが大きくなる。 |
| NewlibNano |
GNU Tools for ARM Embedded Processors" に準拠して作られたコードサイズ縮小に焦点を当てられた GNU Library。コードサイズを削減したい場合に、おすすめ。 |
| Library の種類 | 概要 |
| None | 全ての I/O 関数と Memory 管理関数を除外した Library。 |
| Nohost and Nohost-nf | IO 関数の一部と 文字列や Memory 管理関数を含んだ Library。UART Console に文字を出力する際に使用します。デバッグホストシステムが無いことが前提なのでファイル I/O 関数は何もしません。ただ、UART Core にリダイレクトするなど、ユーザにてカスタマイズ可能です。 |
| Semihost(-mb) | ファイル I/O 関数を含むすべての関数が実装されている Library。Semihost Console で使用します。 |
| Semihost(-mb)-nf (no files) | ファイル I/O 関数を含んでおらず、stdin, stdout, stderr などの組み込みストリームのみ実装されている Library。Semihost Console で使用します。 |
詳しくは User Guide をご覧ください。
-
参考:MCUXpresso IDE User Guide > C/C++ Library Support
Change Package では使用する MCU の型番を変更することができます。しかしながら、User Guide には「こちらで変更はせず、新規で Project を作成してください」と記載されていますので、ここでの変更はお勧めいたしません。
Therefore rather than changing a project’s associated MCU, it is strongly recommended
that instead a new project is generated for the desired MCU and this new project is edited
as required.
Edit memory を押すと、【図4】のように Memory 領域の設定を変更することができ、Linker Script (***.ld ファイル)の記述を GUI で変更することができます。
詳しくは User Guide をご覧ください。
-
参考:MCUXpresso IDE User Guide > Memory Configuration and Linker Scripts
【図4】Edit Memory を押した後の画面
Edit options を押すと【図5】のように Project Properties が表示されます。
赤枠の設定を変更することで、Build 設定を変更することができます。
- Debug:最適化オプションが -O0 (None) の設定。Debug 時に使用
- Release:最適化オプション -Os (Size) の設定。コードサイズを削減可能
【図5】Project Properties
3. Hello World Project の Debug 実行方法
デフォルトの設定で Debug を実行する方法は 【図6】のように Quickstart Panel 内の Debug を押すだけになります。(その後表示される画面は OK ボタンを押してください)
詳しくは User Guide をご覧ください。
-
参考:MCUXpresso IDE User Guide > Debug Solutions Overview
-
参考:MCUXpresso IDE User Guide > Debugging a Project
【図6】デフォルト設定での Debug 手順
Debugger のログを確認すると、【図7】の赤枠の通り、Hyper Flash に実行ファイルを書き込んでいることを把握できます。
【図7】Debugger 実行ログ
また、i.MXRT1050 のデフォルト設定では、Hyper Flash 上で XIP 実行する構成の為【図8】のように main 関数先頭で Break すると Debug 画面でも Hyper Flash のメモリー領域で Break していることがわかります。
(【図4】の Memory Configuration にて Hyper Flash のメモリー領域は 0x60000000~ となっています)
【図8】Debug 画面
まとめ
電源を入れなおすと、再度起動することを確認できるので Hyper Flash に実行ファイルが書き込まれており、XIP で起動していることを把握できます。
デフォルトの Debug 設定では、毎回 Debug を実行するたびに Hyper Flash の中身を書き換えてしまうため、RAM 実行の方法などが気になるかと思います。次の記事にて、RAM 上にプログラムを配置して実行する方法について解説します。
| [NXP マイコン初心者ガイド 1]へ | |||
| NXP マイコン初心者ガイド まとめサイト |