セクションの複数ページをまとめています。 印刷またはPDF形式で保存...

もとのページに戻る

2025-08-08 現在

TWELITE GOLD関連の情報

TWELITE GOLDを利用する場合の特有の話題
TWELITE GOLDを利用する場合の特有の話題を記載します。以下の情報は参照しなくても、TWELITE STAGE アプリを用い Act をビルドするといった開発は可能です。 (この頁の記述は2023年7月時点の NXP 社のサイトに基づいており、現在のサイトとは手順などが違う場合があります)

TWELITE GOLDビルドについて

本ドキュメントでは、TWELITE GOLDのアプリケーションをビルドするための、開発環境について解説します。

TWELITE シリーズの開発環境は2種類あります。本ドキュメントでは主に MCUXpresso による開発方法を解説します。

  • TWELITE STAGE
    • TWELITE STAGE APP(backstage) または TWELITE STAGE APP(同梱ファイル) - GOLDの情報は含まれませんが、操作手順は同様です。
    • TWELITE BLUE/RED でのビルド方法と同様です。
    • デバッガは使用できません。
    • 提供されるプロジェクト定義にはVSCode用のビルド定義を用意しています。
  • NXP 社の MCU Expresso
    • NXP 社の公式開発環境です。
    • デバッガ (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

mcuexpresso_nxp_com

対応SDK検索

JN5189DK6 をキーワードとして、対応SDKを検索します。

検索後の例

検索後の例

Build MCUExpresso SDK

JN5189DK6 (JN5189) を選択し、右側にある [Build MCUExpresso SDK] のバージョンを [v2.6.X] に設定します。[Build MCUExpresso SDK] をクリックします。

SDKバージョンの指定

SDKバージョンの指定

追加コンポーネントの選択

ダウンロードに含めるコンポーネントを選択します。

ダウンロード画面1

ダウンロード画面1

  • リスト中のコンポーネントについてはほとんど使用しませんが、すべて選択しておきます。
  • Host OS はお使いの OS (Windows/Mac/Linux) を指定します。
  • Toolchanin / IDE は MCUExpresso IDE を指定します。
  • すべての設定を行った後に [DOWNLOAD SDK] をクリックします。クリック後にEULA(ソフトウェア使用許諾契約)などの確認がありますので、画面に従ってください。

ダウンロード

Downloads 画面が出ます。すべてダウンロードしておきます。

ダウンロード画面2

ダウンロード画面2

  • SDK Archive, SDK Documentation, Config Tools data をダウンロードしておきます。(EULA の確認があるものもあります)
  • SDK API Reference Manual のリンク先は確認の上、ブックマークなどに保存しておきます。

2 - MCUXpresso 環境セットアップ

ここでは MCUXpresso IDE を用いた環境構築を解説します。
ここでは MCUXpresso IDE を用いた環境構築を解説します。

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 インストール後の画面です。
始動画面

始動画面

通常は 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 を初回起動すると自動的にワークスペースが作成されますが、当社のライブラリなどを格納するためのワークスペースを新たに用意します。

  1. ディレクトリ名に日本語や空白が含まれない開発用のディレクトリを作成します。中身は空にしておいてください。ここではC:\Work\Wks_TWENET(Windows)という名前で解説します。
  2. メニューより[File]>[Switch Workspace]>[Other…]を選択します。
  3. 作成したワークスペースディレクトリを入力して [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バージョンの設定

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と接続ボード

MCULinkと接続ボード

※ 写真のモジュール及び変換ボードは開発中のものです。製品と一部異なります。

ボードの入手

書き換えのためには、以下のボードが必要です。

ボードの接続

  1. 両基板の1.27mmピッチの10ピンヘッダを MCU-Link 付属のフラットケーブルで接続します。

  2. 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の回路図、部品データ、通電時の電圧、レギュレータの供給能力などの確認を行った上、注意して作業して下さい。また改造後は開発元・販売元よりの一切の対応/保証/損害に対する対応等は受けられなくなります。
  3. 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) を搭載しない状態で確認します。

  1. 外部電源を先に投入 (MCU-Linkから供給する場合は不要) する
  2. MCU-Link を USB コネクタに接続する
  3. MW-STA-MCULink での GND (DIP #1) と VCC (DIP #28) の電圧を確認する → 3.3V
  4. MCU-Link を USB コネクタから切り離し、外部電源(利用時)を遮断する

チェック2

次に TWELITE DIP (TWELITE GOLD) を載せた状態で確認します。

  1. MW-STA-MCULinkに TWELITE DIP を搭載する
  2. 外部電源(使用時)を投入する
  3. MCU-Link を USB コネクタに接続する
  4. TWELITE DIP 上の VCC-GND 間の電圧を確認する → 3.3V → 電圧が明らかに低いといった場合は、そもそも配線がおかしく電流が供給できない、配線ショートなど大電流が流れてしまっている、TWELITE DIP が故障しているなど問題が考えられます。速やかにUSBコネクタから取り外し、電源を遮断して下さい。再度配線を確認します。

LinkServer による書き込み(同時にビルド)

接続エラーなどが比較的出やすいため、後述のトラブルシューティングに目を通してから始めて下さい

[QuickStart Panel]タブにある[LS]アイコンをプルダウンして [Program flash action using LinkServer] を選択します。

LinkServer の書き込みメニュー

LinkServer の書き込みメニュー

初回は、以下のようなUSBバス上のLinkServer対応ボード一覧を表示します。複数台接続していなければ、出現するのは一つのみです。そのまま [OK] ボタンを押します。(以下の写真では MCU-Link のファームウェア更新を促す⚠が出ています。書き込める限りはそのまま使うことも出来ますが、必要に応じてファームウェアを更新して下さい)

LS ボードの探索

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 ボードの探索

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にインストーラーが含まれます。

  1. SDKのディレクトリ \tools\JN-SW-4407-DK6-Flash-Programmer を確認します。
  2. ディレクトリ内には .pdf 形式の資料と .exe形式のインストーラが含まれます。
  3. .exe形式のインストーラを実行して、インストーラの指示に従います。
  4. インストールした場所のディレクトリを把握しておき、必要に応じて PATH の設定を行います。

コマンド名は DK6Programmer.exe です。以後はこのコマンドがコマンドプロンプト上で動作する前提で記載します。

書き込み方法

  1. LITE-R を USB ポートから外した状態で TWELITE DIP 形状の TWELITE GOLD を接続します。(頻繁に抜き差しする場合は アタッチメントZIFソケットが利用出来るアタッチメントを考慮下さい。)

  2. LITE-R を USB ポートに接続する。このときに割当てられる COM ポートを確認します(確認方法は後述)。

  3. .binファイルのあるディレクトリでコマンドプロンプトを開いておく。({プロジェクトディレクトリ}/Release または /Debug、MCUXpresso で開きたいフォルダを右クリックメニューより [Show in Local Terminal]>[Terminal]を選択すると、そのフォルダでのコマンドプロンプトを開く)

  4. 以下のコマンドを実行する。

   DK6Programmer.exe -Y -V2 -P 1000000 -s COM4 -p App_Twelite.bin
  1. コマンドの実行例
   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 ポートの確認方法を記載します。

  1. TWELITER を外しておく。

  2. DK6Programmer.exe -l を実行する。

    C:\> DK6Programmer.exe -l
    Available connections:
    COM18                       <== ポートがリストされる
    
  3. TWELITER を接続する。

  4. 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レイアウトへの変更ダイアログ

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) の書き込みと実行」を参照して下さい。

  1. 最初に Debug 構成でビルドを行いエラーがないことを確認します。
  2. [MCUXpresso IDE - Quick Start Panel] 上の [Debug] ボタンを押します。
    デバッグ・アイコン

    デバッグ・アイコン

  3. デバッグ用のプログラム書き込みが終了すると main() 関数の先頭でブレークします。(※ デバッガの設定を変更していない場合)
    デバッグ-main()

    デバッグ-main()

デバッガの操作

ブレークポイントの設定

ソースコードのエディタ上で、ブレークポイントの設定と設定解除を行えます。

ブレークポイント

ブレークポイント

ソースコードのエディタ上でメニューより [Run]>[Toggle Breakpoint] を選択する方法もあります。

また、Breakpoints View で、ブレークポイント一覧を確認できます。

Breakpoints View

Breakpoints View

実行の制御

ステップ実行など実行の制御に関連する操作は、メニューより [Run] を開きます。

Runメニュー

Runメニュー

通常はキーボードの操作で行う場合が多いので、よく使用するキーを列挙します。

キー
F5Step Intoその行にある関数などもステップごとに実行する。
F6Step Over次の行まで実行するステップ実行する。
F7Step Return現在の関数の Return まで実行する。
F8Resume実行を再開する(次のブレークまで実行を継続)。
Ctrl+RRun 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_ROOTMWSDKのルートディレクトリ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_LTOLTOの有無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

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

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_TweliteApp_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_JN518XTWELITE GOLD(JN518x)のビルド時に設定。機種別コード記述に利用。
TOCONET_DEBUG0または1TWENET の内部向けデバッグ出力の制御 (1で有効になる)。この設定はアプリケーション、TWENETcore、TWENEText全てで同じ定義でビルドする。
T_ENUM_INTint16_tTWENET で用いる teEvent, teStateの定義型 (従来は enum でコンパイルオプションで 16bit 長としていたが、ARM上のビルド、C++の共存の2点を考慮し int16_t型とした)
SDK_DEBUGCONSOLE0..2printfについて参照
SERIAL_PORT_TYPE_SWO0または1printfについて参照
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 に格納しています。

  • MCUXpresso がリンクスクリプトを自動生成する Managed linker script は使用しません。チェックを外し、以下の設定を行うようにしてください。

    • Linker Script ⇒ TWENET_Release.ldまたはTWENET_Debug.ld
    • Script Path ⇒ "${workspace_loc:/TWENETmcu}/linker/linkscripts/
  • ヒープやスタック領域の配置についても指定できます。メモリマップについてはRAMの割当を参照下さい(ユーザプロジェクトフォルダのbuild/App_User_Defs.ldに定義を記述します)。

その他のビルド設定

[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ライブラリ一覧

名前解説
TWENETmwxsetup()/loop()スタイルの記述を行うためのC++ライブラリ。
TWENETeastlEASTL ライブラリ。(C++ のテンプレートライブラリで、コンテナ・イテレータ・アルゴリズム, アクト Act 記述で併用を想定)
TWENETstgs主に設定を管理するためのCライブラリ。
TWENETcmptTWELITE BLUE/REDの記述に用いられる AHI ライブラリ利用ソースコードの移植を目的とした中間ライブラリ。(TWENETmwf を用いています)
TWENETmwfマイコンペリフェラルを扱うための fsl ライブラリを用い、必要機能をまとめたC++ライブラリ。
TWENETcoreTWENETのコアライブラリ(ソースは含まれません)
TWENETextTWENETのコアライブラリ2(ソースは含まれません)
TWENETutilsペリフェラルなどベースライブラリ。UART対応のための serial, uart 関数群も含まれる。
TWENETmcumain()やマイコン、ペリフェラルライブラリ関数など。

TWELITE Apps, Samples

TWELITE Apps のプロジェクトをビルドしています。TWELITE GOLD特有の動作状況について制限がある場合は、プロジェクトディレクトリ直下の README.md の LIMITATIONS 項目に記載します。LIMITATION については、ハードウェアの制限によるもの、当社の対応予定がないものなどが含まれます。

  • 必須ライブラリ: TWENETmcu, TWENETutils, TWENETcore, TWENEText, TWENETmwf, TWENETcmpt
  • 一部で利用するライブラリ: TWENETstgs

Act_samples, Act_extras

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_TweliteC++ソースの追加も可能ですが、定義等の修正が必要になる場合があります。
アクト(Act)Act_MYPROJ_template.zipsetup(), loop()スタイルのコード。C++前提です。プロジェクトアーカイブを用意しています。
アーカイブのインポートも General>Existing Projects into Workspace から行います。

インポート済みのプロジェクトをもとに新しくプロジェクトを作成したい場合の操作例です。

  1. 既存のプロジェクトのバックアップを取るか Export メニューよりアーカイブを作成しておく。
  2. 既存のプロジェクトの名前を変更する。
  3. 1.でバックアップしたプロジェクトを再度インポートする。