新千葉 ガーベージ・コレクション

FPGA マガジンやインターフェースで書けなかったこと等をちょぼちょぼ書いてます。@ryos36

Arduino MKR ZERO 不安定(その後解決)

Arduino ZERO は今のところ質が悪い。もしかして IDE が 1.6.19 と古いせいかもしれないと思い現時点の最新版(1.8.13) を再インストール中。 f:id:ryos36:20210120154919p:plain

手元の Arduino の M0+(SAM D21 のARM) の MKR WAN 1300 はちょっとしたものをインストールすると Windows 側が USB Serial を見失ってしまう。何が悪いのだろうか不明。

Linux で調査。

[365770.323788] usb 1-1: new full-speed USB device number 94 using xhci_hcd
[365770.451841] usb 1-1: Device not responding to setup address.
[365770.659846] usb 1-1: Device not responding to setup address.
[365770.867757] usb 1-1: device not accepting address 94, error -71
[365771.592365] e1000e: eno1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[365844.004103] usb 1-1: new full-speed USB device number 96 using xhci_hcd
[365844.153594] usb 1-1: New USB device found, idVendor=2341, idProduct=0053, bcdDevice= 2.00
[365844.153600] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[365844.153605] usb 1-1: Product: Arduino MKRWAN1300
[365844.153608] usb 1-1: Manufacturer: Arduino LLC
[365844.169216] cdc_acm 1-1:1.0: ttyACM0: USB ACM device
[365844.170194] usbcore: registered new interface driver cdc_acm
[365844.170195] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[365852.320888] usb 1-1: USB disconnect, device number 96

一旦、ACMバイスとして認識された直後に USB disconnect している。理由は不明(USB のパケットをモニターする必要があるでしょう)。full speed だし。

これ、たぶん、バグだよね。bootloader が 2341 0053 で ACM として USB を動かした後に、アプリをロードして動かす。ところが、そのアプリがハング?(動作実績ありなのに)して、その後、USB シリアルを disconnect している。bootloader がアプリが終了した時に、そのまま書き込みモードにしてくれればいいのに。bootloader の作りに問題があるのでしょう(予測でしかないが)。

ちょっとした回避方法があり、電源を入れた直後に RST ボタンを2連打(早押し!!)すると、黄色い LED がゆっくり点滅して bootload モードになるみたい。RST ボタンといってもソフト的なものみたいで、電源投入直後にはたぶん GPIO 。その後、割り込みで RST ボタンにしているのでしょう。なので、この技は本当に電源投入直後にしか聞かないみたい。その上、ときどき、また暴走する。これもバグだよね、、、きっと。

これだと、なかなか ARM の環境には行けないね。Atmel も評判落としちゃうね。

後日談。バグでも何でもありませんでした。MKR のボードの裏には RESET のパッドがあります。これがウレタン?のクッションに刺していると GND に繋がって頻繁にリセットがかかる、、、というものでした。ウレタンから外したら安定するようになりましたとさ。