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と接続ボード
※ 写真のモジュール及び変換ボードは開発中のものです。製品と一部異なります。
ボードの入手
書き換えのためには、以下のボードが必要です。
- MCU-Link Debug Probe (NXP)
- MW-STA-MCULink (MonoWireless)
ボードの接続
両基板の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
}