Announcement: MP1-Boot, an alternative bootloader to U-Boot (FSBL and SSBL) #8
Replies: 3 comments
-
Forgot to mention, I also created a script that generates a .uimg file from a .bin file. It's already merged into master, in scripts/uimg_header.py |
Beta Was this translation helpful? Give feedback.
-
Great work Dan |
Beta Was this translation helpful? Give feedback.
-
Ok, it's merged! I also added a new make target for the example projects: I also moved the pre-built U-Boot image files to /bootloaders/ Please let me know if anyone experiences any issues or has questions. |
Beta Was this translation helpful? Give feedback.
-
Just wanted to announce that I've been writing a light-weight (fast and small) alternative to U-Boot.
I've been wanting to do this since I started this project. It's a single-stage bootloader, meaning it replaces U-Boot's FSBL and SSBL (aka SPL and U-Boot proper). I'm pretty excited that it turned out to be everything that I hoped (<30kB and <100ms boot time)
It performs the minimal number of tasks needed to load an application image and boot into it. Specifically, it does this:
I'm calling it MP1-Boot (Minimal Performant Bootloader). The name also implies that while U-Boot is "Universal", this bootloader is only for MP1 chips.
It's in the
fsbl
branch, and I plan to merge it when I've double-checked everything is tight.So far it only supports booting from the SD Card or from NOR Flash (QSPI). It supports PMIC chips (found on the OSD32 and Discovery boards) as well as discrete LDO boards (custom PCBs). I still have some TODO items to optimize it better, but it's quite fast and stable so far.
The main() code is very short and simple, so if you need a custom boot procedure, it should be easy to add. For instance, if you need to select the boot medium based on user input (i.e. firmware update button), or if you need to initialize a codec/dac and play audio immediately power-up, etc etc., it should be as easy to add.
As of now, all the example projects require U-Boot to be installed on the SD Card. Once this is merged, you can choose U-Boot or MP1-Boot for any project.
U-Boot has the advantage of letting you re-load the application binary with a normal OS copy of the .uimg file to a FAT volume (via USB gadget or via SD Card inserted into computer). This is very convenient and easy for beginners. But, boot time is slow (7 seconds at worst).
MP1-Boot has the advantage of loading very quickly, which can also save development time. Loading a new .uimg file will require either using
dd
or via a custom script (personally I use a custom script to transfer my .uimg directly to on-board NOR Flash on a custom PCB).Beta Was this translation helpful? Give feedback.
All reactions