この記事は、二台の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://drive.google.com/file/d/1jvbjJb5MK06aKPm8xUJiYSyBmN-BdrGO/view?usp=drive_link
ソースコードは、こちらです。
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++の設定を変更します。
ビルド後、デバッグセッションを起動すると、プログラムがターゲットボードに書き込まれ、デバッグを行うことが出来ます。
以上です。
2026-06-15 追記
GCCでのビルドに対応しました。以下の手順でビルド可能です。
GCC for Armのインストール
Arm GNU toolchainのダウンロードして、インストールする。
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (Arm GNU Toolchain 15.2.Rel1 (Build arm-15.86)) 15.2.1 20251203
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
DAPLinkのクローンとビルド
$ git clone -b ae-lpc11u35-mb_gcc https://github.com/toyowata/DAPLink
$ cd DAPLink
$ pip install -r requirements.txt
$ ./tools/progen_compile.py -t make_gcc_arm lpc11u35_lpc11u35_if
Preprocessing ../../../source/hic_hal/nxp/lpc11u35/gcc/lpc11u35.ld
(snip)
Compiling ../../../source/usb/winusb/usbd_core_winusb.c
Assembling ../../../source/hic_hal/nxp/lpc11u35/gcc/startup_LPC11Uxx.S
Assembling ../../../source/rtos2/RTX/Source/GCC/irq_cm0.S
Linking build/lpc11u35_lpc11u35_if.elf
Memory region Used Size Region Size %age Used
m_interrupts: 1 KB 1 KB 100.00%
m_text: 55440 B 59 KB 91.76%
m_cfgrom: 10 B 4 KB 0.24%
m_data: 7252 B 7904 B 91.75%
m_cfgram: 142 B 256 B 55.47%
m_data_2: 2 KB 2 KB 100.00%
m_usb_ram: 40 B 2 KB 1.95%
text data bss dec hex filename
56456 1224 8276 65956 101a4 build/lpc11u35_lpc11u35_if.elf
56456 1224 8276 65956 101a4 (TOTALS)
Converting build/lpc11u35_lpc11u35_if.hex
Converting build/lpc11u35_lpc11u35_if.bin
build/lpc11u35_lpc11u35_if_crc
board_id None
family_id None
bin_offset None
Start 0x0, Length 0xe150, CRC32 0xcc898541


