60 lines
3.3 KiB
Markdown
60 lines
3.3 KiB
Markdown
# 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 |
|