2020-02-26 06:54:20 -05:00
|
|
|
BOOTBOOT Raspberry Pi 3 / 4 Implementation
|
|
|
|
==========================================
|
2018-06-05 14:34:03 -04:00
|
|
|
|
|
|
|
See [BOOTBOOT Protocol](https://gitlab.com/bztsrc/bootboot) for common details.
|
|
|
|
|
2020-02-26 06:54:20 -05:00
|
|
|
On [Raspberry Pi 3+](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/sdcard.md) board the bootboot.img
|
2018-06-05 14:34:03 -04:00
|
|
|
is loaded from the boot (or firmware) partition on SD card as kernel8.img by start.elf. For separating firmware and boot
|
|
|
|
partitions see [documentation](https://gitlab.com/bztsrc/bootboot/blob/master/bootboot_spec_1st_ed.pdf).
|
|
|
|
|
|
|
|
Machine state
|
|
|
|
-------------
|
|
|
|
|
|
|
|
In addition to standard mappings, the MMIO is also mapped in kernel space:
|
|
|
|
|
|
|
|
```
|
|
|
|
-128M MMIO (0xFFFFFFFFF8000000)
|
|
|
|
```
|
|
|
|
|
2019-02-07 18:41:34 -05:00
|
|
|
Code is running in supervisor mode, at EL1 on all cores. Dummy exception handlers are installed, but your kernel should use
|
|
|
|
it's own handlers as soon as possible.
|
2018-06-05 14:34:03 -04:00
|
|
|
|
|
|
|
File system drivers
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
For boot partition, RPi3 version expects FAT16 or FAT32 file systems (if the
|
|
|
|
initrd is a file and does not occupy the whole boot partition). The initrd can also be loaded over serial line,
|
2020-02-26 06:57:02 -05:00
|
|
|
running [raspbootcom](https://gitlab.com/bztsrc/bootboot/blob/master/aarch64-rpi/raspbootcom.c) or
|
|
|
|
[USBImager](https://gitlab.com/bztsrc/usbimager) on a remote machine.
|
2018-06-05 14:34:03 -04:00
|
|
|
|
|
|
|
Gzip compression is not recommended as reading from SD card is considerably faster than uncompressing.
|
|
|
|
|
|
|
|
Installation
|
|
|
|
------------
|
|
|
|
|
|
|
|
1. Copy __bootboot.img__ to **_FS0:\KERNEL8.IMG_**.
|
|
|
|
|
2019-03-14 21:48:34 -04:00
|
|
|
2. You'll need other [firmware files](https://gitlab.com/raspberrypi/firmware/tree/master/boot) as well (bootcode.bin, start.elf, fixup,dat).
|
2018-06-05 14:34:03 -04:00
|
|
|
|
|
|
|
3. If you have used a GPT disk with ESP as boot partition, then you need to map it in MBR so that Raspberry Pi
|
|
|
|
firmware could find those files. The [mkboot](https://gitlab.com/bztsrc/bootboot/blob/master/aarch64-rpi/mkboot.c)
|
|
|
|
utility will do that for you.
|
|
|
|
|
|
|
|
Limitations
|
|
|
|
-----------
|
|
|
|
|
|
|
|
- Initrd in ROM is not possible
|
|
|
|
- Maps only the first 1G of RAM.
|
|
|
|
- Cards other than SDHC Class 10 not supported.
|
|
|
|
- Raspberry Pi does not have an on-board RTC, so always 0000-00-00 00:00:00 returned as bootboot.datetime.
|
2018-11-09 06:43:03 -05:00
|
|
|
- Only supports SHA-XOR-CBC cipher, no AES
|