Raspi3b+ support
This issue cover what is necessary for running Redox OS in raspi3b+(ARM64 device)
-
- Build u-boot to run
bootloader.efi
with the user-specific Device Tree Blob(DTB) file.
- Build u-boot to run
-
- Pass the dtb file to Redox's kernel.
-
- Redox's kernel parses dtb file.
-
- Redox installer support adding files to specific partition, for example, writing the dtb file
/DTB/BROADCOM/bcm2837-rpi-3-b.dtb
to EFI partition.
- Redox installer support adding files to specific partition, for example, writing the dtb file
-
- Commands for running and debugging Redox OS in qemu.
-
- Steps for running Redox OS in read hardware(raspi3b+).
uboot
demo: https://gitlab.redox-os.org/Ivan/u-boot/-/tree/redox/v2022.07?ref_type=heads
bootloader
demo: https://gitlab.redox-os.org/Ivan/bootloader/-/tree/ivan/raspi3b?ref_type=heads
kernel
demo: https://gitlab.redox-os.org/Ivan/kernel/-/tree/ivan/raspi3b?ref_type=heads
installer
demo: https://gitlab.redox-os.org/Ivan/installer/-/tree/ivan/raspi3b?ref_type=heads
https://gitlab.redox-os.org/Ivan/redox_firmware.git
Installation(run as root):
#!/bin/sh
#
mount -o loop,offset=$((2048*512)) build/aarch64/server/harddrive.img /mnt/efi_boot
mkdir -p /mnt/efi_boot/dtb/broadcom/
dtc -I dts -O dtb ~/code/redox_project/redox_firmware/platform/raspberry_pi/rpi3/bcm2837-rpi-3-b-plus.dts > bcm2837-rpi-3-b-plus.dtb
cp bcm2837-rpi-3-b-plus.dtb /mnt/efi_boot/dtb/broadcom/bcm2837-rpi-3-b.dtb
umount /mnt/efi_boot
exit
cookbook
demo: https://gitlab.redox-os.org/Ivan/cookbook/-/tree/ivan/raspi3b?ref_type=heads
qemu
QEMU emulator version 7.2.3 (v7.2.3) or upper.
command
run:
SDL_VIDEO_X11_DGAMOUSE=0 qemu-system-aarch64 -M raspi3b -smp 4,cores=1 \
-serial stdio -display none\
-kernel build/aarch64/server/u-boot.bin \
-sd build/aarch64/server/harddrive.img
run with debug:
SDL_VIDEO_X11_DGAMOUSE=0 qemu-system-aarch64 -M raspi3b -smp 4,cores=1 \
-serial stdio -display none\
-kernel build/aarch64/server/u-boot.bin \
-sd build/aarch64/server/harddrive.img \
-chardev socket,path=/tmp/gdb-socket,server=on,wait=off,id=gdb0 -gdb chardev:gdb0 -S
gdb:
./prefix/aarch64-unknown-redox/relibc-install/bin/aarch64-unknown-redox-gdb --eval-command="target remote /tmp/gdb-socket"
Real hardware support
TBD