マイコンあそび。

LonganNanoで「RISC-Vちょっとできる」になろう!(開発編)

2019年11月24日  2020年1月2日 
LonganNanoは、とりあえずRISC-Vに関心があり、ちょっと触ってみたいという方々に最適なソリューションだ。



購入やハードウェアの解説は こちら

手に入れたら、サクっと動かしてみちゃいましょう!

準備

Arduino with PlatformIO(VSCode) が手取り早そうだ。
マゾな人は、RISCV用のtoolchainを用意して自分でmakeしてください(笑)

PlatformIOが何かは…もういいよね(^^;
VSCodeやPlatformIOのインストール方法などについては、ぐぐればザクザク出てくるから省略。

そしてPlatformIOの「Platforms」から「Advanced platform installation」をクリックして…

以下のgitリンクを指定してやる。
https://github.com/sipeed/platform-gd32v.git

あとは、ProjectWizardでいつもの3つの質問にこたえてやればいい。


・Name: プロジェクト名
・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をフラッシュ書き込みモードにしてあげる必要がある。
その方法は以下のとおり。
「BOOT」ボタンを押す
「RESET」ボタンも同時に押す→1秒くらいで「RESET」ボタンを離す。
「BOOT」も離してもいいよ。
このへんは STM32 や ESPシリーズマイコン となんとなく似ていますねw
(やっぱり、タクトスイッチだと便利ですね…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.534177] usb 6-3: new full-speed USB device number 2 using ohci-pci
[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: 䌳䨸
idVendor=28e9, idProduct=0189 ということがわかる。

そして platformIO がインストールされているのであれば、 /etc/udev/rules 以下に 「99-platformio-udev.rules」 があるはずだ。

そいつを、sudo nanoあたりで開いて
以下のルールを適当なところに追加して保存する。
# Longan with DFU
SUBSYSTEMS=="usb", ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", MODE:="0666"
その後もういちどLonganNano とPCをUSBでつなぎなおす→ボタン操作でフラッシュ書き込みモードにする→PlatformIOの書き込みボタンをクリック。

最後になんかエラーメッセージは出てしまうけれど、フラッシュへの書き込み自体は Successfully になっているようだ


Linuxマシンの方が、ビルドが早いのでだいぶ捗るはず。

…と、ドヤ顔で書いているのですが、この情報はSipeedのフォーラムでとっくにでていた情報だったのでした!

Sipped BBS : Using USB to host computer <-> longan nano communication


それでは良いLonganNanoプログラミングライフを!(>▽・)b
ー記事をシェアするー
B!
タグ

コメント

Translate

テキスト大文字のデフォルトサイズ変更

人気の投稿