Patrick Williams | b58112e | 2024-03-07 11:16:36 -0600 | [diff] [blame] | 1 | #@TYPE: Machine |
| 2 | #@NAME: genericarm64 |
Patrick Williams | 03514f1 | 2024-04-05 07:04:11 -0500 | [diff] [blame] | 3 | #@DESCRIPTION: Generic Arm64 machine for typical SystemReady IR/ES platforms, which |
Patrick Williams | b58112e | 2024-03-07 11:16:36 -0600 | [diff] [blame] | 4 | #have working firmware and boot via EFI. |
| 5 | |
| 6 | require conf/machine/include/arm/arch-armv8a.inc |
| 7 | |
| 8 | # Arm Base System Architecture says v8.0+ is allowed, but FEAT_CRC32 is required |
| 9 | DEFAULTTUNE = "armv8a-crc" |
| 10 | |
| 11 | MACHINE_FEATURES = "acpi alsa bluetooth efi keyboard pci qemu-usermode rtc screen usbhost vfat wifi" |
| 12 | |
Patrick Williams | b58112e | 2024-03-07 11:16:36 -0600 | [diff] [blame] | 13 | KERNEL_IMAGETYPE = "Image" |
| 14 | PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" |
| 15 | |
Patrick Williams | 03514f1 | 2024-04-05 07:04:11 -0500 | [diff] [blame] | 16 | # Install all the kernel modules into the rootfs |
| 17 | MACHINE_EXTRA_RRECOMMENDS += "kernel-modules" |
| 18 | # Install selected pieces of firmware |
| 19 | MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-wl12xx linux-firmware-wl18xx linux-firmware-rtl-nic" |
| 20 | |
| 21 | # Use an initramfs and populate it with the kernel modules and key firmware |
Patrick Williams | b58112e | 2024-03-07 11:16:36 -0600 | [diff] [blame] | 22 | INITRAMFS_IMAGE ?= "core-image-initramfs-boot" |
Patrick Williams | 03514f1 | 2024-04-05 07:04:11 -0500 | [diff] [blame] | 23 | PACKAGE_INSTALL:append:pn-core-image-initramfs-boot = " ${MACHINE_EXTRA_RRECOMMENDS}" |
Patrick Williams | b58112e | 2024-03-07 11:16:36 -0600 | [diff] [blame] | 24 | |
| 25 | IMAGE_FSTYPES ?= "wic" |
| 26 | WKS_FILE ?= "genericarm64.wks.in" |
| 27 | |
| 28 | EFI_PROVIDER ?= "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd-boot", "grub-efi", d)}" |
| 29 | |
| 30 | # Try to bring up one physical serial console, or a virtualized serial console |
| 31 | SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0" |
Patrick Williams | 03514f1 | 2024-04-05 07:04:11 -0500 | [diff] [blame] | 32 | |
| 33 | # Allow u-boot to be built for use with qemu-system-aarch64. |
| 34 | # This u-boot is _not_ suitable for use with real hardware, and the expectation |
| 35 | # of this machine is that real hardware comes with the firmware pre-loaded. |
| 36 | UBOOT_MACHINE = "qemu_arm64_defconfig" |
| 37 | |
| 38 | # runqemu configuration to run a genericarm64 image inside a qemu-system-aarch64. You will need |
| 39 | # to build u-boot explicitly. |
| 40 | IMAGE_CLASSES += "qemuboot" |
| 41 | QB_SYSTEM_NAME = "qemu-system-aarch64" |
| 42 | # Boot the virtual machine with either an emulated Cortex-A76, or the host if using KVM |
| 43 | QB_MACHINE = "-machine virt" |
| 44 | QB_CPU = "-cpu cortex-a76" |
| 45 | QB_CPU_KVM = "-cpu host -machine gic-version=3" |
| 46 | QB_SMP = "-smp 4" |
| 47 | # Boot into U-Boot and let that scan the disk for the next step, don't pass any kernel or filesystem hints |
| 48 | QB_DEFAULT_BIOS = "u-boot.bin" |
| 49 | QB_DEFAULT_KERNEL = "none" |
| 50 | QB_DEFAULT_FSTYPE = "wic" |
| 51 | QB_FSINFO = "wic:no-kernel-in-fs" |
| 52 | # Mount the wic rootfs as a virtio block device |
| 53 | QB_ROOTFS_OPT = "-drive id=root,file=@ROOTFS@,if=none,format=raw -device virtio-blk-pci,drive=root" |
Patrick Williams | 44b3caf | 2024-04-12 16:51:14 -0500 | [diff] [blame] | 54 | # Virtio graphics |
| 55 | QB_GRAPHICS = "-device virtio-gpu-pci" |
Patrick Williams | 03514f1 | 2024-04-05 07:04:11 -0500 | [diff] [blame] | 56 | # Virtio serial consoles |
| 57 | QB_SERIAL_OPT = "-device virtio-serial-pci -chardev null,id=virtcon -device virtconsole,chardev=virtcon" |
| 58 | QB_TCPSERIAL_OPT = "-device virtio-serial-pci -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon" |
| 59 | # Virtio networking |
| 60 | QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no" |