閑話 Thonny の最新版(4.1.7)でハングアップするのを回避する方法
ROMFSへの書き込み中にハングアップする現象は対策できているけれど、thonnyで再起動要求したとき、全く書き込めない現象はたまに起きる。
なんで?リセットしてるんじゃないの?
どうやら soft reset では micropython の管理してるメモリだけをリセットしてるんで、ハードウェアとかドライバの初期値あり変数は初期化しない仕様みたいだ。
でも、あまり関係しないと思うんだがなぁ。
もしかしてthonny のバージョンが古いせいか?と思ってチェックしたら 3.3.3 だった。最新は4.1.7。こりゃ古すぎる。なんでこれが入ってるんだっけ?
とりあえず最新版を入れちゃえ!と入れてみたら、現象が悪化した。再起動要求を出すと thonny の backend がハングアップする。
画面の右下のインタプリタ設定で選びなおして USB 接続しなおせばマトモにつながるようになるから何とか使えるけれど、なんだかな。
ログメッセージから考えると、micropython 側との通信に問題が起きてるっぽいんだよな。
もしかして picocalc 側から余計なデータを送信してるせいか?
と思って boot.py から os.dupterm(pc_terminal) 部分をコメントアウトしたら正常に使えるようになった。
謎すぎる。
ちなみにdupterm をコメントにすると、USBデバッガをつながないと操作できなくなる罠。
ぐぐったら USB デバッグ中かどうかの判定方法があった。
なので、boot.py に下記を追加して回避。
import machine
SIE_STATUS_REG = 0x50110000 + 0x50
SIE_CONNECTED = 1 << 16
SIE_SUSPENDED = 1 << 4
usbConnected = (machine.mem32[SIE_STATUS_REG] & (SIE_CONNECTED | SIE_SUSPENDED)) == SIE_CONNECTED
if not usbConnected:
os.dupterm(pc_terminal)
でもリセット後にROMFSに書き込めない現象は再発したので、真の解決にはなってないのです。




