Explorar o código

Add genericarm64 MACHINE

This is a new 64-bit "generic" Arm machine, that expects the hardware to
be SystemReady IR compatible.

(From meta-yocto rev: 68de209f58917d8e7108caacfefc55bbe0e0c5a2)

Signed-off-by: Ross Burton <ross.burton@arm.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Ross Burton hai 1 ano
pai
achega
2f4f72fff2

+ 1 - 0
meta-poky/conf/templates/default/local.conf.sample

@@ -31,6 +31,7 @@
 # demonstration purposes:
 # demonstration purposes:
 #
 #
 #MACHINE ?= "beaglebone-yocto"
 #MACHINE ?= "beaglebone-yocto"
+#MACHINE ?= "genericarm64"
 #MACHINE ?= "genericx86"
 #MACHINE ?= "genericx86"
 #MACHINE ?= "genericx86-64"
 #MACHINE ?= "genericx86-64"
 #
 #

+ 17 - 1
meta-yocto-bsp/README.hardware.md

@@ -28,6 +28,7 @@ Hardware Reference Boards
 The following boards are supported by the meta-yocto-bsp layer:
 The following boards are supported by the meta-yocto-bsp layer:
 
 
   * Texas Instruments Beaglebone (beaglebone-yocto)
   * Texas Instruments Beaglebone (beaglebone-yocto)
+  * General 64-bit Arm SystemReady platforms (genericarm64)
   * General IA platforms (genericx86 and genericx86-64)
   * General IA platforms (genericx86 and genericx86-64)
 
 
 For more information see the board's section below. The appropriate MACHINE
 For more information see the board's section below. The appropriate MACHINE
@@ -55,7 +56,8 @@ Consumer Devices
 
 
 The following consumer devices are supported by the meta-yocto-bsp layer:
 The following consumer devices are supported by the meta-yocto-bsp layer:
 
 
-  * Intel x86 based PCs and devices (genericx86)
+  * Arm-based SystemReady devices (genericarm64)
+  * Intel x86 based PCs and devices (genericx86 and genericx86-64)
 
 
 For more information see the device's section below. The appropriate MACHINE
 For more information see the device's section below. The appropriate MACHINE
 variable value corresponding to the device is given in brackets.
 variable value corresponding to the device is given in brackets.
@@ -126,6 +128,20 @@ USB Device:
        dd command to write the image to a USB stick.
        dd command to write the image to a USB stick.
 
 
 
 
+SystemReady Arm Platforms
+=========================
+
+The genericarm64 MACHINE is designed to work on standard SystemReady IR
+compliant boards with preinstalled firmware.
+
+The genericarm64 MACHINE is currently tested on the following platforms:
+
+  * Texas Instruments BeaglePlay
+
+The images built are EFI bootable disk images and can be written directly to a
+SD card for booting, for example.
+
+
 Texas Instruments Beaglebone (beaglebone-yocto)
 Texas Instruments Beaglebone (beaglebone-yocto)
 ===============================================
 ===============================================
 
 

+ 29 - 0
meta-yocto-bsp/conf/machine/genericarm64.conf

@@ -0,0 +1,29 @@
+#@TYPE: Machine
+#@NAME: genericarm64
+#@DESCRIPTION: Generic Arm64 machine for typical SystemReady platforms, which
+#have working firmware and boot via EFI.
+
+require conf/machine/include/arm/arch-armv8a.inc
+
+# Arm Base System Architecture says v8.0+ is allowed, but FEAT_CRC32 is required
+DEFAULTTUNE = "armv8a-crc"
+
+MACHINE_FEATURES = "acpi alsa bluetooth efi keyboard pci qemu-usermode rtc screen usbhost vfat wifi"
+
+# Install all the kernel modules and all the firmware
+MACHINE_EXTRA_RRECOMMENDS += "kernel-modules linux-firmware"
+
+KERNEL_IMAGETYPE = "Image"
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+
+# Use an initramfs and populate it with the kernel modules
+INITRAMFS_IMAGE ?= "core-image-initramfs-boot"
+PACKAGE_INSTALL:append:pn-core-image-initramfs-boot = " kernel-modules"
+
+IMAGE_FSTYPES ?= "wic"
+WKS_FILE ?= "genericarm64.wks.in"
+
+EFI_PROVIDER ?= "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd-boot", "grub-efi", d)}"
+
+# Try to bring up one physical serial console, or a virtualized serial console
+SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"

