TL;DR
Arduinoで適当なスケッチを書いて転送するとおそらく復活します。別に復活させなくても、シリアルポートをちゃんと使うようにプログラムされたファームを書けば復活します。なので、なくなったからと言って慌てずに。
なにが起きたの?
みなさん大好きなRaspberry Pi Picoであります。安い・速いってことで、いろんなところで使われているのではないでしょうか。GPIOの数もたくさんあるし、互換ボードもたくさん出てるし、XIAOなんていう極小のボードもあるし。そんなわけで私も買ってあそんでみました。
開発環境には複数あって、
- RP2040 SDK
- Micro Python
- Arduino (PlatformIO)
などが使えますね。マイコンのプログラミングをPythonでやれるなんて、すごい話です。
それはさておき、RP40のSDKを使って下記のようなコードを書きました。
main.c
void main() { }
これをビルドしてボードにコピーすると。なんと!シリアルポートが消えるのです!
えっ?!どうすんの?
ということで、こんなふうに修正してみました。
main.c
#include <stdio.h>
#include "pico/stdio.h"
#include "pico/stdlib.h"
int main()
{
stdio_init_all();
}
ようするに、標準出力を初期化してみたわけですね。ところが、これでもまだシリアルポートは復活しません。
どうやら、プログラムが終了しちゃうといけないようです。ということで、下記のようにします。
#include <stdio.h>
#include "pico/stdio.h"
#include "pico/stdlib.h"
int main()
{
stdio_init_all();
for(;;) ;
}
無事にシリアルポートは復活しました。
最後に
ということで、普通にちゃんとシリアルポートを使うようになっているプログラムでは、シリアルポートは消えません。ひょっとしたら、PanicでCPUが停止するとシリアルポートは消えるのかもしれませんね。つまり、シリアルポートが意図せずに消えているのならば、おそらくファームウェアのプログラミングに問題があるのでしょう。