https://github.com/9elements/u-boot-acpi-project
https://github.com/9elements/u-boot-acpi-project
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/9elements/u-boot-acpi-project
- Owner: 9elements
- Created: 2024-06-20T15:15:56.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-10-30T12:55:38.000Z (8 months ago)
- Last Synced: 2025-02-16T19:09:48.734Z (4 months ago)
- Language: Go
- Size: 459 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Building the project
In order to build and test the project, we need a couple of ingridients.
The ingridients have been added as git submodules:branch: rpi-6.9.y-mcfg-quirk, remote: https://github.com/9elements/linux/
branch: main, remote: https://github.com/u-root/u-root.git
branch: master, remote: https://github.com/9elements/u-boot-acpiIt is expected by the reader, that he/she has already installed the neccessary toolchain (aarch64-linux-gnu).
This can be as easy as installing it using your package manager of choice.
It is also required that the `go` toolchain is installed as well as some typical system binaries that Linux needs in order to compile.## Building u-root
```
cd u-root
go build .
GOARCH=arm64 ./u-root -defaultsh gosh -o initramfs.cpio boot coreboot-app ./cmds/core/* ./cmds/boot/*
cd -
```## Building Linux kernel
```
cd linux
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
make bcm2711_defconfig
./scripts/kconfig/merge_config.sh .config ../acpi.conf ../uroot_initramfs.conf
make Image -j$(nproc)
make dtbs -j$(nproc)
cd -
```## Building u-boot
```
cd u-boot
ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- make rpi_4_acpi_defconfig
ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- make -j$(nproc)
cd -
```## Build u-boot enviroment
```
cd u-boot
./tools/mkimage -A arm64 -O linux -T script -C none -d ../boot_cmd.txt boot.scr
cd -
```## Flash contents to sdcard
Your SD card should have at least one partition:
512M FAT32 EFI partitionmount your sd card and copy all ingridients onto the SD Card
```
mount /dev/mmcblk0p0 /mnt
cp linux/arch/arm64/boot/Image /mnt
cp linux/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb /mnt
cp u-boot/u-boot.bin /mnt
cp u-boot/boot.scr /mnt
cp config.txt /mnt
cp bootcode.bin /mnt
cp start4.elf /mnt
unmount /mnt
```Now plug out the SD card and put it into the raspberry PI 4 B
## Workflow
## Testing in QEMU:
Starting with QEMU 9.0 you can run the RPI 4 in qemu:
Update boot_cmd.txt:
```
fatload mmc 1:1 ${kernel_addr_r} Image
fatsize mmc 1:1 Image
#setenv bootargs "console=ttyS0,115200 console=tty1"
bootefi ${kernel_addr_r}:${filesize} -
```To run u-boot and boot from MMC run:
```
qemu-system-aarch64 -machine raspi4b -kernel u-boot/u-boot.bin -cpu cortex-a72 -smp 4 -m 2G -drive file=raspbian.img,format=raw,index=0 -dtb linux/arch/arm64/boot/dts/broadcom/bcm2711-rpi-4-b.dtb -nographic
```
Note: Assumes you have *Image* copied into the raspbian.img image.