How oszimilian/yellowpirat works
This repository implements an FPGA-based Briey embedded system with firmware for CAN recording and Ethernet networking. The principal runtime path starts in software/app/main.c: it initializes DMA, Ethernet and CAN-flow state, creates FreeRTOS tasks, then starts the scheduler. Network tasks serve TCP or optional UDP traffic; CAN recording and Ethernet receive run as separate tasks. The bootloader loads an application image from LittleFS-backed SD storage into SDRAM and jumps to it. Hardware modules and broader protocol capabilities are identified from the tree; their internal wiring was not established by the sampled excerpts.
Main entry points: app/main.c Application entry · can_rec.c CAN recorder task · yp_flow.c CAN flow state · bootloader/main.c Bootloader
Components 28
Firmware runtime
- Application entry
software/app/main.c - FreeRTOS scheduler
software/freertos/tasks.c - CAN recorder task
software/app/src/can_rec.c - Ethernet RX task
software/app/src/eth_task.c - TCP server task
software/app/src/tcp.c - UDP server task
software/app/src/udp.c - CAN flow state
software/app/src/yp_flow.c - UART task
software/app/src/uart_task.c - Task statistics
software/app/src/task_trace.c - Fault handling
software/app/src/fault.c
Hardware I/O
- Briey SoC
cpu/src/main/scala/briey.scala - CTU CAN hardware
can/src/main/scala/ctu_can/ctu_can.scala - Ethernet MAC
ethernet/src/main/scala/ypethmac/eth_mac.scala - DMA hardware
dma/src/main/scala/dma/dma.scala - CAN driver
software/ctucan/src/ctucan.c - DMA driver
software/dma/src/dma.c - Ethernet driver
software/eth/src/eth.c
Network stack
- lwIP networking
software/lwip/src/core/netif.c - TCP transport
software/lwip/src/core/tcp.c - UDP transport
software/lwip/src/core/udp.c
Boot and storage
- Bootloader
software/bootloader/main.c - LittleFS
software/littlefs/src/lfs.c - SD/MMC interface
software/sdcard/inc/sdmmc.h - Application SDRAM
Other components
- CAN network
- Ethernet peer
- UART console
- FreeRTOS runtime
Connections 28
- Application entry → DMA driver: initializes DMA
- Application entry → Ethernet driver: initializes and starts
- Application entry → CAN flow state: initializes flow
- Application entry → FreeRTOS scheduler: creates tasks; starts
- Application entry → CAN recorder task: registers task
- Application entry → Ethernet RX task: registers task
- Application entry → TCP server task: registers task
- Application entry → UDP server task: optional task
- Application entry → UART task: registers task
- Application entry → Task statistics: registers task
- FreeRTOS scheduler → FreeRTOS runtime: runs tasks
- CAN recorder task → CAN flow state: uses CAN state
- CAN recorder task → DMA driver: uses DMA
- CAN recorder task → CAN network: records frames
- Ethernet RX task → Ethernet driver: receives frames
- TCP server task → CAN flow state: serves CAN state
- UDP server task → CAN flow state: serves CAN state
- TCP server task → TCP transport: uses TCP
- UDP server task → UDP transport: uses UDP
- Ethernet driver → lwIP networking: network interface
- lwIP networking → Ethernet peer: exchanges packets
- UART task → UART console: communicates
- Ethernet MAC → DMA hardware: hardware integration
- CTU CAN hardware → CAN network: CAN frames
- Bootloader → LittleFS: reads image
- LittleFS → SD/MMC interface: storage I/O
- Bootloader → Application SDRAM: copies application
- Bootloader → Application entry: jumps to loaded image