$ wget https://github.com/u-boot/u-boot/archive/refs/tags/v2024.04.tar.gz -O u-boot-v2024.04.tar.gz
$ tar xzvf u-boot-v2024.04.tar.gz
$ cd u-boot-2024.04
$ make clean && make distclean
(arm)
$ make vexpress_ca9x4_defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-
$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-
(aarch64)
//$ make vexpress_ca9x4_defconfig ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-
//$ make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-
//
$ export ARCH=arm64
$ export CROSS_COMPILE=aarch64-none-linux-gnu-
$ make vexpress_ca9x4_defconfig
$ make -j4
// or for qemu_defconfig
(arm)
$ make qemu_arm_defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-
$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-
(arm64)
$ export ARCH=arm64
$ export CROSS_COMPILE=aarch64-none-linux-gnu-
$ make qemu_arm64_defconfig
$ make -j4
Linux Kernel
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.277.tar.xz
$ tar xJvf linux-5.4.277.tar.xz
$ cd linux-5.4.277
$ make clean && make distclean
(x86_64)
$ make defconfig
$ make -j4
(arm)
//$ make versatile_defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-
$ make vexpress_defconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-
$ make menuconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-
// VersatilePB
- Kernel Features -> Use the ARM EABI to compile the kernel
-> Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
- System Type
-> MMU-based Paged Memory Management Support
-> Multiple platform selection -> ARMv5 based platforms (...)
-> ARM Ltd. Versatile Express family --->
// vexpress
- Kernel Features -> Use the ARM EABI to compile the kernel
//-> Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
- System Type
-> MMU-based Paged Memory Management Support
-> Multiple platform selection -> ARMv6 based platforms (...)
-> Multiple platform selection -> ARMv7 based platforms (...)
-> ARM Ltd. Versatile Express family --->
$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabihf-
(aarch64)
////$ make versatile_defconfig ARCH=arm64
//$ make vexpress_defconfig ARCH=arm
//$ make menuconfig ARCH=arm64
//$ make -j4 ARCH=arm64 CROSS_COMPILE=aarch64-none-linux-gnu-
//
$ export ARCH=arm64
$ export CROSS_COMPILE=aarch64-none-linux-gnu-
//$ make defconfig
$ make vexpress_defconfig
$ make menuconfig
$ make -j4
$ wget https://www.buildroot.org/downloads/buildroot-2024.02.2.tar.xz
$ tar xJvf buildroot-2024.02.2.tar.xz
$ cd buildroot-2024.02.2
$ make clean && make distclean
//$ make list-defconfigs
$ make qemu_arm_vexpress_defconfig
$ make -j4
1.
VFS: Cannot open root device "ram" or unknown-block(1,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
1f00 131072 mtdblock0
(driver?)
1f01 32768 mtdblock1
(driver?)
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.277 #1
Hardware name: ARM-Versatile Express
==> -append "root=/dev/mmcblk0 rw rdinit=/bin/sh console=ttyAMA0,115200"
2.
Run /init as init process
Alignment trap: not handling instruction f8530b04 at [<0001225a>]
...
https://gitlab.com/qemu-project/qemu/-/issues/2326
==> USE QEMU 7.2.x
Create a bootable ISO file
// for grup-mkrescue
$ sudo apt-get install grub-common
$ sudo apt-get install xorriso
$ git clone https://github.com/godmode2k/linux_bsp_test.git
$ cd linux_bsp_test/bootable_iso
(EDIT .sh environment first)
SEE:
- init_add_files_arm32bit.sh
- run_qemu_arm32bit_iso.sh
// initrd: busybox-1.36.1 (initrd.cpio.gz)
// Linux Kernel: linux-5.4.277 (arch/arm/boot/zImage, arch/arm/boot/dts/vexpress-v2p-ca9.dtb)
// creates ISO
$ sh init_add_files_arm32bit.sh
// run QEMU with new bootable ISO
$ sh run_qemu_arm32bit_iso.sh