この記事は、二台のAE-LPC11U35-MBを使用して、Mbed対応ボード(オレオレ版)を作成する手順を説明します。
一台はMbed OSが動作するターゲットボード、もう一台はDAPLinkファームウェアを書き込みます。
AE-LPC11U35-MBやEA LPC11U35 QuickStart Boardを使っていて、以下のようなストレスを持った事のある方にお勧めです。
- Flashのチェックサムを書き込むのが面倒
- 書き込み時に、ISPボタンを押したりfirmware.binを削除する手順が面倒
- 普通にprintfが使いたい
- デバッガも使いたい
- DAPLinkのカスタマイズ方法を知りたい
AE-LPC11U35-MBをもう一台用意すれば、全て簡単に実現できます。
事前準備
- AE-LPC11U35-MB 2台(インタフェースとターゲット用)
- 長いブレッドボードと固いジャンパワイヤー
- (バイナリをビルドする時とデバッグを行う場合)Keil MDK v5.27.x MDK-Essentialライセンス以上
DAPLinkファームウェアのビルド
ソースコードからDAPLinkファームウェアをビルドするときの手順を以下に示します。
ビルド済みのバイナリを使う場合は、この部分は読み飛ばしてください。バイナリは、こちらからダウンロードできます。
https://www.dropbox.com/s/36kayln4iz1vbbk/ae-lpc11u35-mb_crc.zip?dl=0
ソースコードは、こちらです。
https://github.com/toyowata/DAPLink/tree/ae-lpc11u35-mb
デフォルトのピン設定に対して、AE-LPC11U35-MB用に変更を行っています。
- ターゲットをリセットするためのボタン変更
- ターゲットのSWCLKと接続するためのポートの変更
- USBドラッグ&ドロップ書き込み時のLEDポートと極性の変更
バイナリをビルドする場合は、以下のコマンドで行ってください。
Keil MDK v5.27.1(MDK-Essentialライセンス以上)が必要です。
> git clone -b ae-lpc11u35-mb https://github.com/toyowata/DAPLink
> cd DAPLink
> pip install -r requirements.txt
> progen generate -t uvision
これで、uvision用のプロジェクトが DAPLink\projectfiles\uvision\lpc11u35_lpc11u35_if
配下に生成されます。
lpc11u35_lpc11u35_if.uvprojx
をオープンして、プロジェクトをビルドします。
DAPLinkファームウェアの書き込み
インタフェース用のAE-LPC11U35-MBにバイナリを書き込みます。ISPボタンを押しながら、USBケーブルでPCと接続します。
Windowsの場合
CRP DISABLD
という名称のUSBマスストレージドライブがマウントされるので、ドライブ内のfirmware.bin
を消去します。続いて、DAPLinkファームウェアをコピーします。
Macの場合
消去と書き込みは、ターミナルを使用して以下のコマンドを入力します。
$ sudo mount -u -w -o sync /Volumes/CRP\ DISABLD
$ rm /Volumes/CRP\ DISABLD/firmware.bin && cp -X <path to firmware file> /Volumes/CRP\ DISABLD/
コピーが終了したら、USBケーブルを抜いて電源を切断します。
AE-LPC11U35-MB の接続
インタフェースとターゲット用のAE-LPC11U35-MBを接続します。以下の表を参照してください。
インタフェース (DAPLink) | ターゲット (Mbed OS) |
---|---|
1: GND | 1: GND |
29: +3.3V | 29: +3.3V |
4: P0_8 | 12: SWDIO |
8: P0_11 | 6: SWCLK |
17: P0_18 | 18: TXD |
18: P0_19 | 17: RXD |
23: P0_2 | 21: RESET |
動作確認
AE-LPC11U35-MBの接続が出来たら、インタフェース側のボードをUSBケーブルでPCに接続します(ターゲット側ボードのUSBポートには何も接続しません)。
DAPLINKという名前のドライブがマウントされれば成功です。
ターゲットバイナリの書き込みと実行
MbedのオンラインIDEやMbed-CLIを使用してバイナリファイルを書き込みます。使用するサンプルコードは、こちらの記事を参考にしてください。
通常のMbedボードと同じようにUSBドライブにドラッグ&ドロップで書き込みます。書き込み後、USBドライブは再マウントされ、書き込んだファイルはドライブには表示されませんが、これは正常な動作です。書き込みが終了すると自動的にターゲット側ボードがリセットされ、プログラムが走り出します。
ターゲットボードのユーザーボタンを押すと、ターゲットボードをリセットすることもできます。
printfをシリアルポートに出力する
DAPLinkは、USB CDCでターゲットチップのUARTをホストのUSBに変換する機能を持っています。これを使うことによって、簡単にprintf出力をターミナルソフトウェアから受信することができます。同様に、scanfでターゲット側に送信することもできます。
ホスト側では、TeraTermやCoolTermなどのソフトウェアが利用可能です。
デバッグする
DAPLinkは、CMSISで標準化されているバッグのためのインタフェース規格CMSIS-DAPが使用可能です。
Mbed-CLIや、Mbed StudioのTerminalビューから以下のコマンドを入力して、MDK-ARMのプロジェクトファイルを生成します。
> mbed export -m LPC11U35_401 -i uvision6
プロジェクトのルートディレクトリに、mbed-os-example-blinky-baremetal.uvprojx
ファイルが生成されるので、ダブルクリックしてMDK-ARMを立ち上げます。
標準設定のままビルドすると大量にエラーが発生するので、以下のようにLanguage C++
の設定を変更します。
ビルド後、デバッグセッションを起動すると、プログラムがターゲットボードに書き込まれ、デバッグを行うことが出来ます。
以上です。