以下の内容はhttps://retrospective.hatenadiary.com/entry/20250720/1753012813より取得しました。


PicoRuby ESP32 Portingのプルリクチャンス事例紹介 #picoruby256

PicoRubyに含まれるmrbgemのひとつpicoruby-watchdogへのESP32版未実装機能へのPull Requestを作成しました。アドバイス、レビュー、マージありがとうございました。

この記事ではどういう過程でこれに至ったかを解説して、ESP32 PortingやPicoRubyのmrbgemへの機能実装の参考になればと思っています。

発端

こちらがTLに流れてきました。

x.com

示されたページをみてpicoruby/mrbgems/picoruby-watchdog/ports/esp32 /watchdog.c ということで、このmrbgemのESP32のみの事情というのが実装からも理解しました

先行事例をみる

逆に言うとRP2040は実装済みということです。

github.com

#include "hardware/watchdog.h" もあるし、watchdog_reboot関数は独自に書かれたものではなくRP2080のドライバー層にあるんだろうと当たりをつけました。

尋ねる

RP2080ではwatchdog_rebootで再起動ができる。ならばESP32のESP-IDFにも似たようなものがあるのではないかと、LLMに問い合わせます。 そうするとESP32での所定の時間をdelayする方法と再起動をかける方法の回答を得られたのでとりあえず組み込んでみました。

作り込む

この段階でなんとリブートに成功しました。

x.com

この段階ではバイコぶっ込んだだけの荒削りですので、ここから本当に書くべきコードの絞り込み、裏取り、パラメーター理解、他の解法の調査など、磨き上げに入っていきました。

プルリク作り

改めて改修前の挙動を記録した上で、今回のパッチを当てて稼働確認と記録をとり、プルリク作成をしました。

せっかく関西での #picoruby256 ということで、551のある時ない時を念頭に置きつつ、Not Implemented/Implemented動画として埋め込みました。

github.com

ちなみに

このmrbgem、他にも /* Not implemented */ つまりプルリクチャンスがあります。

https://github.com/picoruby/picoruby/blob/master/mrbgems/picoruby-watchdog/ports/esp32/watchdog.c#L30

RubyKaigi 2025やPicoRuby Overflow 会議でPicoRubyやPortingに興味を持った方はここでトライしてみるといいんじゃないでしょうか。




以上の内容はhttps://retrospective.hatenadiary.com/entry/20250720/1753012813より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14