Repository navigation
Conversation
Forked from espressif_esp32s3_devkitc_1_n8r8 (same ESP32-S3-WROOM-1, N8R8 flash/PSRAM config). Differences from the devkit: - sdkconfig: RTC_CLK_SRC_EXT_CRYS instead of the internal RC oscillator. This board wires an external 32.768kHz crystal to IO15/IO16, which the devkit doesn't have. - pins.c/mpconfigboard.h: IO15/IO16 removed from board.* entirely once claimed by the crystal; MICROPY_HW_NEOPIXEL and the NEOPIXEL alias removed (no onboard addressable LED). - mpconfigboard.mk: USB_PRODUCT/USB_MANUFACTURER set to this board's own identity. USB_VID/USB_PID deliberately left as the fork parent's borrowed values because this board's USB is never exposed externally once shipped, so they're only ever seen by internal tooling.
dhalbert
left a comment
There was a problem hiding this comment.
To be clear, this is a board inside a particular nebulizer product, is that right? Are multiple people going to be using this definition? I am not sure we want to create a board definition that's built every time for such a specialized case.
|
@dhalbert that's a fair pushback. I took this route because of the device's need to use an external crystal for the RTC, and my understanding is that this has to be compiled into the image starting from the board's configuration. To answer directly, yes, this is for a single product that won't be shared. Given that, I agree I shouldn't have opened this PR. I do wish there was a generic way to turn on support for an external crystal that also allows for an easy way to keep up with the latest CP releases, but I understand that's not realistic. Sorry for the noise. |
No problem. I agree it would be nice to have some mechanism to maintain a fork that is kept up to date and rebuilt when upstream is updated. Claude had some ideas:GitHub has nothing built in that does this. A fork never syncs itself; the "Sync fork" button is manual. Nothing on adafruit's side can notify a fork when a PR merges, so the fork has to poll upstream with a scheduled Action. There are two workable setups.
Keep only boards/<board_id>/ and one workflow in a small repo; it doesn't need to be a fork. The workflow runs on schedule: (say daily) plus workflow_dispatch:, and:
Because nothing gets merged or pushed, there are no conflicts and no token permission problems. A tag-only variant (build when a new 9.x.y tag appears) might suit them better than every merge to main.
The fork keeps the board commit on top of upstream main. A scheduled job rebases it, force-pushes, then starts the build. There's a shortcut here: upstream's build-board-custom.yml already supports forks. With branch= it checks out fork/ and builds a single board, so the sync job only has to call gh workflow run build-board-custom.yml -f board=... -f branch=.... That works with the job's built-in GITHUB_TOKEN, even though pushes made with that token don't trigger other workflows. The drawbacks:
Gotchas for either setup
|
Summary
Adds a new board,
bionebicine_pds_2026, forked fromespressif_esp32s3_devkitc_1_n8r8(ESP32-S3-WROOM-1, N8R8 flash/PSRAM).Differences from the fork parent:
sdkconfig:CONFIG_RTC_CLK_SRC_EXT_CRYS=y. This board has an external 32.768kHz crystal on IO15/IO16, soRTC_SLOW_CLKuses it instead of the internal RC oscillator.pins.c/mpconfigboard.h: IO15/IO16 removed fromboard.*entirely, since they're claimed by the crystal.MICROPY_HW_NEOPIXELand theNEOPIXELalias removed (no onboard addressable LED).mpconfigboard.mk:USB_PRODUCT/USB_MANUFACTURERset to this board's own identity.USB_VID/USB_PIDintentionally left as the fork parent's values, because this board's USB is never exposed externally once shipped, so these are only ever seen by internal tooling.Testing
Built and flashed to real hardware. Confirmed correct
boot_out.txtboard identity, confirmed over REPL thatboard.*correctly excludesIO15/IO16/NEOPIXELwhilemicrocontroller.pinstill shows the real chip pins (as expected, since those pads physically exist), and confirmed the external crystal starts successfully via a one-off diagnostic-logging build (no fallback-to-internal-RC warning).