3.3 KiB
3.3 KiB
How to make a simple unikernel on RBPi
File required on Raspberry Pi 5:
- bcm2712-rpi-5-b.dtb (https://github.com/raspberrypi/firmware/blob/master/boot/bcm2712-rpi-5-b.dtb)
- overlays/bcm2712d0.dtbo (https://github.com/raspberrypi/firmware/blob/master/boot/overlays/bcm2712d0.dtbo)
- config.txt
CPU used by Raspberry Pi 5: Cortex-A76 BCM2712 is the Broadcom chip used by Raspberry Pi 5
Memory layout
Gilbraltar has a fairly precise memory layout. Here are the different zones (heap, stacks, etc.).
Base | Size | Contents | Remarks |
---|---|---|---|
00000000 | 32 KByte | ARM Trusted Firmware | BL31 |
0006F000 | 4 KByte | EL3 Stack | |
00070000 | 2 KByte | Exception vector table EL3 | |
... | |||
00080000 | max. 6 MByte | Kernel image | |
.init | startup code | ||
.text | |||
.rodata | |||
.data | |||
.bss | |||
... | |||
Kernel stacks | |||
00280000 | 128 KByte | for Core 0 | |
002A0000 | 128 KByte | for Core 1 | |
002C0000 | 128 KByte | for Core 2 | |
002E0000 | 128 KByte | for Core 3 | |
00300000 | End of stacks | ||
Exception stacks | |||
00300000 | 32 KByte | for Core 0 | |
00308000 | 32 KByte | for Core 1 | |
00310000 | 32 KByte | for Core 2 | |
00318000 | 32 KByte | for Core 3 | |
00320000 | End of exception stacks | ||
IRQ stack | |||
00320000 | 32 KByte | for Core 0 | |
00328000 | 32 KByte | for Core 1 | |
00330000 | 32 KByte | for Core 2 | |
00338000 | 32 KByte | for Core 3 | |
00340000 | End of IRQ stacks | ||
FIQ stack | |||
00340000 | 32 KByte | for Core 0 | |
00348000 | 32 KByte | for Core 1 | |
00350000 | 32 KByte | for Core 2 | |
00358000 | 32 KByte | for Core 3 | |
00360000 | End of FIQ stacks | ||
00500000 | 4 MByte | Coherent region | |
00900000 | |||
1b000000 | 16 MByte | Pager | |
1c000000 | |||
40000000 | Heap | ||
... | |||
100000000 | 8192 MB | Heap | |
1000000000 | 16 MByte | AXI peripherals |