LonganNanoで「RISC-Vちょっとできる」になろう!(開発編)
準備
Arduino with PlatformIO(VSCode) が手取り早そうだ。マゾな人は、RISCV用のtoolchainを用意して自分でmakeしてください(笑)
PlatformIOが何かは…もういいよね(^^;
VSCodeやPlatformIOのインストール方法などについては、ぐぐればザクザク出てくるから省略。
そしてPlatformIOの「Platforms」から「Advanced platform installation」をクリックして…
以下のgitリンクを指定してやる。
あとは、ProjectWizardでいつもの3つの質問にこたえてやればいい。
・Board: Sipeed Longan Nano
※SRAM20KB版は「Sipeed Longan Nano Lite」を選びましょう!
・Framework: Arduino
一回プロジェクトを作ってしまえば、ユーザーフォルダ以下の「.platformio/packages」を掘ってやると、GD32用のArduinoFrameworkがあり、variants にもちゃんと、LonganNano用のピン割当がインストールされるのがわかる。
加えて、
・tool-gd32vflash(書き込みツール)
・toolchain-gd32v(ツールチェイン)
・tool-openocd-gd32v(デバッガ)
といったフォルダーも自動でインストールされている。 うーん。便利だ…
…でも、それだけなんですがw(2019年11月23日現在)
Longduino はまだまだ発展途上の模様…
<spi.h>だけは用意してやってるから、LCD(ST7735S)のドライバくらい自分で書いてね。的な雰囲気なので、みんな大好きAdafruitsのライブラリあたりから拾ってきたり、GD32V SDKのサンプルソースを参考にポーリングすることになるでしょうね(T-T。
フラシュ(スケッチ)の書き込み
ビルドが無事通ったら、スケッチをフラッシュに書き込むことになる。現実的に考えると、以下の2種類から選ぶことになるだろう。
(1)USB-Serial(FT232RLみたいなのを挟む)
(2)LonganNanoとUSBを直結する(USB DFU download)
フラッシュ書き込みモードについて
普通にUSBを繋いだり、リセットボタンを押すと、アプリが走り出してしまうので、フラッシュを書き換える時は、LonganNanoをフラッシュ書き込みモードにしてあげる必要がある。その方法は以下のとおり。
「RESET」ボタンも同時に押す→1秒くらいで「RESET」ボタンを離す。
「BOOT」も離してもいいよ。
(やっぱり、タクトスイッチだと便利ですね…bluepillなんかはジャンパーをいちいち差し替えたりして面倒だったのでw)
ただ、bluepillのようにLEDがチカチカするわけじゃないので、本当に書き込みモードに入ったのかどうかがわからないかもw。既に書き込んであるアプリが動かなければそうなっていると判断しましょう(ぉ
では、書き込み方法別の解説
(1)USB-Serial
手元にこいつがあるんだったら、手取り早いでしょう。…っていうか、マイコンで遊ぼうと思ったら必需品ですよね?(^^;
platform.ini に「upload_protocol = serial」って書いておく。
接続方法も難しくないと思う。(ただし、送受信をクロスさせる必要はある)
あとは、PlatformIOのフラッシュ書き込みボタンをクリックすればいい。
(2)DFU USB download
書き込み前の準備が面倒だけど、一回やっておけばUSBと直結しながら開発できて、すこぶる捗るのでやっておく価値はある。その準備の方法は ここ に書いてあるのけど、筆者は英語を見るとアレルギーを起こしてしまうので、ほぼ自分用に備忘録的に残しておくことにした。
公式としては WindowsOS のみを想定しているようだ。
Windows
準備するもの(説明適当w)・GD32 MCU Dfu Drivers …GD32VマイコンのUSBドライバ
・Zadig …Windowsに繋がれたUSBに対して適当にWinUSBドライバを当ててくれるもの
【手順】
(1)GD32 MCU Dfu Driver と、Zadigをダウンロードしてインストールする。Windowsをある程度使った事のある方だったらそんなに難しくない。
GD32 MCU Dfu Driverのインストール |
(2)Zadigを管理者権限で実行
(3)LonganNanoをWindowsPCにUSBで繋ぎ、BOOTボタンを押しながらRESETボタンをクリック。フラッシュ書き込みモードにしてやる。
(4)Zaidigに「GD32 Device in DFU Mode」が現れるので、WinUSBドライバにReplaceしてやろう。フリーズしたようになる…というか、ちょっと時間がかかって心配になるけど、とりあえず5分くらいはじっと待つ覚悟でw
そして、platform.ini に「upload_protocol = dfu」って追加しておけば、準備完了。
PlatformIOのフラッシュ書き込みボタンをクリックすれば書き込めるはず
Linux OS
LinuxOSでもudevのrulesを書けば、なんとかなるんじゃないか。と思って試してみた。まず、dmesg でLongan NanoのUSB情報を確認
[48434.737258] usb 6-3: New USB device found, idVendor=28e9, idProduct=0189
[48434.737266] usb 6-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[48434.737270] usb 6-3: Product: GD32 0x418 DFU Bootloade
[48434.737274] usb 6-3: Manufacturer: GDMicroelectronics
[48434.737277] usb 6-3: SerialNumber: 䌳䨸
そいつを、sudo nanoあたりで開いて
以下のルールを適当なところに追加して保存する。
SUBSYSTEMS=="usb", ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", MODE:="0666"
最後になんかエラーメッセージは出てしまうけれど、フラッシュへの書き込み自体は Successfully になっているようだ
Linuxマシンの方が、ビルドが早いのでだいぶ捗るはず。
…と、ドヤ顔で書いているのですが、この情報はSipeedのフォーラムでとっくにでていた情報だったのでした!
Sipped BBS : Using USB to host computer <-> longan nano communication
それでは良いLonganNanoプログラミングライフを!(>▽・)b
コメント
コメントを投稿