最適な出力のために、Google Chrome(15以降)または Microsoft Edge(79以降)を推奨いたします。
2025-08-08 現在 TWELITE GOLD関連の情報 TWELITE GOLDを利用する場合の特有の話題
TWELITE GOLDを利用する場合の特有の話題を記載します。以下の情報は参照しなくても、TWELITE STAGE アプリを用い Act をビルドするといった開発は可能です。
(この頁の記述は2023年7月時点の NXP 社のサイトに基づいており、現在のサイトとは手順などが違う場合があります)
TWELITE GOLDビルドについて 本ドキュメントでは、TWELITE GOLDのアプリケーションをビルドするための、開発環境について解説します。
TWELITE シリーズの開発環境は2種類あります。本ドキュメントでは主に MCUXpresso による開発方法を解説します。
TWELITE STAGE NXP 社の MCU ExpressoNXP 社の公式開発環境です。 デバッガ (MUCLink) を用いたファームウェアの書き込みやデバッグ(スリープは対応しない)に対応します。 注意 当ドキュメントのリンクについては 2023年 7月現在のものです。 本資料を参照いただくにあたり、一般的な開発環境の構築や操作に慣れている方を前提とします(例:コマンドプロンプトでの操作を行えること、システムPATHの設定を行えること、Eclipse 統合開発環境について通常の操作が行えることなど)。 NXP社から得られる資料は英語です。当社では英語資料の翻訳等は実施しません。必要に応じて翻訳ツールなどを利用下さい。 ARM Cortex-M4 を利用するに当たり ARM 社の資料なども参考にして下さい。 原則として当社提供のサンプルプログラムで使用する範囲(当社ライブラリ対応範囲での無線パケットの送受信、当社ライブラリ対応範囲でのペリフェラルの利用)での対応とします。サンプルなどで紹介しないような機能(ファームウェアの暗号化、ZigBee PRO スタックの利用、Thread スタックの利用、MCUXpresso 添付のライブラリ全般などについては、NXP社の公式情報を参照下さい)。 手順 技術資料 1 - MCUXpresso SDK のダウンロード MCUXpresso SDK のダウンロード
MCUXpresso SDK のダウンロードについて解説します。
MCUXpresso SDK のダウンロード NXP社のウェブサイトのデザインは本記載時点(2022/01)を用いて解説します。またサイトの言語は英語です。
アカウントの登録 https://www.nxp.com にアクセスし、ウェブページ上のナビゲーションにある SIGN IN を選択する。アカウント登録がまだの場合は Register を選択し、必要事項を入力します。
MCUExpresso IDE のダウンロード ログインした状態で、以下のリンクをから MCUExpresso IDE をダウンロードします。
https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/mcuxpresso-integrated-development-environment-ide:MCUXpresso-IDE
SDK Builder ページ ログインした状態で、以下のリンクに移動します。このリンクから SDK ファイル一式をダウンロードします。 https://mcuxpresso.nxp.com/
Select Development Board [Select Development Board] を選択します。
mcuexpresso_nxp_com
対応SDK検索 JN5189DK6 をキーワードとして、対応SDKを検索します。
検索後の例
Build MCUExpresso SDK JN5189DK6 (JN5189) を選択し、右側にある [Build MCUExpresso SDK] のバージョンを [v2.6.X] に設定します。[Build MCUExpresso SDK] をクリックします。
SDKバージョンの指定
追加コンポーネントの選択 ダウンロードに含めるコンポーネントを選択します。
ダウンロード画面1
リスト中のコンポーネントについてはほとんど使用しませんが、すべて選択しておきます。 Host OS はお使いの OS (Windows/Mac/Linux) を指定します。 Toolchanin / IDE は MCUExpresso IDE を指定します。 すべての設定を行った後に [DOWNLOAD SDK] をクリックします。クリック後にEULA(ソフトウェア使用許諾契約)などの確認がありますので、画面に従ってください。 ダウンロード Downloads 画面が出ます。すべてダウンロードしておきます。
ダウンロード画面2
SDK Archive, SDK Documentation, Config Tools data をダウンロードしておきます。(EULA の確認があるものもあります) SDK API Reference Manual のリンク先は確認の上、ブックマークなどに保存しておきます。 2 - MCUXpresso 環境セットアップ ここでは MCUXpresso IDE を用いた環境構築を解説します。
ここでは MCUXpresso IDE を用いた環境構築を解説します。
MCUXpresso による開発は必須ではありません。通常は TWELITE STAGE アプリや Makefile によるビルドが可能ですが、以下に留意してください。
デバッガなどを利用する場合は、MCUXpresso によるビルドと実行が必要です。 NXP のテンプレートソースコードやライブラリソースコードとの互換性はありません。 MCUXpresso が提供する諸機能(メモリレイアウトの設定、ピン定義など)も動作しないものがあります。 TWELITE STAGE アプリの提供する Makefile とはビルド定義が異なる場合があります。 MCUXpresso 環境セットアップ 新規にIDEのインストールを行う前提で解説します。 すでに NXP 社の同IDEを利用している場合の検証や設定方法の案内などは実施できませんが、ツールの性格上、SDKパッケージの追加を行うことで対応できると考えられます。 同ツールの操作方法など詳細は当社サポートではご案内できません。MCUXpresso のUserGuide、元になる統合開発環境 Eclipse の解説などをご参照ください。 ツール並びにSDKのダウンロード こちら を御覧ください。
MCUXpresso IDE - インストール
ここで紹介する画面は、お客様の環境や設定によって違った表示になる場合もあります。
ダウンロードした MCUXpressoIDE_xx.y.z_nnnn.exe (Windowsの場合、xx,y,z,nnnnはバージョン識別子) を実行し、画面の指示に従います。
インストール完了後、MCUXpresso IDE を起動します。 作始動画面
Welcome 画面が表示されます。この画面内にはSDKのインストーラなどもメニューにありますが、IDEを選択してください。
この画面を再度表示したい場合はメニューから[Help]>[Welcome]を選択します。
次の手順では、ダウンロード済みの SDK パッケージ(上記手順を踏んでxmlファイルを書き換えたもの)をインストールする方法を紹介します。
MCUXpresso IDE - SDKパッケージのインストール SDKパッケージをインストールしないと、MCUXpressoからのTWELITE GOLDのファームウェアの書き込みなど、ほとんどの操作ができなくなります。
直前の手順で Welcome 画面から IDE を選択すると、IDEの通常画面の状態に変わります。SDKパッケージのインストールは、この画面上で操作します。
Installed SDK タブを開き (画面上に見つからない場合はメニューより[Window]>[Show View]>[Installed SDK]を選択)、ダウンロード済みの SDK ファイル(ZIP形式)を、ドラッグ&ドロップします(Windowsの場合)。確認ダイアログが表示されますので [OK] ボタンを押します。 SDKの ZIP ファイルをドラッグ・アンド・ドロップします。
SDKを用いた新規プロジェクト作成やサンプルなどを動作させる場合は展開したフォルダを選択して下さい。
SDKインストール
始動画面
通常は SDK_2.x_JN5189DK6
という名前でリストに登録されます(上記の例では SDK_2.6.3_JN5189DK6
になっています)。
※ SDKファイルは、MCUXpresso 管理下のディレクトリにコピーされます。登録時に展開したディレクトリや zip ファイルは削除しても構いません。
SDKのサンプルなどを利用したい場合は [Installed SDKs] タブ内の SDK_2.x_JN5189DK6
を右クリックし、[Unzip Archive] を選択します。登録した ZIP ファイルを展開します。 ※ 展開したSDKディレクトリを参照するには、[Installed SDKs] タブ内の SDK_2.x_JN5189DK6
を右クリックし、[Open Location] を選択します。
MCUXpresso IDE - ワークスペースの作成 ワークスペースは、開発プロジェクト(多くの場合一つのプログラムを構築するための開発単位でソースコードやビルド中間物などが含まれる)を複数格納する事が可能です。ワークスペース内のプロジェクト間の依存関係なども設定でき、プロジェクト間の参照も行います。
MUCXpresso IDE を初回起動すると自動的にワークスペースが作成されますが、当社のライブラリなどを格納するためのワークスペースを新たに用意します。
ディレクトリ名に日本語や空白が含まれない開発用のディレクトリを作成します。中身は空にしておいてください。ここではC:\Work\Wks_TWENET
(Windows)という名前で解説します。 メニューより[File]>[Switch Workspace]>[Other…]を選択します。 作成したワークスペースディレクトリを入力して [Launch] ボタンを押します。 MCUXpresso IDE - ライブラリ・サンプルをコピー 当社から提供のアーカイブをワークスペースディレクトリにコピーします。
MCUXpresso IDE - ライブラリ・サンプルのインポート TWELITE GOLD 向けアプリケーションを開発するために必要なライブラリやサンプルコードを MCUXpresso に読み込みます。
メニューより [File]>[Import…]を選択します。
→ Import ダイアログが開かれます。 リスト中の [General]>[Existing Projests into Workspace] を選択して [Next >] ボタンを押します。
→ Import ダイアログ (Import Projects) が開かれます。 [Select root directory: ]にある[Browse…]ボタンを押して、ワークスペースディレクトリを選択します。
→ 追加可能なプロジェクトが [Projets:] リストに表示されます。 [Finish] ボタンを押します。
→ プロジェクトがワークスペースに追加されます。[Project Explorer]タブには一覧が表示されます。 [Project Explorer]タブ上ですべてのプロジェクトを選択して、右クリックメニューより [Close Projects] を選択して、一旦 TWENETxxx 以外のプロジェクトを全て閉じておいて下さい(必須作業では有りませんが、不要なプロジェクトが開かれていると見づらいといった作業性の向上を目的とします) Pythonのインストール **Windows では Python のインストールを省略できます。**MWSTAGE/Tools 以下に Python の実行環境を収録しており、通常は、...TWENETmcu/linker/scripts/dk6_image.sh
スクリプトから上記を呼び出すようになっています。ビルド時にPythonの動作に関するエラーが発生する場合など必要な場合は、別途インストールを試みてください。
MacやLinuxの場合 、通常の構成では最初からpython3がインストールされていますので、後述の pycryptodome ライブラリの確認と必要に応じてインストールを行います。
概要 各プロジェクト内にはビルドの後処理としてバイナリイメージ署名データ (image signature) を埋め込むスクリプトが含まれ、コンパイル後のバイナリイメージの書き換え処理を行っています。この書き換えには Python スクリプトと pycryptodome ライブラリが用いられますが、別途インストールが必要です。
サンプルプロジェクトに含まれるプロジェクトでビルドを成功させるためには、以下を必要とします。
コマンドプロンプトを開き py -3
または python3
というコマンド名でPythonスクリプトが実行できること Windows環境では python.org からインストーラをダウンロードする方法、Microsoft Store から導入する方法の2種類があります。いずれかの方法で Python をインストールします。
python.org からインストールした場合はインストーラの指示に従って下さい。またPATHの設定が必要になった場合に備えてインストールディレクトリは把握しておいて下さい。Microsoft Store からインストールした場合は、%USERPROFILE%\AppData\Local\Microsoft\WindowsApps\
にインストールされるようです。参考にして下さい。 インストール後にコマンドプロンプトから python3 が実行できない場合は、環境変数PATHの確認を行って下さい。 (py.exe
コマンドが実行できる場合は py -0p
と実行すれば各インストールディレクトリが表示されます)
MacOS や Linux 環境については、一般の情報を参照の上 python3 を導入しておいて下さい。
Python のインストール後にコマンドプロンプトを開き python3 --version
と入力すると、バージョン番号が出ます。
C:\XXX\> python3 --version <=== インストール後、バージョンの確認
Python 3.10.2
Windows で特定のバージョンのPythonを動作させる インストール済みの Python で動作に問題があったり、これに手を付けたくない場合や、別のバージョン (例:3.8がインストール済みとしたら 3.7 など) のインストールを検討して下さい。
注:別のバージョンをインストールする場合にインストーラが PATH を更新すると python3 コマンドが、新しくインストールしたバージョンになります。新たにインストールする際はインストーラによる PATH の設定は行わない方が良いでしょう。また py.exe
コマンドで起動するコマンドがインストール後のバージョンに変わる場合もあります。
Python のバージョン切り替えには py.exe
コマンド(Pythonインストール時に同時に導入される)を利用します。
C:\XXX\> py -0 <=== インストール済みのPythonのリスト
Installed Pythons found by py Launcher for Windows
-3.8-64 *
-3.7-64
-3.10-64
-2.7-64
<<< ここで Python3.6 をインストールする >>> (注:3.6はメンテナンス終了)
C:\XXX\> py -0
Installed Pythons found by py Launcher for Windows
-3.8-64 *
-3.7-64
-3.6-64 <=== 3.6 が追加されている
-3.10-64
-2.7-64
C:\XXX\> py -3.6 <=== Python3.6を起動してみる
Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> ^Z <=== Ctrl+Z [Enter]で終了
C:\XXX\> py -3.6 pip list <=== Python3.6のpipを実行してみる
Package Version
---------- -------
pip 18.1 <=== インストール済みのモジュールが列挙される
setuptools 40.6.2
You are using pip version 18.1, however version 21.3.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
上記のように py.exe
コマンドを用いることで、違うバージョンの Python と pip を実行することが出来ます。現環境下の Python を触りたくない場合は、現環境ではないバージョンの Python をインストールして
特定バージョンを用いる場合はプロジェクトの[Properties]>[C/C++ Build]>[Build Variables] に DK6_PY
を追加して下さい。以下の例では py.exe -3.6
を設定しています。(Configuration は Release/Debug 両方で設定します)。
pythonバージョンの設定
pycryptdomeのインストール 当社で提供したサンプルやライブラリ群のビルドでは必要ありません。当社ではファームウェア関連の暗号化に対応するサポートは行いません。NXP社の公式情報、サポートコミュニティにて情報を得て下さい。
dk6_image_tool.py
の実行では、暗号化を用いたファームウェアの署名等に必要になる場合があります。以下の例(Windows 環境、py.exe コマンド利用)を参考に pycryptodome
を導入して下さい。
C:\XXX\> py -0 <=== インストール済みのPythonのリスト
Installed Pythons found by py Launcher for Windows
-3.8-64 *
-3.7-64
-3.10-64
-2.7-64
<<< ここで Python3.6 をインストールする >>> (注:3.6はメンテナンス終了)
C:\XXX\> py -0
Installed Pythons found by py Launcher for Windows
-3.8-64 *
-3.7-64
-3.6-64 <=== 3.6 が追加されている
-3.10-64
-2.7-64
C:\XXX\> py -3.6 <=== Python3.6を起動してみる
Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> ^Z <=== Ctrl+Z [Enter]で終了
C:\XXX\> py -3.6 pip list <=== Python3.7のpipを実行してみる
Package Version
---------- -------
pip 18.1 <=== インストール済みのモジュールが列挙される
setuptools 40.6.2
You are using pip version 18.1, however version 21.3.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
C:\XXX\> py -3.6 -m pip install pycryptodome <=== pipでpycryptodomeを導入
Collecting pycryptodome
Downloading https://files.pythonhosted.org/packages/7e/.../pycryptodome-3.14.0.tar.gz (3.4MB)
100% |████████████████████████████████| 3.4MB 14.7MB/s
Installing collected packages: pycryptodome
Running setup.py install for pycryptodome ... done
Successfully installed pycryptodome-3.14.0
You are using pip version 18.1, however version 21.3.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
pycryptodome のインストールで問題が置きたとき すでにインストール済みのPythonではその状況によっては pycryptodome
の導入時にエラーになって、単純な解決方法が見つからないような場合も考えられます。
Pythonをアンインストールして、新たに導入する(既存のインストール済みのPython環境を破壊しても良い場合)。 後述する「Windowsで特定のバージョンのPythonを動作させる」を参考に、現在環境とは別の Python 環境を用意する。 pipのアップグレード 以下のように pip3 list
を実行すると pip のアップグレードを考慮すべきだと表示されるかもしれません。
C:\XXX\> py -3.X -m pip list <=== 3.X のバージョンを指定して pip list を実行
WARNING: You are using pip version 21.2.4; however, version 22.0.2 is available.
You should consider upgrading via the 'C:\Users\...\python.exe -m pip install --upgrade pip' command.
pycryptodome
がインストールできないなどの対処の一つとして、pipをアップグレードする場合は、以下のようにコマンドを入力します。
C:\XXX\> py -3.X -m pip install --upgrade pip
py.exe コマンドのデフォルトバージョンの指定 設定ファイル (C:\Windows\py.ini
, C:\Windows\pyc.ini
: C:\Windows
は Windows のインストールディレクトリ) を以下の内容(2ファイルとも同じ内容)で作成します。以下の例では 3.8 をデフォルトに設定しています。
[defaults]
python=3.8
3 - MCUXpresso(Eclipse) の画面レイアウト MCUXpresso(Eclipse) の画面レイアウト
MCUXpresso(Eclipse) の画面レイアウトについて解説します。
MCUXpresso(Eclipse) の画面レイアウト MCUXpresso (Eclipse)では、目的に応じて様々な画面構成に設定することが出来ます。意図しない画面構成になった場合は以下の操作を行います。
メニューより [Window]>[Perspective]>[Open Perspective] より [C/C++], [Develop], [Debug]などを開く。
C/C++ : コード記述時を想定 (MCUXpresso 標準、特有のタブも表示) Develop: デバッグ時に利用 (MCUXpresso 特有のタブも表示) Debug: デバッグ時に利用 ツールバーなどあるはずのものが表示されない場合
ツールバー:メニューより [Window]>[Appearance]>[Show Toolbar] を選択する。 その他ウインドウ(Consoleなど):メニューより [Window]>[Show View] メニューから探します。 4 - TWELITE BLUE/RED 向けのビルドとライブラリについて TWELITE BLUE/RED 向けのビルドとライブラリについて
TWELITE BLUE/RED 向けのビルドとライブラリについて解説します。
TWELITE BLUE/RED 向けのビルドとライブラリについて ライブラリフォルダごとの扱い TWENETcore 対象 取り扱い その他 ソースファイル 非開示 ヘッダファイル TWENETcore/souce
を参照。 ※ライブラリビルド時は、このヘッダファイルを参照していない。ライブラリファイル TWENET/current/lib
以下に別途ビルドしたものを配置
TWENEText 対象 取り扱い その他 ソースファイル 非開示 ヘッダファイル TWENETcore/souce
を参照。 ※ライブラリビルド時は、このヘッダファイルを参照していない。ライブラリファイル TWENET/current/lib
以下に別途ビルドしたものを配置
TWENETutils 対象 取り扱い その他 ソースファイル TWENETutils/source_BLUE_RED
を参照(ビルドディレクトリを含めた ZIP ファイルを格納)ヘッダファイル TWENETutils/souce
を参照 ※ライブラリビルド時は、このヘッダファイルを参照していない。ライブラリファイル TWENET/current/lib
以下に別途ビルドしたものを配置。
TWENETstgs (twesettings) 対象 取り扱い その他 ソースファイル TWENETstgs/source
を参照。ヘッダファイル TWENETstgs/source
を参照。ライブラリファイル TWENETstgs/source
以下でビルドし、TWENET/current/lib
以下にビルドしたものを配置。
TWENETmwx (mwx) 対象 取り扱い その他 ソースファイル TWENETmwx/source
を参照。ヘッダファイル TWENETmwx/source
を参照。ライブラリファイル TWENETmwx/source
以下でビルドし、TWENET/current/lib
以下にビルドしたものを配置。
TWENETeastl 対象 取り扱い その他 ソースファイル TWENETeastl/source
を参照。ヘッダファイル TWENETeastl/source
を参照。ライブラリファイル TWENET/current/lib
以下に別途ビルドしたものを配置(MWSDK2022_08の版より更新予定なし)
5 - TWELITE GOLD向けのビルドについて TWELITE GOLD向けのビルドについて
TWELITE GOLD向けのビルドについて解説します。
バイナリ (.bin
) の書き込みと実行 ここでは、プロジェクトのビルドが成功し .bin
ファイルが生成された後に、その書き込みと実行確認について説明します。
書き込み方法には2種類あります。
LinkServer 経由(デバッガを用いる) シリアルポート 経由(TWELITE-R など)TWELITE STAGEアプリを利用 DK6Programmer を利用 LinkServer を用いた書き込みと実行 標準画面レイアウト(C/C++ Perspective) を前提に解説します。(参考:画面レイアウトについて )
LinkServer はNXP社の ARM 製品で書き込みやデバッグを行う際に標準的に使用されます。同様の機能を提供するサードパーティ製品(PEMicro probe, SEGGER J-link probe)も存在しますが、ここでは LinkServer を用います。
シリアルポートを利用しない書き込みのため、UART0をターミナルに接続したまま実験ができる。(ただし、デバッグに PIO12-13 は利用できない) LinkServer の接続に失敗することがあり、明示的に ISP=LO を行ったり、USBポートの再接続を行うなどの対応が必要になることが多い。 原則として MCUXpresso からの操作になる。 MCULinkと接続ボード
※ 写真のモジュール及び変換ボードは開発中のものです。製品と一部異なります。
ボードの入手 書き換えのためには、以下のボードが必要です。
ボードの接続 両基板の1.27mmピッチの10ピンヘッダを MCU-Link 付属のフラットケーブルで接続します。
TWELITE GOLD の電源供給(3.3V)が必要です。
MW-STA-MCULink の VCC (VCC SOURCE にある EXT ピンも可) に供給します。 電圧は 3.3V とします。(MCU-Link内部が3.3V) 注:GNDの接続を忘れないようにして下さい 参考:MCL-Link開発元が想定する利用ではありませんが 、MCU-Linkの基板裏面 J2 コネクタの1番ピンから 3.3V を取り出すことも考えられます。
MCU-Linkの回路図、部品データ、通電時の電圧、レギュレータの供給能力などの確認を行った上、注意して作業して下さい。また改造後は開発元・販売元よりの一切の対応/保証/損害に対する対応等は受けられなくなります。 MCU-Link のシリアルポートを利用したい場合は以下の接続を行います。
MCU-Link TX — MW-STA-MCULink の TWELITE DIP #10 (TX) MCU-Link RX — MW-STA-MCULink の TWELITE DIP #3 (RX) GND — MW-STA-MCULink のGNDピン チェック1 上記配線接続を終えた段階で、TWELITE DIP (TWELITE GOLD) を搭載しない状態で確認します。
外部電源を先に投入 (MCU-Linkから供給する場合は不要) する MCU-Link を USB コネクタに接続する MW-STA-MCULink での GND (DIP #1) と VCC (DIP #28) の電圧を確認する
→ 3.3V MCU-Link を USB コネクタから切り離し、外部電源(利用時)を遮断する チェック2 次に TWELITE DIP (TWELITE GOLD) を載せた状態で確認します。
MW-STA-MCULinkに TWELITE DIP を搭載する 外部電源(使用時)を投入する MCU-Link を USB コネクタに接続する TWELITE DIP 上の VCC-GND 間の電圧を確認する
→ 3.3V
→ 電圧が明らかに低いといった場合は、そもそも配線がおかしく電流が供給できない、配線ショートなど大電流が流れてしまっている、TWELITE DIP が故障しているなど問題が考えられます。速やかにUSBコネクタから取り外し、電源を遮断して下さい 。再度配線を確認します。 LinkServer による書き込み(同時にビルド) 接続エラーなどが比較的出やすいため、後述のトラブルシューティングに目を通してから始めて下さい
[QuickStart Panel]タブにある[LS]アイコンをプルダウンして [Program flash action using LinkServer] を選択します。
LinkServer の書き込みメニュー
初回は、以下のようなUSBバス上のLinkServer対応ボード一覧を表示します。複数台接続していなければ、出現するのは一つのみです。そのまま [OK] ボタンを押します。(以下の写真では MCU-Link のファームウェア更新を促す⚠が出ています。書き込める限りはそのまま使うことも出来ますが、必要に応じてファームウェアを更新して下さい)
LS ボードの探索
つづいて、プロジェクトのビルド→書き込み処理が行われます。
書き込み完了
書き込みは、上記画面例の様に書き込み状況、最後に Finished writing Flash successfully. と表示されます。(変更が少ない場合は、差分のみ書き込むこともあります)
1 of 1 ( 0) Writing sectors 0-141 at 0x00000000 with 72248 bytes
( 0) at 00000000: 0 bytes - 0/72248
( 7) at 00000000: 5632 bytes - 5632/72248
( 15) at 00001600: 5632 bytes - 11264/72248
( 23) at 00002C00: 5632 bytes - 16896/72248
...
( 85) at 0000DC00: 5632 bytes - 61952/72248
( 93) at 0000F200: 5632 bytes - 67584/72248
(100) at 00010800: 5120 bytes - 72704/72248
...
(100) Finished writing Flash successfully.
書き込み直後にマイコンがリセットされプログラムが動作します。
書き込む前にシリアルターミナルを起動しておけば、以下のような始動メッセージを確認することも可能です。
!INF MONO WIRELESS TWELITE APP V1-09-1, SID=0x86300101, LID=0x78
!INF DIO --> 00001100000001000000
LinkServer による書き込み(ビルド済み .bin, .axf ファイル) すでにビルド済みの .bin
や .axf
ファイルを指定して書き込みたい場合は、ツールバーの半導体パッケージ形状のアイコンのプルダウンメニューから [MCUXpresso IDE LinkServer probes] を選択して下さい。
ツールバーから呼び出し
以下のようなダイアログが出ます。
書き込みダイアログ
[GUI Flash Tool] ダイアログ上では、以下を指定して [Run…] ボタンを押します。
[File to program] :書き込みたい .bin
または .axf
ファイル [Format to use for programming] :ファイルの形式 トラブルシューティング LinkServer が見つからない 通常は、書き込み操作を行うと、初回に下記のように LinkServer 対応のボードが見つかりますが、見つからない場合があります。
LS ボードの探索
MCUXpresso を終了し、MCU-Link のUSBを抜いてから再度やり直して下さい。通常は不要ですが、プロジェクトの最上位フォルダに有る .launch, .swd
ファイルを削除すると、以前の接続状を抹消できます。 LinkServer 接続時にエラーが出る エラーのダイアログ上の[OK]を押してエラーのリトライを行うエラーダイアログ例
PIO5=ISPENT (SMD#2, DIP#7) を LOW (GND) レベルに落とすボタンなどを設け、LinkServer の接続時に明示的に LOW レベルにする 何度やってもうまく行かない場合は MCUXpresso を終了し、MCU-Link のUSBを抜いてから再度やり直して下さい。 シリアルポートを用いた書き換え(TWELITE-Rなど) シリアルポートを用いた書き換えには TWELITE-R (文中では LITE-R とも表記) を接続します。ハードウェアの接続は TWELITE BLUE/REDと同様で主に UART0 TXD,RXD, PGM(ISPピン), RESET を用います。ただし、ファームウェアの書き込みのためのシリアル通信プロトコルは違っていますので、書き込みには対応のソフトウェアが必要です。
書き込みに対応するソフトウェアは以下です。
TWELITE STAGE DKProgrammer TWELITE STAGE を用いた書き込み TWELITE STAGE をビルド&書き込み環境として用いることができます。操作方法は TWELITE STAGE アプリ を参照してください。
DK6Programmer を用いた書き込み 書き換えのために TWELITE-R を用いることが出来ます。この方法は Windows のみ対応します。
既存の書き換えユーティリティTWELITE STAGE や TWE Programmer は利用できません
DK6Programmer ユーティリティのインストール 書き換えユーティリティはコマンドラインツールで、NXP社からダウンロードしたSDKにインストーラーが含まれます。
SDKのディレクトリ \tools\JN-SW-4407-DK6-Flash-Programmer
を確認します。 ディレクトリ内には .pdf
形式の資料と .exe
形式のインストーラが含まれます。 .exe
形式のインストーラを実行して、インストーラの指示に従います。インストールした場所のディレクトリを把握しておき、必要に応じて PATH の設定を行います。 コマンド名は DK6Programmer.exe
です。以後はこのコマンドがコマンドプロンプト上で動作する前提で記載します。
書き込み方法 LITE-R を USB ポートから外した状態で TWELITE DIP 形状の TWELITE GOLD を接続します。(頻繁に抜き差しする場合は アタッチメントZIFソケットが利用出来るアタッチメントを考慮下さい。)
LITE-R を USB ポートに接続する。このときに割当てられる COM ポートを確認します(確認方法は後述)。
.bin
ファイルのあるディレクトリでコマンドプロンプトを開いておく。({プロジェクトディレクトリ}/Release
または /Debug
、MCUXpresso で開きたいフォルダを右クリックメニューより [Show in Local Terminal]>[Terminal]を選択すると、そのフォルダでのコマンドプロンプトを開く)
以下のコマンドを実行する。
DK6Programmer.exe -Y -V2 -P 1000000 -s COM4 -p App_Twelite.bin
コマンドの実行例
C:\Work\Wks_TWENET\App_Twelite\Release>DK6Programmer.exe -Y -V2 -P 1000000 -s COM4 -p App_Twelite.bin
COM4: Connected at 115200
COM4: Detected JN5189 with MAC address ...
...
COM4: Programming FLASH
COM4: 0
COM4: Programming FLASH
COM4: 1
...
COM4: Programming FLASH
COM4: 99
COM4: Programming FLASH
COM4: 100
COM4: Memory programmed successfully
エラーの表示が出た場合は、最初からやり直して下さい。多くの場合は、USBの認識がうまく行っていない、モジュールと LITE-R の接続不良ですので、LITE-R を USB コネクタから抜いて、LITE-R と TWELITE DIP (GOLD) の装着をやり直し、もう一度接続します。COMポートが出てこないような場合は、Windows の再起動を行うと解決する場合があります。
参考:COMポートの確認方法 DK6Programmer.exe を用いた LITE-R に割り当てられた COM ポートの確認方法を記載します。
TWELITER を外しておく。
DK6Programmer.exe -l
を実行する。
C:\> DK6Programmer.exe -l
Available connections:
COM18 <== ポートがリストされる
TWELITER を接続する。
DK6Programmer.exe -l
を実行する。実行後に表示されたCOMポートが LITE-R です。
C:\> DK6Programmer.exe -l
Available connections:
COM18
COM4 <== 新たに追加されたポートが LITE-R
参考:WSLを用いた書き換えスクリプト例 WSL (Windows Subsystem Linux) は、動作やパフォーマンスに制約事項がありますが、Linux のシェルから Windows のファイルシステム上のファイルを参照したり、Windows のコマンドを呼び出すなど、Windows 用のユーティリティを動作させるためにも利用できます。
以下は書き換え用の bash スクリプト例です。.bashrc
に定義しておけば jn5189_write [.bin file] [COM port]
のように入力を簡易に出来ます。
function jn5189_write ()
{
PROG= /mnt/c/nxp/DK6ProductionFlashProgrammer/DK6Programmer.exe
if [ -z " $2" -o ! -f " $1" ] ; then
echo "jn5189_write: [BIN_FILE] [COM_PORT]"
echo " e.g.) jn5189_write myfirm.bin COM3"
$PROG -l
else
FILE= $1
shift
COM= $1
shift
BAUD= 1000000
$PROG -Y -V2 -P $BAUD -s $COM -p $FILE $*
fi
}
6 - デバッガの使用 デバッガの使用
デバッガの使用について解説します。
デバッガの使用 デバッグの利用は MCUXpresso 上でのビルドを行い、MCU-Link の接続が必要です。
ここでは、MCU-Link を用いたデバッガについて、その起動方法と代表的な操作について紹介します。
「バイナリ (.bin
) の書き込みと実行 」で解説した MCU-Link を用いた書き込みと書き込んだプログラムが実行できた前提で記載します。 デバッガの詳しい利用方法については gdb や Eclipse の解説を参考にして下さい。 デバッガの本質として、その動作や実行出来る範囲などに制約があります。こういった制限の範囲やその詳細については当社からはご案内できません。 デバッガ画面について デバッガを開始する際に、MCUXpresso (Eclipse) の画面レイアウトを Develop perspective するようなダイアログボックスが出現する場合があります。このダイアログボックスでは [Switch] を押して切り替えます。切り替えたくない場合は [Remember my decision]を☑したうえで [No] ボタンを押します。
Debugレイアウトへの変更ダイアログ
画面レイアウトは作業の内容に応じて効率的なものがありますので、レイアウト変更の操作に慣れておくことをおすすめします。(参考:画面レイアウトについて )
画面レイアウト関連でよく使用するものは以下です。
C/C++ Perspective : [Window]>[Perspective]>[Open Perspective] より選択 Develop Perspective : Debug Perspective : [Window]>[Perspective]>[Open Perspective] より選択 Breakpoints view : Debug Perspective 内にあります。または、メニューより [Window]>[Show View]>[Others…]>[Debug/Breakpoints] を選択 デバッグ前のプロジェクト設定 通常はデバッグを行う場合はプロジェクトのビルド設定で Debug を選択します。Release はデバッグシンボルが含まれませんので、ソースコードを参照したデバッグは行なえません。
また、TWENETライブラリ内のコードも含めてデバッグする場合、これらのプロジェクトを開いておいたほうがスムーズにデバッグできます。([Project Explorer] より TWENTExxx のプロジェクトを選択しておいてから、右クリックメニューより[Open Projecty])
設定済みのブレークポイント 初回利用では設定済みのブレークポイントはないはずですので考慮する必要はありませんが、使用中に経験するトラブルの対処ですので最初に記載しておきます。
デバッガの起動が期待通りではない(main()
の先頭で停止しない)場合は、デバッガ起動前に設定済みのブレークポイントを一度すべて削除したり無効化 してみてください。現在のソースと実行バイナリと過去に設定したブレークポイントが矛盾を起こして、デバッガが正常に始動できない場合があります。
デバッガの開始 プログラムファイル .bin
の書き換えと、デバッガの起動の操作については大きくは違いません。エラー発生時の対処など含め、「バイナリ (.bin
) の書き込みと実行 」を参照して下さい。
最初に Debug 構成でビルドを行いエラーがないことを確認します。 [MCUXpresso IDE - Quick Start Panel] 上の [Debug] ボタンを押します。デバッグ・アイコン
デバッグ用のプログラム書き込みが終了すると main()
関数の先頭でブレークします。(※ デバッガの設定を変更していない場合)デバッグ-main()
デバッガの操作 ブレークポイントの設定 ソースコードのエディタ上で、ブレークポイントの設定と設定解除を行えます。
ブレークポイント
ソースコードのエディタ上でメニューより [Run]>[Toggle Breakpoint] を選択する方法もあります。
また、Breakpoints View で、ブレークポイント一覧を確認できます。
Breakpoints View
実行の制御 ステップ実行など実行の制御に関連する操作は、メニューより [Run] を開きます。
Runメニュー
通常はキーボードの操作で行う場合が多いので、よく使用するキーを列挙します。
キー F5 Step Into その行にある関数などもステップごとに実行する。 F6 Step Over 次の行まで実行するステップ実行する。 F7 Step Return 現在の関数の Return まで実行する。 F8 Resume 実行を再開する(次のブレークまで実行を継続)。 Ctrl+R Run to Line 選択中の行まで実行する。
中断・終了 デバッガの中断はメニューより [Run]>[Terminate] または Ctrl+F2 です。
便利な機能 各Viewの表示はメニューより [Window]>[Show View]>[Other…] より開けます。
Variables : ローカル変数の確認 Breakpoints : ブレークポイント一覧 Expressions : 変数等のウォッチ式、値の確認 Global Variables : グローバル変数のウォッチ式、値の確認 Heap and Stack Usage : ヒープ、スタック状態 Memory: メモリ領域のダンプ Peripherals: ペリフェラルレジスタの値の確認 Registers: CPU のレジスタ情報の確認 トラブルシューティング スリープ復帰後に反応しない スリープ復帰時の動作をデバッグすることは原則不可能です。
デバッグ時には、アプリケーションではスリープさせず、スリープに見立てた実行中のコードで代替するなど対応が必要です。
直前動いていたがデバッガが開始しない MCUXpresso を終了し、デバッガの USB の抜き差しを行って下さい。それでも改善しない場合は、PCの再起動、.launch
ファイルの削除を行ってください。
Debug のアイコンがグレーになっていて押せない TWENETxxx ライブラリのファイルが開かれているような場合は、そのライブラリが [Project Explorer] でも選択された状態になっています。そのライブラリ自体は直接デバッグできるプロジェクトでは有りません。アプリケーションのプロジェクトを選択して [Debug] ボタンを操作します。
Peripherals タブに何も表示されない MCUXpresso の状況によって表示されないことがあります。MCUXpresso を一旦終了して再度起動することで改善することがあります。
SWO を使用したい 本機能はサポート問い合わせ対象外です
SWOは、高速にマイコンの情報を取り出すための仕組みで、低コストのデバッグメッセージの出力、マイコンの関数呼び出しや割り込み状況などを観察できます。
当社で評価する限り、JN5189上ではデバッガの起動が安定しないといった利用に難があるため積極的な紹介はしませんが、printf について (デバッグ, シリアル出力) に、当社で把握する限りの情報とTWENETライブラリ内の定義や記述について解説しています。
関連資料 7 - プロジェクトのビルド プロジェクトのビルド
プロジェクトのビルドについて解説します。
プロジェクトのビルド プロジェクトのビルドはいくつかの方法で行えます。
MCUXpresso IDE 上でのビルド: MCU-Linkによるデバッグを行う場合など。半導体メーカがメンテナンスしているため、特有の機能が利用できます。ただし TWELITE での実装は、半導体メーカの標準的な想定と違う場合もありますので、すべての機能が利用できるわけではありません。 make によるビルド: 従来と同様のビルド方法です。いくつかのツールから make を呼び出せるようにしています。MCU-Linkデバッガは利用できません。TWELITE STAGE アプリ : ビルドから書き込み、実行までを行うユーティリティです。対象プロジェクトをVSCodeにて開く機能もあります。 VSCode : コード解釈のための定義とビルド(make)のためのTaskが定義されています。提供されるアプリ・サンプルには VSCode用の定義がないものもあります。事前に環境変数の設定が必要で、Windows向けに環境変数の設定を行いつつVSCodeを起動するためのバッチファイルやスクリプトを用意しています。 Windows 上のコマンドウインドウ (bash): 必要な環境変数の設定が行われた bash や cmd.exe を起動するためのバッチファイルを用意しています。 Windows上のWSL上から、上記の Windows 上の make ユーティリティを呼び出すためのバッチファイルやスクリプトを準備しています。 MCUXpressoの場合 標準画面レイアウト(C/C++ Perspective) を前提に解説します。(参考:画面レイアウトについて )
ここでは、プロジェクトをビルドし、マイコン上で動作する実行バイナリ (.bin
) を生成します。
まず最初にビルドしたいプロジェクトを [Proejct Explorer] で開いておきます。
プロジェクトを開く
TWENET ライブラリを開く場合と閉じておく場合で振る舞いが違います。
TWENETライブラリを開いておくと、必要であればライブラリの再ビルドを行います。デバッグを行うような場合は、ライブラリコードを開くことも多いため、開いておくことを推奨します。 TWENETライブラリを閉じておくと、ライブラリの再ビルドは行わないためビルド工程は短く済みます。 ビルドを行うには対象のプロジェクトが開かれた状態で金槌のアイコンからビルド構成を選択します。
金槌アイコン
ビルド関連の操作方法は複数あります。以下に例を挙げますが、詳しくは Eclipse のマニュアルを参照下さい。
選択中のビルド定義でのビルドMCUXpresso QuickStart Panel 中の[Build]アイコンをクリックする メニューより [Project]>[Build Project] を選択する [Project Explorer]でプロジェクトの最上位フォルダを右クリックメニューより [Build Project] を選択する 選択中のビルド定義でのクリーン(中間ファイルを削除)MCUXpresso QuickStart Panel 中の[Clean]アイコンをクリックする メニューより [Project]>[Clean…] を選択する [Project Explorer]でプロジェクトの最上位フォルダを右クリックメニューより [Clean Project] を選択する ビルドを実行すると [Console] にビルド経過が表示されます。
ビルド時のコンソール画面
ビルドが成功したかどうかは、エラーメッセージの有無と .bin
ファイルの生成で確認して下さい。
arm-none-eabi-g++ -nostartfiles -nostdlib -s ... <=== リンカ
Memory region Used Size Region Size %age Used
FLASH_PROGRAM: 72184 B 640 KB 11.01%
SRAM: 40516 B 89056 B 45.49%
SRAM_USER: 0 GB 32 KB 0.00%
SRAM_AUX: 0 GB 16 KB 0.00%
SRAM_HEAP_FIXED: 0 GB 8 KB 0.00%
SRAM_STACK: 8 KB 8 KB 100.00%
SRAM_MAC: 0 GB 1 KB 0.00%
Finished building target: App_Twelite.axf
Performing post-build steps
sh ../scripts/dk6_image.sh "App_Twelite.axf" "App_Twelite" ...
--- Image information --- <=== elf形式のオブジェクト
text data bss dec hex filename
71944 240 48196 120380 1d63c App_Twelite.axf
--- Check Python command --- <=== イメージ署名で使う Python のチェック
Python 3.9.9
--- dk6_imag_tool.py --- <=== イメージ署名
AXF image signature: py.exe -3 ../scripts/dk6_image_tool.py -s 294912 "App_Twelite.axf"
No compatibility list
boot block offset = 119f8
Writing checksum 04030a54 to file App_Twelite.axf
Writing CRC32 of header 3ab5fee4 to file App_Twelite.axf
Binary size is 00011a18 (72216)
--- Generate bin --- <=== .bin を生成
copy from `App_Twelite.axf' [elf32-littlearm] to `App_Twelite.bin' [binary]
VSCodeの場合 MWSDKに附属するアプリやサンプルコードのプロジェクトディレクトリには .vscode
ディレクトリが含まれますが、いくつかの環境変数の設定 が必要です。(.vscodeディレクトリが準備されていないプロジェクトもあります)
環境変数を設定してVSCodeを起動する方法は以下です。
TWELITE STAGE の設定で VS Code で開くオプションを指定し、TWELITE STAGE から該当のプロジェクトを開く。 Windows: MWSDK/scripts/WIN_CODE.cmd
から起動する。(事前に code コマンドで VSCode が立ち上がるようにインストール作業を済ませておく必要があります。実行後、コマンドプロンプトの画面が表示されたままになります) Windows: MWSDK/scripts/WIN_CODE.cmd
からコマンドプロンプトを表示し、code
コマンドを実行する。(事前に code コマンドで VSCode が立ち上がるようにインストール作業を済ませておく必要があります) Windows: MWSDK/scripts/WIN_WSL.cmd
から WSL プロンプトを表示し、mwcode.sh
コマンドを実行する。(WSL の事前インストールが必要です。サポート問い合わせ外の方法です。内容は mwcode.sh
を直接参照してください) 環境変数 内容 例 MWSDK_ROOT
MWSDKのルートディレクトリ C:/Work/MWSTAGE/MWSDK/
MWSDK_ROOT_WINNAME
上記、Windows名 C:\Work\MWSTAGE\MWSDK
\MWSDK_TWENET_LIBSRC
ライブラリへのディレクトリ C:/Work/MWSTAGE/MWSDK/TWENET/current/
MWSDK_MAKE_JOBS
並列ジョブ数 -j8
MWSDK_MAKE_DISABLE_LTO
LTOの有無 DISABLE_LTO=1
またはDISABLE_LTO=0
VSCode上で推奨されるプラグイン C/C++ C/C++ Extension Pack VSCode 上の操作 C/C++ Configuration (下部ステータスバー右下に TWELITE ??? のように表示されている) ⇒ コード解釈の対象を選択します。(TWELITE BLUE/RED/GOLD)エディタ上のコード解釈はあくまでも編集の作業性の目的です。コンパイル時に発生するエラーとは通常一致せず、エディタ上のコード解釈のエラーは参考までにとどめてください。 GOLDでのコード解釈においては解釈エラーが多く出る場合があります。作業性が悪い場合はBLUE/REDの設定にするのも選択肢です。 Terminal メニューから Run Task… ⇒ ビルドやクリーンを行う。 コマンドラインの場合 または このバッチファイルは実行に必要な環境変数を設定します。
bashの場合 MWSDK/scripts/WIN_BASH.cmd
(msys bash)を実行します。
以下のような画面が表示されます。MyName@MyPC から始まる行はインストール状況によって変わります。
MyName@MyPC /c/Work/MWSTAGE/MWSDK
MWSDK$
Act_samples/BRD_APPTWELITEをビルドする場合は、以下のような操作を行います。
MyName@MyPC /c/Work/MWSTAGE/MWSDK
MWSDK$ cd Act_samples/BRD_APPTWELITE/build
MyName@MyPC /c/Work/MWSTAGE/MWSDK/Act_samples/BRD_APPTWELITE/build
MWSDK$ make TWELITE= GOLD
...
!!!TARGET= BRD_APPTWELITE_GOLD_L1305_V0-2-1.bin
MyName@MyPC /c/Work/MWSTAGE/MWSDK/Act_samples/BRD_APPTWELITE/build
MWSDK$
cmd.exeの場合 MWSDK/scripts/WIN_CMD.cmd
(Windows の cmd.exe) を実行します。
Microsoft Windows [Version 10.0.22621.1848]
(c) Microsoft Corporation. All rights reserved.
C:\Work\MWSTAGE\MWSDK>
Act_samples/BRD_APPTWELITEをビルドする場合は、以下のような操作を行います。
C:\Work\MWSTAGE\MWSDK>cd Act_samples\BRD_APPTWELITE\build
C:\Work\MWSTAGE\MWSDK\Act_samples\BRD_APPTWELITE\build>make TWELITE=GOLD
...
!!!TARGET=BRD_APPTWELITE_GOLD_L1305_V0-2-1.bin
C:\Work\MWSTAGE\MWSDK\Act_samples\BRD_APPTWELITE\build>
WSL からのビルド 本機能は、サポート問い合わせ対象外です
Linux上でのビルドではなくWindows上のビルド環境をWSLから呼び出すためのスクリプトを用意しています。
事前に WSL が動作するようにインストールを済ませておきます。
MWSDK/scripts/WIN_WSL.cmd
を実行します。WSLのコマンドウインドウが表示されます。
MyName@MyPC /mnt/c/Work/MWSTAGE/MWSDK
$
Act_samples/BRD_APPTWELITEをビルドする場合は、以下のような操作を行います。
MyName@MyPC /mnt/c/Work/MWSTAGE/MWSDK
$ cd Act_samples/BRD_APPTWELITE/build/
MyName@MyPC /mnt/c/Work/MWSTAGE/MWSDK/Act_samples/BRD_APPTWELITE/build
$ mwbash.sh make TWELITE= GOLD
...
!!!TARGET= BRD_APPTWELITE_GOLD_L1305_V0-2-1.bin
MyName@MyPC /mnt/c/Work/MWSTAGE/MWSDK/Act_samples/BRD_APPTWELITE/build
$
mwbash.sh
は上述のbash環境からmake
を実行するためのスクリプトです。
参考: Windows 用の VSCode を起動するための mwcode.sh
も用意しています。第一引数に.vscode
が格納されているプロジェクトフォルダを指定します。
MyName@MyPC /mnt/c/Work/MWSTAGE/MWSDK/Act_samples/BRD_APPTWELITE
$ mwcode.sh .
8 - プロジェクトの構成と設定 プロジェクトの構成と設定
プロジェクトの構成と設定について解説します。
プロジェクトの構成と設定 最初に TWELITE の標準アプリケーション App_Twelite を例にプロジェクト構成と重要な設定について解説します。MCUXpresso の [Project Explorer] より App_Twelite プロジェクトを選択してください。
App_Twelite/ : ソースコードの格納場所
Common/ : ソースコードの格納場所
build/ : ビルド関連のファイルをまとめて格納
scripts/ : ビルドのポスト処理で .bin に署名データを埋め込むスクリプト
linkscripts/ : リンカ定義
Release/ : Release ビルドを行うと中間ファイルや生成物が保存される
Debug/ : Debug ビルドを行うと中間ファイルや生成物が保存される
MCUXpresso での設定画面 メニューより [Project]>[Properties] (または Project Explorer でプロジェクトの最上位フォルダを右クリックメニューより [Properties])を選択すると以下のような設定画面が出ます。以降はその設定画面条の確認や操作について触れます。
C/C++ Settings
ビルド対象のソースコード ビルド対象のソースコードは、MCUXpresso での定義を行うことで追加・削除が可能です。新しく追加したディレクトリは通常はビルド対象になります。
※ ビルド対象から除外する場合は、対象ディレクトリを右クリックメニューより [Properties..]>[C/C++ Build] を選択し、[Configuration]を[All Configurations]として [Exclude resource from build] をチェックします。
ビルドコンフィギュレーション (Release/Debug) ビルド定義については Release, Debug の2種類を定義しています。
Release : 最適化を実行した実行用のビルド定義 Debug : デバッグシンボル付きのビルド。PRINTFマクロによる出力にも対応 注:この定義名を用いて、ライブラリファイルの格納ディレクトリを指定しているため、ビルド定義を新しく作成した場合にはプロジェクト定義の調整が必要です。( [Properties..]>[C/C++ Build]>[Settings]>[MCU C++ Linker/Libraries] で "${workspace_loc:/TWENETxxx}/${ConfigName}"
の ${ConfigName}
の部分が Release や Debug に置き換わります)
Build Variables [C/C++Build]>[Build Variables] にはコンパイルに必要な情報(バージョン番号)を定義しています。
定義 値 内容 VERSION_MAIN
必須 [0..255] バージョン番号(メイン) VERSION_SUB
必須 [0..255] バージョン番号(サブ) VERSION_VAR
必須 [0..255] バージョン番号(バリエーション) DK6_PY
通常は設定不要 スクリプト実行のための python 実行コマンド (例: py.exe -3.7
) 指定しなければ py.exe -3
または python3
が使用される。
MCU Settings… MCU設定では JN5189 が選択されています。
このページにはRAM領域のメモリマップが表示されますが、MUCXpressoの設定はビルドには反映されません 。詳しくはRAMの割当 を参照下さい。
MCU Settings
インクルードパス ソースファイルのインクルードパスを設定しています。TWENETxxx (xxxはライブラリ名) ライブラリについても、この設定をしないとビルドが出来ません。
プロジェクト定義には冗長な設定が含まれます (mwx ライブラリを使用しないプロジェクトにパスが通っているなど)。 設定は "${workspace_loc:/TWENETxxx}"
のようにワークスペースを起点とした定義です。TWENETxxx というディレクトリがあってもプロジェクトとして登録されていないと、そのディレクトリは検索対象になりません。かならずライブラリもワークスペースのプロジェクトとして追加しておいて下さい。 インクルードパスは以下で設定します。構成(Release/Debug)ごとに設定が別になっているので注意して下さい。
[Properties..]>[C/C++ Build]>[Settings]>[MCU C++ Compiler]>[Includes] (C++ソースファイル) [Properties..]>[C/C++ Build]>[Settings]>[MCU C Compiler]>[Includes] (C++ソースファイル) 多くのプロジェクトでは以下のディレクトリが追加されています。
${ProjName}/${ProjName}
${ProjName}/Common
TWENETcmpt/source
TWENETcore/source
TWENEText/source
TWENETmcu
TWENETmcu/CMSIS
TWENETmcu/board
TWENETmcu/component
TWENETmcu/component/lists
TWENETmcu/component/uart
TWENETmcu/component/serial_manager
TWENETmcu/device
TWENETmcu/drivers
TWENETmcu/framework
TWENETmcu/framework/Common
TWENETmcu/startup
TWENETmcu/uMac
TWENETmcu/utilities
TWENETmcu/printf
TWENETmwf/source
TWENETmwx/source
TWENETstgs/source
TWENETutils/source
先頭の2つは、${ProjName}
はプロジェクトディレクトリ名で App_Twelite の場合は App_Twelite/App_Twelite
とApp_Twelite/Common
の2つを指定しています。プロジェクトで参照するライブラリやソースコードのディレクトリ配置に応じて編集します。
プリプロセッサ定義 プリプロセッサ定義は以下で設定します。構成(Release/Debug)ごとに設定が別になっているので注意して下さい。
[Properties..]>[C/C++ Build]>[Settings]>[MCU C++ Compiler]>[Preprocessors] (C++ソースファイル) [Properties..]>[C/C++ Build]>[Settings]>[MCU C Compiler]>[Preprocessors] (C++ソースファイル) 一部の定義について解説します。
定義 値 内容 VERSION_MAIN
${VERSION_MAIN}
[Build Variable]の設定値を引用 VERSION_SUB
${VERSION_SUB}
[Build Variable]の設定値を引用 VERSION_VAR
${VERSION_VAR}
[Build Variable]の設定値を引用 CPU_JN518X
TWELITE GOLD(JN518x)のビルド時に設定。機種別コード記述に利用。 TOCONET_DEBUG
0
または1
TWENET の内部向けデバッグ出力の制御 (1
で有効になる)。この設定はアプリケーション、TWENETcore、TWENEText全てで同じ定義でビルドする。 T_ENUM_INT
int16_t
TWENET で用いる teEvent
, teState
の定義型 (従来は enum でコンパイルオプションで 16bit 長としていたが、ARM上のビルド、C++の共存の2点を考慮し int16_t
型とした) SDK_DEBUGCONSOLE
0..2
printfについて 参照SERIAL_PORT_TYPE_SWO
0
または1
printfについて 参照DEBUG
またはNDEBUG
デバッグビルドまたはリリースビルドの指定
バージョンの指定 TWENETで記述されたビルド定義には Makefile 中に VERSION_MAIN
VERSION_SUB
VERSION_VAR
を定義して、コード中で同名のプリプロセッサ定義 (例:-DVERSION_MAIN=1
)としています。コード中にもこれらの定義がないとビルドが失敗します。
MCUXpressoでは Eclipse のビルドマクロ [Properties..]>[C/C++ Build]>[Build Variable] に定義して、コンパイラに定義を渡しています。
Debug での定義 多くのプロジェクトでは以下のように定義されています。
VERSION_MAIN=${VERSION_MAIN}
VERSION_SUB=${VERSION_SUB}
VERSION_VAR=${VERSION_VAR}
CPU_JN518X
JN5189=5189
JENNIC_CHIP_FAMILY_JN518x
JENNIC_CHIP=JN5189
JENNIC_CHIP_JN5189
JENNIC_CHIP_FAMILY_NAME=_JN518x
TOCONET_DEBUG=1
T_ENUM_INT=int16_t
__MCUXPRESSO
__USE_CMSIS
CPU_JN5189THN
CPU_JN5189THN_cm4
SDK_DEBUGCONSOLE=1
SERIAL_PORT_TYPE_SWO=0
DEBUG
Release での定義 多くのプロジェクトでは以下のように定義されています。
VERSION_MAIN=${VERSION_MAIN}
VERSION_SUB=${VERSION_SUB}
VERSION_VAR=${VERSION_VAR}
CPU_JN518X
JN5189=5189
JENNIC_CHIP_FAMILY_JN518x
JENNIC_CHIP=JN5189
JENNIC_CHIP_JN5189
JENNIC_CHIP_FAMILY_NAME=_JN518x
T_ENUM_INT=int16_t
__MCUXPRESSO
__USE_CMSIS
CPU_JN5189THN
CPU_JN5189THN_cm4
SDK_DEBUGCONSOLE=2
NDEBUG
リンカー シンボルの繰り返し探索 ライブラリの依存関係が複雑になっているため、ld
コマンドの --start-group
--end-group
を用いた繰り返し探索(依存シンボルの順序により未解決になる場合があるため、すべて解決するまで探索を繰り返す指定)を有効にしています。定義内容は [Properties..]>[C/C++ Build]>[MCU C++ Linker] の [Command line pattern:] を参照下さい。
リンクすべきライブラリ リンク対象のライブラリは [Properties..]>[C/C++ Build]>[Settings]>[MCU C++ Linker] > [Libraries] に設定します。
注:ライブラリの検索パス(Library search path)は、${ConfigName}
をビルド定義名(Release/Debug)として"${workspace_loc:/TWENETxxx}/${ConfigName}"
のような記述になっています。ビルド定義を作成した場合は修正が必要になります。
TWENETライブラリの詳細:ライブラリ・アプリなど マイコン用ライブラリ (TWENETmcu/libs に格納)MiniMac : IEEE802.15.4 の処理を行う MAC 層 (少機能コンパクト版) Radio : 無線物理層部分の処理 arm_cortexM4l_math : (必須でない) ARM 提供の算術ライブラリ リンクスクリプト 実行形式(.bin)を生成するにあたり、メモリマップなどの定義を行うリンクスクリプトは TWENETmcu/linker/linkscripts/JN5189
に格納しています。
その他のビルド設定 [Properties..]>[C/C++ Build] には [Builder Settings], [Behavior], [Refresh Policy] のタブがありますが、通常編集の必要はありません。
[Behavior] タブでは並列ビルドの並列数を設定できます。過剰なCPU数割当がある場合は減らしてみて下さい。 [Properties..]>[C/C++ Build]>[Settings]には[Build Steps], [Build Artifact], [Binary Parsers], [Error Parser] がありますが、通常編集の必要はありません。
[Build steps] では、リンカ実行後の .bin
バイナリファイルの生成を行っています。
MCUXpresso 標準の定義を書き換え、以下のように dk6_image.sh
を呼び出すようにしています。標準に対して特別な処理は追加していませんが、過程で使用する Python スクリプトの指定や、エラー処理の強化などを目的としています。
sh '${workspace_loc:/TWENETmcu}/linker/scripts/dk6_image.sh' " ${ BuildArtifactFileName} " " ${ BuildArtifactFileBaseName} " DK6_PY= "\" ${ DK6_PY} \"" DK6_OPTS= "\" ${ ENV_IMAGE_TOOL_OPTS} \""
9 - ライブラリ・アプリなど TWENETライブラリ、アプリの解説
TWENETライブラリ、アプリの解説を TWELITE GOLD の話題を中心に行います。
ライブラリ・アプリなど TWELITE GOLDでは、TWELITE BLUE/RED の開発コードと比較的近いふるまいをするライブラリを準備しています。
TWELITE BLUE/RED では、半導体メーカーから供給される AHI API と AppAPI を基本に、utils や TWENET C API、また MWX ライブラリを構成します。
[TWENET C++ API/MWX ] setup(), loop() style API on C++
[utils][TWENET C API ] lagacy C library
[AHI API ][AppAPI ]
--------------------------------
[MCU PERIPHERAL ][MAC LAYER] HARDWARE
TWELITE GOLDでは、半導体メーカより提供されるライブラリは FSL ライブラリとなり、TWELITE BLUE/REDとの互換性はごく限定的です。既に当社で実装されたコードを比較的小さい修正で動作させるため、TWENETcmpt ライブラリを作成しています。TWENETcmpt は、直接 FSL ライブラリを呼び出すことは最小限にし、ペリフェラル等の手続きを抽象化した TWENETmwf ライブラリにより実装されています。
[TWENET C++ API/MWX ]
[TWENET C API ]
[TWENETutils]
[TWENETcmpt - AHI ]
[TWENETmwf C++ LIB ]
[App API ]
[FSL LIBRARY ][MiniMac ]
---------------------------------------------
[MCU PERIPHERAL ][MAC LAYER]
TWENETmwf - FSLライブラリの手続きをまとめたC++ライブラリ。 TWENETcmpt - TWENETmwf ライブラリを用いて実装した AHI 互換関数群。 TWENETutils - BLUE/RED での utils に相当する。UARTなど一部はFSLライブラリにより直接実装されている。 MiniMac と AppAPI - 半導体メーカが提供しているソースコード非開示のライブラリ。マイコン半導体のMAC層を取り扱う直接のAPIはMiniMacという名前のライブラリで、MiniMac を用いてAppAPI互換APIが提供されている。 FSL ライブラリ - 半導体メーカが提供しているソースコード開示のライブラリ。主にペリフェラルを取り扱うための手続き。 TWENETライブラリ一覧 名前 解説 TWENETmwx setup()
/loop()
スタイルの記述を行うためのC++ライブラリ。TWENETeastl EASTL ライブラリ。(C++ のテンプレートライブラリで、コンテナ・イテレータ・アルゴリズム, アクト Act 記述で併用を想定) TWENETstgs 主に設定を管理するためのCライブラリ。 TWENETcmpt TWELITE BLUE/REDの記述に用いられる AHI ライブラリ利用ソースコードの移植を目的とした中間ライブラリ。(TWENETmwf を用いています) TWENETmwf マイコンペリフェラルを扱うための fsl ライブラリを用い、必要機能をまとめたC++ライブラリ。 TWENETcore TWENETのコアライブラリ(ソースは含まれません) TWENEText TWENETのコアライブラリ2(ソースは含まれません) TWENETutils ペリフェラルなどベースライブラリ。UART対応のための serial, uart 関数群も含まれる。 TWENETmcu main()
やマイコン、ペリフェラルライブラリ関数など。
TWELITE Apps, Samples TWELITE Apps のプロジェクトをビルドしています。TWELITE GOLD特有の動作状況について制限がある場合は、プロジェクトディレクトリ直下の README.md の LIMITATIONS 項目に記載します。LIMITATION については、ハードウェアの制限によるもの、当社の対応予定がないものなどが含まれます。
必須ライブラリ: TWENETmcu, TWENETutils, TWENETcore, TWENEText, TWENETmwf, TWENETcmpt 一部で利用するライブラリ: TWENETstgs Act による記述についてのサンプルコードについてのTWELITE GOLD特有の動作状況について制限がある場合は、プロジェクトディレクトリ直下の README.md の LIMITATIONS 項目に記載します。LIMITATION については、ハードウェアの制限によるもの、当社の対応予定がないものなどが含まれます。
必須ライブラリ: TWENETmcu, TWENETutils, TWENETcore, TWENEText, TWENETmwf, TWENETcmpt, TWENETstgs, TWENETmwx EASTL のビルド定義が含まれるのは Act_Unit_EASTL と Act_Template です。他のサンプルにはインクルードパスやライブラリの指定がありません。 MCUXpresso のワークスペースについて MWSDKインストール先のディレクトリ (.../MWSTAGE/MWSDK
)にある current
フォルダ直下に上記ライブラリが格納されています。
MCUXressoで File>Import… を選択し出現したダイアログボックス内で General>Existing Projects into Workspace を選択して [Next] ボタンを押します。続くダイアログで先ほどの current フォルダを指定すると、上述の TWENET???
ライブラリが列挙されますので上記のライブラリすべてを追加しておきます。
新しいプロジェクトの作成 新規プロジェクトは既存のプロジェクトを MCUXpresso 上でインポートしてから名前を変更します。
プロジェクト コピー元 備考 C言語かつAHI互換ライブラリ利用App_Twelite
, App_Wings
など App_Twelite
C++ソースの追加も可能ですが、定義等の修正が必要になる場合があります。 アクト(Act) Act_MYPROJ_template.zip
setup()
, loop()
スタイルのコード。C++前提です。プロジェクトアーカイブを用意しています。 アーカイブのインポートも General>Existing Projects into Workspace から行います。
インポート済みのプロジェクトをもとに新しくプロジェクトを作成したい場合の操作例です。
既存のプロジェクトのバックアップを取るか Export メニューよりアーカイブを作成しておく。 既存のプロジェクトの名前を変更する。 1.でバックアップしたプロジェクトを再度インポートする。