+ 5 - 0
meta-yocto-bsp/recipes-kernel/linux/linux-yocto_6.6.bbappend

@@ -1,19 +1,24 @@
+KBRANCH:genericarm64  = "v6.6/standard/base"
 KBRANCH:genericx86  = "v6.6/standard/base"
 KBRANCH:genericx86  = "v6.6/standard/base"
 KBRANCH:genericx86-64  = "v6.6/standard/base"
 KBRANCH:genericx86-64  = "v6.6/standard/base"
 KBRANCH:beaglebone-yocto = "v6.6/standard/beaglebone"
 KBRANCH:beaglebone-yocto = "v6.6/standard/beaglebone"
 
 
+KMACHINE:genericarm64 ?= "genericarm64"
 KMACHINE:genericx86 ?= "common-pc"
 KMACHINE:genericx86 ?= "common-pc"
 KMACHINE:genericx86-64 ?= "common-pc-64"
 KMACHINE:genericx86-64 ?= "common-pc-64"
 KMACHINE:beaglebone-yocto ?= "beaglebone"
 KMACHINE:beaglebone-yocto ?= "beaglebone"
 
 
+SRCREV_machine:genericarm64 ?= "e064a7d658a30b027b999183e21cd37305caff2a"
 SRCREV_machine:genericx86 ?= "332d4668fcc32826907d4f3c4938845206006089"
 SRCREV_machine:genericx86 ?= "332d4668fcc32826907d4f3c4938845206006089"
 SRCREV_machine:genericx86-64 ?= "332d4668fcc32826907d4f3c4938845206006089"
 SRCREV_machine:genericx86-64 ?= "332d4668fcc32826907d4f3c4938845206006089"
 SRCREV_machine:beaglebone-yocto ?= "332d4668fcc32826907d4f3c4938845206006089"
 SRCREV_machine:beaglebone-yocto ?= "332d4668fcc32826907d4f3c4938845206006089"
 
 
+COMPATIBLE_MACHINE:genericarm64 = "genericarm64"
 COMPATIBLE_MACHINE:genericx86 = "genericx86"
 COMPATIBLE_MACHINE:genericx86 = "genericx86"
 COMPATIBLE_MACHINE:genericx86-64 = "genericx86-64"
 COMPATIBLE_MACHINE:genericx86-64 = "genericx86-64"
 COMPATIBLE_MACHINE:beaglebone-yocto = "beaglebone-yocto"
 COMPATIBLE_MACHINE:beaglebone-yocto = "beaglebone-yocto"
 
 
+LINUX_VERSION:genericarm64 = "6.6.18"
 LINUX_VERSION:genericx86 = "6.6.15"
 LINUX_VERSION:genericx86 = "6.6.15"
 LINUX_VERSION:genericx86-64 = "6.6.15"
 LINUX_VERSION:genericx86-64 = "6.6.15"
 LINUX_VERSION:beaglebone-yocto = "6.6.15"
 LINUX_VERSION:beaglebone-yocto = "6.6.15"

+ 11 - 0
meta-yocto-bsp/wic/genericarm64.wks.in

@@ -0,0 +1,11 @@
+# short-description: Create an EFI disk image
+# long-description: Creates a partitioned EFI disk image that the user
+# can directly dd to boot media.
+
+part /boot --source bootimg-efi --sourceparams="loader=${EFI_PROVIDER},initrd=${INITRAMFS_IMAGE}-${MACHINE}.${INITRAMFS_FSTYPES}" --label boot --active --align 1024 --use-uuid
+
+part / --source rootfs --fstype=ext4 --label root --align 1024 --use-uuid
+
+part swap --size 44 --label swap --fstype=swap --use-uuid
+
+bootloader --ptable gpt --timeout=5 --append="rootwait rootfstype=ext4"