UIAPduinoのWindows11での動作確認
Debianを入れる前のWindowsPCが手元にあったので,改良中のUIAPduino用Arduino環境をWindows11でも試してみた. 結果から先に書くと,多少の苦労をしてWindowsでも無事に動くようになり,やはりUSB serialは動かなかったがHIDのターミナルで代替できる.
Windowsを立ち上げたのだが,秘密の質問を登録しろと言われたところで,挫けそうになったが,なんとか耐えて起動させることが出来た. まず,Arduino2.3.8をインストールして,それにAlexanderManderaさんの環境とUIAPduino環境を導入した. 私の環境を使えるようにするために,Linuxで~/Arduino/hardwareにおいていたファイルを,そのままWindowsのUsers/username/Documents/Arduino/hardwareに移した. 原理的にはこれで動くはずなのだが,コンパイル時にいろいろとエラーが出て,うまくいかなかった. Arduino1.8.19も試してみたが,駄目だった.
バグというのは,見つかってから考え直すと当たり前に思えるのだが,それまではなかなか原因が分からないものである. Linuxではコンパイルできるのに,Windowsではコンパイルできない原因を,様々な観点から探ってみたが,うまく行かなかった. AlexanderManderaさんの環境ではWindowsでもコンパイルできるので,そのplatform.txtを元に,少しずつエラーを解消していったら,その過程で原因を見つけることに成功した. megaavrでは,USB CDC用の関数がCDC.hで宣言されている. 私はそれを参考にして,CH32V003用のファイルを作り,同じくCDC.hという名前にした. 一方,rv003usbでは,USB CDCを使うために,TinyUSBのcdc.hというファイルを利用している. Linuxでは大文字と小文字を完全に別の文字として扱っているが,Windowsではこれらを同一視することがあり,これらの2つのファイル名が干渉していたのが問題だった. CDC.hなどをSerialCDC.hなどという名前に変えて,若干の調整を行ったら,Windowsでもコンパイルが通るようになった.
また,以前ざっと確認して駄目だったUSB serialをもう一度確認してみたが,やはりWindowsでは動かなかった. USB serialをプログラムしたUIAPduinoをUSBに繋ぐと,COM3はできるのだが,デバイスマネージャではビックリマークがついているし,Arduinoのシリアルモニタも動かなかった. なんとか工夫して動かせる可能性もあるかも知れないが,簡単では無いだろう. 一方で,HIDを利用したminichlinkのターミナルは,予想していた通りにWindowsでもうまく動いた. ch32funのminichlinkのフォルダから,minichlink.exeとlibusb-1.0.dllをダウンロードして,実行すると「VCRUNTIME140.dllが見つからないため」とか文句を言われるので,Visal C++再頒布可能パッケージのX64版をインストールする. すると,以下のコマンドでminichlinkのターミナルが開く.
minichlink.exe -kT -c 0x1209d003
キーボードからの入力は,画面には出ないがマイコンに出力され,送受信が可能である. minichlinkのターミナルを併用することで,一台のUIAPduinoのみでPCと通信できるので,バグ取りなどの効率が上がるだろう.
Windowsを使うストレスに耐えられなくなって来たので,動作確認の作業はこれで止めにすることにした. 例えば,コードを編集するために,エディタを選んで[一度だけ]を指定していたのだが,面倒になって[常時]を選択したら,拡張子が表示されなくなって,怒りそうになった. 拡張子を常に表示するように設定する方法を調べるのも面倒なので,そのままやったが,他にも様々なストレスを与えてくるので,私にしては頑張った方だろう. このPCは、そろそろDebianで上書きインストールしようと思う.
Windowsで作動することも確認できたので,あとは細かいバグ取りかな. まだ出来ていないことで思い付くことには,SPIとshiftとpulseの動作確認と,I2Cのslaveの実装があるが,他にも何かあるかも知れない.