Skip to content

Add SocInterface for Silicon Labs EFM32GG11 (dual-bank OTA UF2)#93

Open
RAR wants to merge 1 commit into
libretiny-eu:masterfrom
RAR:feat/silabs-efm32gg11-soc
Open

Add SocInterface for Silicon Labs EFM32GG11 (dual-bank OTA UF2)#93
RAR wants to merge 1 commit into
libretiny-eu:masterfrom
RAR:feat/silabs-efm32gg11-soc

Conversation

@RAR

@RAR RAR commented Jun 16, 2026

Copy link
Copy Markdown

Adds a SocInterface for the Silicon Labs EFM32GG11 family so ltchiptool uf2 write can pack a dual-bank OTA UF2 for LibreTiny's silabs-efm32gg11 chip family (WGM160P / EFM32GG11B820).

What

  • New ltchiptool/soc/efm32gg11/ (EFM32GG11Main), mirroring the existing SoC plugins; reports OTAType.DUAL.
  • Registered in SocInterface.get() and get_family_names() for family silabs-efm32gg11 (id 0xEF326611).

Why minimal

uf2tool's UF2Writer.write() only needs soc.ota_type — the partition table is built from the board JSON flash regions and the diff32 binpatch is computed by the writer. Flashing on this family is done over SWD / Simplicity Commander rather than ltchiptool, so the flash_* / elf2bin methods are intentionally left at the base NotImplementedError (none are exercised by uf2 write).

OTA scheme

Jump-based A/B dual-bank: DEVICE_DUAL_1 → ota1 (bank A @ 0x008000), DEVICE_DUAL_2 → ota2 (bank B @ 0x100000, carried as a diff32 binpatch over bank A).

Validation

  • Host round-trip: uf2 write from two real bank images, then uf2 dump -s device1/device2, reconstructs both banks byte-exact.
  • On-device end-to-end: a WGM160P (EFM32GG11B820) applied the resulting .uf2 via LibreTiny's Arduino Update API; the first-stage bootloader switched banks and the new image booted and confirmed.

🤖 Generated with Claude Code

Registers the silabs-efm32gg11 family (id 0xEF326611) in SocInterface.get()
and get_family_names(), backed by a minimal EFM32GG11Main reporting
OTAType.DUAL. This lets 'ltchiptool uf2 write' pack a dual-bank OTA image
(DEVICE_DUAL_1 -> ota1 @ 0x008000, DEVICE_DUAL_2 -> ota2 @ 0x100000, with a
diff32 binpatch for bank B) for the LibreTiny EFM32GG11 chip family.

uf2tool's writer only needs ota_type from the SoC; the partition table is
built from the board JSON flash regions and binpatch is computed by the
writer, so flash/elf2bin methods are inherited (unused for 'uf2 write').
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.

1 participant