How umrover/mrover-esw works
MRover ESW is an embedded firmware repository for STM32 rover boards, with shared hardware/runtime libraries and Python utilities for CAN, configuration, and project generation. The main firmware workflows are board-specific: initialize peripherals, then run board logic that controls hardware or gathers sensor data; boards communicate over CAN. The sampled excerpts confirm several entry-point calls and BMC hardware setup, but do not show most application internals, so uncertain wiring is omitted.
Main entry points: controller.cpp BMC motor controller · can CAN utilities · Src/main.c Limit entry point · Src/main.c Science entry point
Components 22
Board firmware
- BMC motor controller
src/bmc/Src/controller.cpp - Limit board
src/lim/Src/lim.cpp - Science board
src/science/Src/science.cpp - PDLB board
src/pdlb/Src/pdlb.cpp - Absolute encoder board
src/abs/Src/abs.cpp - BMC entry point
src/bmc/Src/main.c - Limit entry point
src/lim/Src/main.c - Science entry point
src/science/Src/main.c - PDLB entry point
src/pdlb/Src/main.c
Shared libraries
- DBC runtime
lib/dbc/runtime/include/dbc_runtime.hpp - Frame processing
lib/dbc/runtime/src/frame_processor.cpp - DBC file parser
lib/dbc/runtime/src/file_parser.cpp - STM32 hardware drivers
lib/stm32/Inc - Control and utilities
lib/util/Inc
Python utilities
- CAN utilities
tools/esw/can - DBC parser / generator
tools/esw/can/dbc - Configuration tools
tools/esw/config - Project generation
tools/esw/cubemx
Starter projects
- Servo exercises
starter-projects/servo - Temperature / humidity exercise
starter-projects/temp-humidity/Src/th_sensor.cpp
Other components
- Rover host / operator
- CAN bus
Connections 8
- Limit entry point → Limit board: calls PostInit / Loop
- Science entry point → Science board: calls PostInit
- PDLB entry point → PDLB board: calls PostInit
- BMC motor controller → STM32 hardware drivers: initializes peripherals
- BMC motor controller → CAN bus: sends CAN messages
- Rover host / operator → CAN utilities: uses CAN tools
- CAN utilities → CAN bus: sends / monitors
- DBC parser / generator → DBC runtime: supports DBC workflow