Skip to content

feat: support for Adafruit ESP32-S3 Feather TFT board - #5857

Draft
trichner wants to merge 2 commits into
tinygo-org:devfrom
trichner:board-feather-esp32s3-tft
Draft

trichner wants to merge 2 commits into
tinygo-org:devfrom
trichner:board-feather-esp32s3-tft

Conversation

@trichner

@trichner trichner commented Oct 10, 2026 •

Copy link
Copy Markdown

This is a start to support the following board: https://learn.adafruit.com/adafruit-esp32-s3-tft-feather/pinouts

It seems though there are a few decisions to make and I'd be happy for some input:

  1. How to flash this via tinygo, some options:
    a) via UF2 bootloader - that's what comes pre-loaded
    Note: This would need tinygo to be able to deal with non-contiguous uf2 ROM sections - as far as I could figure out this is not yet supported.
    b) via esptool / openocd - the board has direct JTAG via USB
    What's the preferred approach?

  2. I can flash/debug with openocd, though it seems the linkerscript might need some tweaks - any hints/help would be welcome. Currently it fails after flashing during verification.

Thanks for feedback!

@trichner

Copy link
Copy Markdown
Author

alright, can successfully flash:

../tinygo/build/release/tinygo/bin/tinygo flash -target feather-esp32s3-tft -x -port /dev/ttyACM0 ./main.go
ld.lld --gc-sections --wrap=malloc --wrap=calloc --wrap=free --wrap=realloc --wrap=ppCheckTxConnTrafficIdle -L /home/trichner/workspaces/tinygo/build/release/tinygo -T targets/esp32s3.ld -o /tmp/tinygo3849294902/main /tmp/tinygo3849294902/main.o /home/trichner/.cache/tinygo/compiler-rt-xtensa-esp32s3/lib.a /home/trichner/.cache/tinygo/obj-17e8abf63bccdcef02cb8c13350cf33324e80617707f0778e82d18fb.bc /home/trichner/.cache/tinygo/obj-2848f8d24857f621e51bd9cf2ef16f17f85e4873ec06010477a2efc7.bc /home/trichner/.cache/tinygo/obj-d2cd8c764723726e7aaf0a87c056effe653d9ad374a813d2d78359d8.bc /home/trichner/.cache/tinygo/obj-7616e8314f2f2720e788e8308dc9663fc1b82d91140dd34b77517dd5.bc /home/trichner/.cache/tinygo/picolibc-xtensa-esp32s3-v2/lib.a -mllvm -mcpu=esp32s3 -mllvm -mattr=+bool,+clamps,+coprocessor,+debug,+density,+div32,+esp32s3ops,+exception,+fp,+highpriinterrupts,+interrupt,+loop,+mac16,+minmax,+miscsr,+mul32,+mul32high,+nsa,+prid,+regprotect,+rvector,+s32c1i,+sext,+threadptr,+windowed --lto-O2 --thinlto-cache-dir=/home/trichner/.cache/tinygo/thinlto -mllvm --rotation-max-header-size=0
Connecting to /dev/ttyACM0...
Connected.
Detected chip: ESP32-S3
USB-JTAG/Serial interface detected, disabling watchdogs
Loading stub loader...
Stub running.
Erasing flash...
[##################################################]  100.0%
Flash erased.
Attaching SPI flash...
Configuring flash size...
Auto-detected flash size: 4MB
Flash params set to 0x022F
SHA digest in image updated
Attaching SPI flash...
Switching to 460800 baud...
Running at 460800 baud.
Compressed 7936 bytes to 4872 (61%)
Flash begin: 4872 bytes at 0x00000000 (1 compressed blocks)
[##################################################]  100.0%
Flash complete. Verifying...
MD5 verified: 586e80be8a32fa6ff279fe8b8fbba463

Device reset.

Two conditions:

  1. Device needs to be in flash mode (press BOOT, then RST).
  2. Device needs an additional manual RST after flashing

In case the device is not in the right mode tinygo will just hang during flashing :/
Any way I can improve that easily?

@trichner

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants