OpenSDA上で動作するファームウェアをDAPlink、J-Link、PEmicroに書き換える方法。
そもそもOpenSDAとは?
マイコンの書き込みやデバッグなどをオンボード上で、実現するシステムのようです。
絵の真ん中にあるのは、サブマイコンのK20で、SWD/JTAGポートを介して、ターゲットとなるマイコンにつながっています。このサブマイコン上で、OpenSDAのアプリが動作して、デバッガとしての機能を実現するような仕組みになっています。
ちなみに、このOpenSDAのシステムは、複数のファームウェアに対応していて、一般的なCMSIS-DAP(DAP-LINK)、J-LINK、PEmicroなどのファームウェアを書き込めます。MSD Bootloaderによって、WindowsOS上から各ファームウェアのバイナリファイルをドラッグアンドドロップ形式で書き込める仕様になっています。
Kinetisマイコンでは、ファームウェアは、DAPLink (CMSIS-DAP)がデフォルトとして、出荷されています。これは、ARMが開発元で、主にMBED用として使われてます。
J-Linkは、SEGGER社が開発したファームウェアです。DAPLinkにくらべ、書き込みが速く、処理が軽快です。無償でダウンロードできるJ-Link Commanderなどのアプリを使えば、Flashのクリア(mass erase)も簡単に実行できるので、開発時に使うと便利なことがままあります。
また、PEmicro社でもOpenSDAに対応したファームウェアを公開しています。OpenSDA環境下では、それほど恩恵を受けられないかもしれませんが、MCUXpresso上で動作するPEmicroのプラグイン機能が使えます。
それぞれのファームウェアの変更手順を下にまとめました。
ブートローダのアップデート
下のリンクでも、説明されてあるとおりですが、古いバージョンのブートローダをWindows10環境下で使うと、不具合が発生する場合があります。手元にあるボードがどの時点のブートローダが書き込まれているか不明な場合は、まず、ブートローダをアップデートしておきます。
この作業の例はTWR-KE18ですが、他のkinetisマイコンでも基本的には、手順は同じです。
まず、リセットボタンを押しながら、ボードとPCをUSB接続して、マウント名を確認します。
デバイスが認識されていない場合は、やっかいで、外部ツールからBootloarderを書き込む必要があります。ここでは、一応、PCで何かしらボードが認識されているのを前提として、手順を追っていくことにします。
上のように、自分の場合(TWR-KE18F)はDAPLINKBOOTとはじめ表示されました。下のキャプチャ画像のSTEP1にあるxxx_update_0x8000.binをダウンロードして、binファイルをドラッグアンドドロップして、ブートローダを書き込みます。
ちなみにFRDM-K64Fの場合は、xxx_update_0x5000.binをダウンロードします。
USBを抜き差しして、MAINTENANCEでマウントされるようになったら、ブートローダのアップデートは完了です。手順は簡単ですが、これを知らないとハマります。
DAPLink -> JLink
デフォルト状態では、ファームウェアはDAPLinkになっているので、これをJLinkに変更してみます。リセットボタンを押した状態でUSB接続して、MAINTENANCEモードでマウントします。
下のページにいき、J-Link OpenSDA-Board-Specific Firmwaresのところで、書き込みたいボードを選択して、binファイルをダウンロードします。
https://www.segger.com/downloads/jlink#JLinkOpenSDABoardSpecificFirmwares
ダウンロードが完了したら、ブートローダの時と同様にbinファイルをドラッグアンドドロップして、書き込みを実行します。
USBを抜き差し後にマウント名の末尾のJを確認できれば、正常に書き込みできています。
実際にプログラムの書き込みを確認します。プロジェクトフォルダの直下にあるxxxx.launchファイルを削除してから、Quickstart Panelタブにあるdebug your project のDebugをクリックします。
正常に認識されると下のようにデバッグプローブとして、J-Linkがリストに表示されます。OKボタンで、ビルドとダウンロードが自動実行されます。
JLink -> DAPLINK
今度、書き換えたファームウェアをDAPLinkに戻してみます。手順は同じなので、説明は省略します。ファームウェアは下からダウンロードします。
マウント後は、末尾に今度は、Dがつきますので、これで書き換わったどうかを確認できます。
DAPLink -> PEmicro
PEmicroの場合は、下のリンクからFirmware Appsをクリックして、ファームウェアをダウンロードします。
http://www.pemicro.com/opensda/
ダウンロードしたZIPフォルダ内には、ボード毎にSDA用のファームウェアが保存されています。TWR-KE18Fはどうもリストにはなかったので、代わりににFRDM-K64Fでトライしました。
binファイル名は、”DEBUG-FRDM-K64F_Pemicro_v108a_for_OpenSDA_v2.0.bin”です。
書き込み方法は同じです。Maintenanceモードでマウントして、binファイルをドラッグアンドドロップします。ちなみにPEmicroの場合は、ストレージデバイスとしてPCからは認識されませんが、これは特に問題ではありません。
ビルド&ダウンロード実行時、下のように今度はPEmicroのプローブが選択できるようになります。
PEmicroプラグインのインストール
PEmicroのファームウェアを使用すると、MCUXpresso上で動作するPEmicroの便利なプラグイン機能を利用できます。
プラグインをインストール手順は以下のとおりです。
メニューバーからHelp -> Install New software をクリック。
すると、リンク先をきかれるので、Work withの箇所に
http://www.pemicro.com/eclipse/updatesをコピーして、貼り付けます。
チェックボックスでGNU ARM PEMicro Interface Debugging Supportにチェックを入れ、Nextをクリックすれば、プラグインに必要な実行ファイルをインストールしてくれます。
プラグインの例
PEmicroのプラグインはメニューバーからWindow->Show View-> Otherをクリックして、下のShow ViewウィンドウからPEmicroのプラグイン機能を選択できます。
ただ、MultilinkやCyclonesなどの外部のデバッグツールではなく、OpenSDA環境では、機能的には、制約がありますが、それでもReal Time Expressionsなどは使えます。
下が例です。Expressionという所で、プログラムの変数名を入力すると、実行中の変数の値をモニタリングすることができます。
MCUXpressoのオリジナル機能にも似たような機能がありますが、どちらかというとこっちの方が高速な印象です。(確かではありません)
ファームウェアの書き換え方法については、以上です。書き換え作業は10秒ぐらいで出来てしまうので、いろいろ比較しながら使うのがいいですね。