2025-06-01 12:29:31 +02:00
2025-06-01 12:29:31 +02:00
2025-05-25 19:43:16 +02:00
2025-05-05 21:23:04 +02:00
2025-05-04 13:19:25 +02:00
2025-05-05 21:23:04 +02:00
2025-05-04 13:19:25 +02:00
2025-05-25 19:43:16 +02:00
2025-05-08 20:21:45 +02:00
2025-05-04 13:19:25 +02:00

PicoCalc "southbridge" custom BIOS

This is my personnal rewrite of the original PicoCalc STM32F103R8T6 firmware.

Features differences

The main differences with the original firmware are the followings:

  • drastic reduction in the STM32's electricity consumption when running (~3.5 mA),
  • clean up (by removing stm32duino dependencies, use STM32HAL instead, maybe I'll switch to libopencm3 someday...) to reduce binary size (~25 KB) and allow more features to be implemented,
  • added configuration saving solution (using internal flash, including backlight option),
  • new I2C registers and structure (keeping compatible access to REG_ID_TYP and REG_ID_VER registers to check how to handle comm from pico board side),
  • interrupt event output to pico board can be configured during runtime (for keyboard event or RTC alarm),
  • rewriten or added some debug UART interface message,
  • internal RTC access through dedicated I2C registers (WIP),
  • lighten AXP2101 PMIC driver.

Compile

This source code can be compiled using ARM gcc toolchain (using v13) in path and using make program.

CAUTION: By default, I2C registers use a new, exploded structure that is more flexible! But this makes them incompatible with official firmware. (More details to come about I2C registers structure in the wiki...)

If you plan using pico official firmware (PicoMite, etc.), you should set I2C_REGS_COMPAT = 1 in the Makefile.

Important notes

The current implementation of this firmware is subject to change until the v1 release.

The permanent settings (EEPROM) save can be broken between 0.x version, it is recommanded to make a full flash erase before updating, as EEPROM configuration survives update.

Credits

Description
Picocalc STM32F103R8T6 custom firmware
Readme LGPL-3.0 806 KiB
Languages
C 91.8%
Assembly 5%
Makefile 3.2%