UIAPduinoのHIDでターミナル
UIAPduinoでデバッグプリントするには,いくつかの方法がある. シリアルやSWIOなどに出力するのは簡単なのだが,それらを読み取るために別の機器が必要となる. ch32funや私が構築中のArduino環境では,rv003usbを介してUSB serialを使うこともでき,一つのUIAPduinoのみで済むのだが,Windowsでは使えない. そこで,rv003usbにdemo_terminalとして例のある,USB HIDを用いたデバッグプリントが重要になる. 確かめていないが,HIDを使った手法だと,Windowsでも使えるのでは無いだろうか.
今回は私が構築中のUIAPduino用Arduino環境に,この機能を追加してみた. USB serialと切り替える必要があるので,usb_config.hをincludeする際に,条件によって別のファイルを読み込むようにした. funconfig.hも少し修正した. USB serialのように,新たな関数をいろいろと定義しないといけないのかなと思っていたが,その必要も無く動くようになってしまった. 細かいところはch32funとrv003usbがやってくれているようである.
linuxでは,権限の問題をクリアするために,以下のコマンドを実行する.
echo -ne "KERNEL==\"hidraw*\", SUBSYSTEM==\"hidraw\", MODE=\"0664\", GROUP=\"plugdev\"\n" | sudo tee /etc/udev/rules.d/20-hidraw.rules sudo udevadm control --reload-rules sudo udevadm trigger
UIAPduinoに付属したminichlinkではうまく動かなかったので,ch32funに付属のminichlinkをつかって,以下のコマンドを実行する.
./minichlink -kT -c 0x1209d003
そして,inoの中でprintfで出力すると,その内容がターミナルに表示される.
UIAPduinoのためのch32funを使ったArduino環境は,ほぼ完成の領域に近づいたと言えるだろう. SPIはArduinoCoreAPIのHardwareSPI.hのどこかが悪さをしているみたいで,まだエラーが取れていないけど,このファイルを使うのを止めた方が早いかな. それぞれの機能が正常に作動するかや,複数の機能を使ったときにCH32V003のflashに入るかなど,検証すべき点は残されているが,大きな山は超えただろう. また,ArduinoIDEの設定については,理解していない部分が多い状態で,なんとか動く状態にしているので,無駄や美しくない部分も多いだろうから,それらを洗練していく必要はあるかも知れない. あとは,自分しか使わないのは勿体無い気がするので,どういった形で公開ができるかも考えないと.