HomeCore 0.1.3 (07b5544)
Bare-metal personal computer firmware for Cortex-M
Loading...
Searching...
No Matches
Supported boards

HomeCore builds for three boards.

Each one selects an architecture, SoC, and board port at configure time through HOMECORE_BOARD; the portable kernel, shell, VFS, and G2BASIC code is the same on all of them. Only QEMU runs are validated. No board has been validated on physical hardware yet.

LM3S6965EVB TI Stellaris LM3S6965 in QEMU
CoreCortex-M3
Flash / RAM256 KB / 64 KB
Clock12.5 MHz (QEMU reset clock)
ConsoleUART0, QEMU serial
RoleDevelopment and regression target
QEMU tested in CIEmulator only
STM32F4DISCOVERY ST STM32F407VGT6
CoreCortex-M4F (soft float)
Flash / RAM1 MB / 128 KB
Clock16 MHz HSI
ConsoleUSART2, PA2/PA3
RoleLargest target
Builds in CIHardware pending
STM32VLDISCOVERY ST STM32F100RB
CoreCortex-M3
Flash / RAM128 KB / 8 KB
Clock24 MHz PLL
ConsoleUSART1, PA9/PA10
RoleSmallest target; STM32 code in QEMU
QEMU tested in CIHardware pending

Validation status

Status Meaning
QEMU tested in CI CI builds Debug and Release, then runs tests/qemu_files_test.py against the emulated board: system and file commands, sessions, create/remove cycles, and BASIC at the nesting limit.
Builds in CI CI cross-compiles Debug and Release. Nothing executes the firmware.
Hardware pending The port targets a physical board but has not been run on one. A successful build does not show that clocks, pins, or the UART work.
Emulator only The port relies on QEMU's reset state and does not configure real hardware.

Feature support

Every board runs the same firmware features. The differences are in clocking, console wiring, memory limits, and how each board is validated.

Feature LM3S6965EVB STM32F4DISCOVERY STM32VLDISCOVERY
Shell, sessions, RAM files, G2BASIC Yes Yes Yes (BASIC nesting 4, files up to 1 KB)
LEDs (LEDs) led0, console stand-in led0 to led3 on PD12-PD15 led0, led1 on PC9, PC8; console stand-ins in QEMU
Mounted filesystems (Files and storage) /ram: littlefs, 32 KB ramdisk /ram: FAT, 64 KB; /lfs: littlefs, 16 KB None (8 KB RAM)
1 kHz SysTick uptime Yes, guest time Yes, HSI accuracy Yes
Console UART0 (IRQ receive) USART2 (IRQ receive) USART1 (IRQ receive)
VFS device nodes /dev/uart0 to /dev/uart2 /dev/uart0 /dev/uart0
Clock setup None (QEMU reset state) HSI, 16 MHz PLL to 24 MHz (skipped in the QEMU build)
Main stack 3 KB 3 KB 2 KB
Buffered stdio Yes Yes No (saves about 2 KB of heap)
QEMU machine lm3s6965evb None stm32vldiscovery
CI Build + QEMU regression Build Build both presets + QEMU regression
Physical hardware Not covered Pending Pending

No board has a scheduler, privilege separation, authentication, or persistent storage; mounted volumes are ramdisks formatted at boot. The SVC and PendSV handlers panic on all targets.

Memory

Flash and RAM by board Bar chart. Flash: lm3s6965evb 256 KB, stm32f4discovery 1 MB, stm32vldiscovery 128 KB. RAM: lm3s6965evb 64 KB, stm32f4discovery 128 KB, stm32vldiscovery 8 KB. Flash (scale: 1 MB) RAM (scale: 128 KB) lm3s6965evb 256 KB 64 KB stm32f4discovery 1 MB 128 KB stm32vldiscovery 128 KB 8 KB

The 8 KB STM32VLDISCOVERY sets the lower bound for shell and VFS memory use. Its defconfig reduces the stack, file size, and BASIC nesting limits; see its memory budget.

Build presets

Configure and build a preset from the repository root with the project venv, as described in the development guide:

cmake --preset <preset> -DPython3_EXECUTABLE="$PWD/.venv/bin/python"
cmake --build --preset <preset>
Preset Board Defconfig
lm3s6965evb LM3S6965EVB configs/homecore_defconfig
lm3s6965evb-release LM3S6965EVB, Release configs/homecore_defconfig
stm32f4discovery STM32F4DISCOVERY configs/homecore_defconfig
stm32vldiscovery STM32VLDISCOVERY configs/stm32vldiscovery_defconfig
stm32vldiscovery-qemu STM32VLDISCOVERY in QEMU configs/stm32vldiscovery_defconfig + overlay src/board/stm32vldiscovery/qemu.yaml

Each preset builds into build/<preset>/, writing the ELF homecore and the raw image homecore.bin. A board uses configs/<board>_defconfig when that file exists and configs/homecore_defconfig otherwise.

Adding a board

New boards, SoCs, and CPUs follow the porting guide. Add a page for the new board here, alongside its Markdown guide in docs/boards/.

LM3S6965EVB (QEMU)
STM32F4DISCOVERY
STM32VLDISCOVERY