Hi, welcome to the overview page for the SprinterOS board bringup project.
Bootloader
- The whole idea of a bootloader is that we want as little things set up as possible, so that we can hand off control to our kernel as soon as possible
- Majority of the setup will actually be done in the SprinterOS Kernel
- There are of course safety and critical stuff that can’t be skipped (consider in project plan)
- For SprinterOS, we only have one stage - the FSBL, and then control will be handed to kernel
- This “First Stage” will be broken into multiple substages to simulate actual boot. The design is as followed:
Substage 1 - CORE |
Substage 2 - MEMORY |
Substage 3 - CONTROL |
Configure main clock speed and peripheral clock speeds |
External Flash |
|
- SDMMC interface (micro SD)
- Idea is load kernel image here | Jump to kernel executive, clean up stuff we used in bootloader |
| Full UART logging | External SDRAM
- More info later. Probably through FMC and need hardware designed specifically for this | |
| Watchdog | Kernel SRAM loading procedure
- Checks, signatures etc | |
| Delay timer | | |
- Luxury (but important) features, to be implemented as bootloader updates
- A/B images, so we can have a backup of the boot image
- Different boot modes (actually implement them), UART boot etc
- Boot menu (like BIOS, almost, where you can adjust configs)
- Persistent boot log directory in onboard flash somewhere
- Debug LED breakout board with error code patterns
- Image safety and signed kernel image checks before loading
OS
We want to have a light weight RTOS that also supports major OS features. Below is a roadmap of implementation - from there, you can see how this is going to come together in the future.
- The user facing software (Default software) will be done using C++. It will be built on top of an app framework that is constant throughout all user facing apps.
GROUND WORK |
KERNEL CORE |
BSP Drivers |
Default Software |
|
Task Architecture |
|
|
- TCB, Taskbuf | Debug (UART) | User Facing CLI App
- Infinite functionalities |
| | Context Switching | Proper SD card partitioning | |
| | Basic IPC | Proper File system support | |
| | Scheduling algorithm & Queues | External Memory (if not enabled in bootloader) | |
| | Priorities | Ethernet | |
| | Memory management | USB | |
| | File System | NVIC | |
| | Heartbeat thread | Power Management | |
| | | | |