Longan Nano:PlatformIOでBuildおよび書き込みを完結させる
1年以上前に、Longan NanoをSwitch Scienceさんで購入し、よく見かける「Bad Apple」だけトライし、しばらくそのままにしておいたが、久しぶりに触ってみた。Windows 10のPlatform IO「のみ」を利用して、プログラムを書き込むにはポイントがあったので、備忘録としてここに残す。
シリアル通信
例としてPCとのシリアル通信を取り上げる。このボードでは、シリアル通信はUSBポート経由ではなく、個別に用意されたピンを用いる。
Longan Nano(写真下)の左側のピンを、USBシリアル変換ボード(写真上)経由でPCに接続。
ソースコード
ここにシリアル通信を行うサンプルがあったので、これをそのまま使う。
Platform IOの設定
はじめに
備忘録も兼ねているので、PlatformIOの基本的な記載も行う。
「New Project」を選び、「Project Wizard」で
「Sipeed Longan Nano Lite」ボード(フラッシュ 64KB、RAM 20KB)および「Arduino」フレームワーク(用いたソースコードに依存)を選択。
platform.ini
書き込み方法として、「upload_protocol = dfu」を追加(他は自動的に作成される)。
[env:sipeed-longan-nano-lite]
platform = gd32v
board = sipeed-longan-nano-lite
framework = arduino
upload_protocol = dfu
DFUモード
プログラムを書き込むには、ボードをDFUモードにする必要がある。
- BOOT0ボタンを押したまま
- RESETボタンを押し、その後RESETボタンを離す
- 最後に、BOOT0を離す
これで、DFUモードに入る。
インターネットでよく見かける書き込み方法(本稿の目的ではない)
Platform IOでBuild後にできるバイナリ「firmware.bin」を
本家サイトの「6. Install drivers using Zadig」の記載方法で書き込める。まずはボードをUSB経由でPCに接続し、ZadigによりUSBドライバをインストール。デバイスマネージャでは、
となる。その後、上記リンク先の「GD32 MCU DFU Tool」で書き込むことができる。
Platform IOで書き込み(Upload)失敗
USBドライバが上述の「GD32 Device in DFU Mode」の状態で、書き込み(Upload)すると、
と、DFUデバイスが見つからずとなり、書き込みに失敗する。
Platform IOで書き込み(Upload)するには(本題)
USBドライバ変更
調べたところ、この記事にある方法で書き込むことが可能であった。USBドライバを「Libusb-WinUSB」に変更する。ここからUSBドライバ変更ツールをダウンロード。ツールを起動すると
「GD32 Device in DFU Mode」が見つかる。「Change driver type」を選び、
「Libusb - WinUSB」を選び「Install」。すると、
「GD32 Device in DFU Mode (Libusb - WinUSB)」となる。デバイスマネージャでは、
「libusb (WinUSB) devices」が見つかる。
書き込み(Upload)
「libusb (WinUSB) devices」の状態で、書き込み(Upload)実施。
これで、「GD32 MCU DFU Tool」を使わず、Platform IOのみでビルド&書き込みが可能となる。めでたし。
おまけ
本ソースコードのシリアルコンソールの状況。