Renode multi-node simulation of the TEK-26E electronic architecture, aimed at CAN integration tests in CI.
abandoned. Everything below works and is reproducible:
- BMS (STM32F412RETx) and VCU (STM32F767VGTx) boot their real firmware
- Both reach their state machines with no faults raised
- Seven frames flow on the Powertrain hub, counted in virtual time
- Cell voltages.
Slave_XX_Voltagenever appears. The 12 ADBMS6830 on the isoSPI chain are not modelled, so the BMS has nothing to report. It logsChain BAD: expected 12, found 0but no longer faults, because the EEPROM setsBYPASS_CHECKS. Anything testing undervoltage, balancing or SOC needs a chain responder first — a device answering the ADBMS6830 command set with valid PEC15. - ADC readings. Renode 1.16.1 has no STM32F4 ADC model, so currents and temperatures read zero on the BMS.
- No watchdog. WWDG accepts writes and reads zero. A reset-by-watchdog path in the firmware will not reproduce.
- Signal-level assertions. Tests can only say "the frame arrived", not
"the signal is right". The DBCs in FSLART/T26_DBC plus
cantoolswould close this. - SocketCAN / ROS2 bridge. Linux only, never started.
| Path | What |
|---|---|
platforms/*.repl |
Minimal per-node platforms, built on upstream Renode CPU repls |
scripts/hubs.resc |
The CAN hubs + global quantum |
scripts/stubs.resc |
Stand-ins for the nodes that are not simulated |
peripherals/*.cs |
Models compiled at runtime by include |
scripts/<node>.resc |
One machine per node |
scripts/tek26e.resc |
Full scenario |
scripts/platform_check.resc |
Loads every platform with no firmware (syntax/address check) |
tests/*.robot |
Robot Framework suites for renode-test |
| Node | MCU | Base repl | CAN |
|---|---|---|---|
| BMS | STM32F412RETx | stm32f412.repl (pulls in stm32f4.repl) |
can1=Powertrain 1M, can2=Handcart 500k |
| VCU | STM32F767VGTx | stm32f777.repl |
can1=Data, can2=Powertrain, can3=Autonomous — all 1M |
| Node | Repo | Branch |
|---|---|---|
| BMS | https://github.com/FSLART/lart_bms | beta-v2.1 (Firmware/) |
| VCU | https://github.com/FSLART/VCU_STM32_Firmware_V1 | sensors_can |
DBCs live in https://github.com/FSLART/T26_DBC.
ELF paths are script variables defaulting to build/:
renode -e "$bms_elf=@/path/to/lart_bms.elf; $vcu_elf=@/path/to/vcu.elf; i @scripts/tek26e.resc"& "path\to\renode.exe" -e "i @scripts/dev.resc"scripts/debug.resc opens one GDB stub per node, port 3333 + node index. Kept
out of tek26e.resc so CI never waits for a debugger.
Monitor - no debugger, scales to the whole car:
sysbus GetSymbolAddress "masterCfg"
cpu PC
cpu LogFunctionNames true
sysbus LogPeripheralAccess sysbus.can2 true
logLevel -1 i2c1.eeprom