Skip to contentSkip to conversation

meson-tools: new Package

PATCH New Dagg Stompler 1 participant 4 messages Mar 10, 2018 Arm/Amlogic Meson SoC support

lore
Share & tools
lore
#0 lore raw

PATCH v3 1/4 meson-tools: new Package

all amlogic's meson based soc require a signed firmware to boot, this package provides a binary to do so.

---
Changes v2 -> v3:
- add entry to DEVELOPERS FILE

Changes v1 -> v2:
- drop hunk which was sent by mistake (Brauch)
- drop cross compile patch as it isn't needed (Brauch)
- refractor bins installation cmd (Thomas)
- refractor build cmd (Thomas)
- handle general mail patch rejects (Thomas)

 DEVELOPERS                           |  1 +
 package/Config.in.host               |  1 +
 package/meson-tools/Config.in.host   |  9 +++++++++
 package/meson-tools/meson-tools.hash |  2 ++
 package/meson-tools/meson-tools.mk   | 24 ++++++++++++++++++++++++
 5 files changed, 37 insertions(+)
 create mode 100644 package/meson-tools/Config.in.host
 create mode 100644 package/meson-tools/meson-tools.hash
 create mode 100644 package/meson-tools/meson-tools.mk
DEVELOPERS +1 -0
index a2bfdabb88..a622e7cc08 100644
@@ -467,6 +467,7 @@ N:	Dagg Stompler <[email protected]>
 F:	board/hardkernel/odroidc2
 F:	configs/odroidc2_defconfig
 F:	package/libamcodec/
+F:	package/meson-tools/
 F:	package/odroid-mali/
 F:	package/odroid-scripts/
 
package/Config.in.host +1 -0
index 199a8e9856..5f17640eb1 100644
@@ -29,6 +29,7 @@ menu "Host utilities"
 	source "package/jsmin/Config.in.host"
 	source "package/lpc3250loader/Config.in.host"
 	source "package/lttng-babeltrace/Config.in.host"
+	source "package/meson-tools/Config.in.host"
 	source "package/mfgtools/Config.in.host"
 	source "package/mkpasswd/Config.in.host"
 	source "package/mtd/Config.in.host"
package/meson-tools/Config.in.host new file +9 -0
new file mode 100644
index 0000000000..d90be61aeb
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_HOST_MESON_TOOLS
+	bool "host meson-tools"
+	help
+	  meson-tools is a collection of tools for use with
+	  the Amlogic Meson family of ARM based SoCs.
+	  it allows management of signatures which are required
+	  for booting amlogic based boards with u-boot.
+
+	  https://github.com/afaerber/meson-tools
package/meson-tools/meson-tools.hash new file +2 -0
new file mode 100644
index 0000000000..b5f844ab58
@@ -0,0 +1,2 @@
+# Locally calculated
+sha256	5a956f5a6ff8c45fc79d649982287c4548a1df4f0ef9e5aa6584493d552a54a3	meson-tools-5e01cbadc6f6f21ad88a63492a83182fc4b19d37.tar.gz
package/meson-tools/meson-tools.mk new file +24 -0
new file mode 100644
index 0000000000..6b8cc06582
@@ -0,0 +1,24 @@
+################################################################################
+#
+# meson-tools
+#
+################################################################################
+
+HOST_MESON_TOOLS_VERSION = 5e01cbadc6f6f21ad88a63492a83182fc4b19d37
+HOST_MESON_TOOLS_SITE = $(call github,afaerber,meson-tools,$(HOST_MESON_TOOLS_VERSION))
+HOST_MESON_TOOLS_LICENSE = GPL-2.0+
+HOST_MESON_TOOLS_LICENSE_FILES = COPYING README.md
+HOST_MESON_TOOLS_DEPENDENCIES = host-openssl
+
+HOST_MESON_TOOLS_PROGS = amlbootsig unamlbootsig amlinfo
+
+define HOST_MESON_TOOLS_BUILD_CMDS
+	$(MAKE) -C $(@D) CC="$(HOSTCC)" CFLAGS="$(HOST_CFLAGS)" LDFLAGS="$(HOST_LDFLAGS) -lssl -lcrypto"
+endef
+
+define HOST_MESON_TOOLS_INSTALL_CMDS
+	$(foreach f,$(HOST_MESON_TOOLS_PROGS),
+		$(INSTALL) -D -m 0755 $(@D)/$(f) $(HOST_DIR)/bin/$(f))
+endef
+
+$(eval $(host-generic-package))
Signature · 1 line
2.16.2
#1 lore raw

PATCH v3 2/4 odroidc2-ATF: new Package

the odroidc2 board requires a ATF (ARM Trusted Firmware) to boot u-boot. the ATF can be found only in the vendor's u-boot repository. this package will retrieve the needed files to sign the mainline u-boot image.

---
Changes v2 -> v3:
- add entry to DEVELOPERS file

Changes v1 -> v2:
- refractor mainline post image script by moving the ATF part to a seperate package.
- handle general mail patch rejects (Thomas)

 DEVELOPERS                             |  1 +
 package/Config.in.host                 |  1 +
 package/odroidc2-ATF/Config.in.host    |  7 +++++++
 package/odroidc2-ATF/odroidc2-ATF.hash |  2 ++
 package/odroidc2-ATF/odroidc2-ATF.mk   | 26 ++++++++++++++++++++++++++
 5 files changed, 37 insertions(+)
 create mode 100644 package/odroidc2-ATF/Config.in.host
 create mode 100644 package/odroidc2-ATF/odroidc2-ATF.hash
 create mode 100644 package/odroidc2-ATF/odroidc2-ATF.mk
DEVELOPERS +1 -0
index a622e7cc08..1cb46cfd28 100644
@@ -468,6 +468,7 @@ F:	board/hardkernel/odroidc2
 F:	configs/odroidc2_defconfig
 F:	package/libamcodec/
 F:	package/meson-tools/
+F:	package/odroidc2-ATF/
 F:	package/odroid-mali/
 F:	package/odroid-scripts/
 
package/Config.in.host +1 -0
index 5f17640eb1..965fef93ed 100644
@@ -35,6 +35,7 @@ menu "Host utilities"
 	source "package/mtd/Config.in.host"
 	source "package/mtools/Config.in.host"
 	source "package/mxsldr/Config.in.host"
+	source "package/odroidc2-ATF/Config.in.host"
 	source "package/omap-u-boot-utils/Config.in.host"
 	source "package/openocd/Config.in.host"
 	source "package/opkg-utils/Config.in.host"
package/odroidc2-ATF/Config.in.host new file +7 -0
new file mode 100644
index 0000000000..7af3bf79fe
@@ -0,0 +1,7 @@
+config BR2_PACKAGE_HOST_ODROIDC2_ATF
+	bool "host odroidc2-ATF"
+	help
+	  odroidc2-ATF is a package that extracts the ATF (ARM Trusted Firmware) from hardkernel's
+	  uboot repository and uses it to allow safe boot of mainline u-boot kernels.
+
+	  https://github.com/hardkernel/u-boot/tree/odroidc2-v2015.01
package/odroidc2-ATF/odroidc2-ATF.hash new file +2 -0
new file mode 100644
index 0000000000..5481ddcde2
@@ -0,0 +1,2 @@
+# Locally calculated
+sha256	7e436e83e21819605480938dda6e366a4ccd01acbb8402997a3633e25ff2d383  odroidc2-ATF-1dad487200543c2c1d116e8b2f070fe491070432.tar.gz
package/odroidc2-ATF/odroidc2-ATF.mk new file +26 -0
new file mode 100644
index 0000000000..6eb42b72bc
@@ -0,0 +1,26 @@
+################################################################################
+#
+# odroidc2-ATF
+#
+################################################################################
+
+HOST_ODROIDC2_ATF_VERSION = 1dad487200543c2c1d116e8b2f070fe491070432
+HOST_ODROIDC2_ATF_SITE = $(call github,hardkernel,u-boot,$(HOST_ODROIDC2_ATF_VERSION))
+HOST_ODROIDC2_ATF_LICENSE = GPL-2.0
+HOST_ODROIDC2_ATF_LICENSE_FILES = COPYING COPYING.txt README
+HOST_ODROIDC2_ATF_FIRMWARE_FOLDER = $(HOST_DIR)/usr/share/odroidc2_atf
+HOST_ODROIDC2_ATF_FIRMWARE_FILES = sd_fuse/bl1.bin.hardkernel fip/gxb/bl30.bin fip/gxb/bl301.bin fip/gxb/bl31.bin fip/gxb/bl2.package
+
+define HOST_ODROIDC2_ATF_BUILD_CMDS
+	$(MAKE) -C $(@D)/tools/fip_create CC="$(HOSTCC)" CFLAGS="$(HOST_CFLAGS)" LDFLAGS="$(HOST_LDFLAGS)"
+endef
+
+define HOST_ODROIDC2_ATF_INSTALL_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/tools/fip_create/fip_create $(HOST_DIR)/bin
+	mkdir -p $(HOST_ODROIDC2_ATF_FIRMWARE_FOLDER)
+	$(foreach f,$(HOST_ODROIDC2_ATF_FIRMWARE_FILES),
+		$(INSTALL) -D -m 0644 $(@D)/$(f) $(HOST_ODROIDC2_ATF_FIRMWARE_FOLDER)/
+	)
+endef
+
+$(eval $(host-generic-package))
Signature · 1 line
2.16.2
#2 lore raw

PATCH v3 3/4 odroidc2: prepare post-image.sh for multi config support

In reply to Dagg Stompler

prepare post-image.sh for support addition of multiple buildroot configs

---
no changes made, the patch is resent to make sure it will be applied as part of the set.

 board/hardkernel/odroidc2/post-image.sh | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
board/hardkernel/odroidc2/post-image.sh +6 -3
index aaf12c1e79..a53f87ec11 100755
@@ -1,8 +1,11 @@
 #!/bin/sh
 
 BOARD_DIR="$(dirname $0)"
-GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
 GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
+IM_FILE=""
+
+GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
+IM_FILE="${BINARIES_DIR}/u-boot.bin"
 
 cp ${BOARD_DIR}/boot.ini ${BINARIES_DIR}/
 
@@ -15,5 +18,5 @@ genimage                           \
 	--outputpath "${BINARIES_DIR}" \
 	--config "${GENIMAGE_CFG}"
 
-dd if=${BINARIES_DIR}/u-boot.bin of=${BINARIES_DIR}/sdcard.img bs=1 count=442 conv=sync,notrunc
-dd if=${BINARIES_DIR}/u-boot.bin of=${BINARIES_DIR}/sdcard.img bs=512 skip=1 seek=1 conv=fsync,notrunc
+dd if=${IM_FILE} of=${BINARIES_DIR}/sdcard.img bs=1 count=442 conv=sync,notrunc
+dd if=${IM_FILE} of=${BINARIES_DIR}/sdcard.img bs=512 skip=1 seek=1 conv=fsync,notrunc
Signature · 1 line
2.16.2
#3 lore raw

PATCH v4 4/4 odroidc2: add support for mainline kernel and u-boot

In reply to Dagg Stompler

---
Changes v3 -> v4:
- add entry to DEVELOPERS file

Changes v2 -> v3:
- board/hardkernel/odroidc2/odroidc2_mainline_defconfig is not needed because update_arm64_defconfig_with_meson_configs.patch is used.

Changes v1 -> v2:
- handle general mail patch rejects (Thomas)
- use BR2_TARGET_UBOOT_BOOT_SCRIPT and BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE instead of script's boot.scr generation (Thomas)
- use defconfig in mainline kernel config (Thomas)
- add patch of mainline kernel diff instead of complete config and use arch default config (Arnout)
- move vendor's ATF handling to a separated patch (Thomas)
- add mainline config support for post image script (Thomas)
- fixed mainline defconfig rejects (Thomas)
- squashed all previous 2-8 patches into one patch (Thomas)

 DEVELOPERS                                         |   1 +
 board/hardkernel/odroidc2/boot.cmd                 |  10 +
 board/hardkernel/odroidc2/genimage-mainline.cfg    |  33 ++
 ...update_arm64_defconfig_with_meson_configs.patch | 642 +++++++++++++++++++++
 board/hardkernel/odroidc2/post-build.sh            |  12 +
 board/hardkernel/odroidc2/post-image.sh            |  25 +-
 board/hardkernel/odroidc2/readme.txt               |  27 +-
 configs/odroidc2_mainline_defconfig                |  38 ++
 8 files changed, 783 insertions(+), 5 deletions(-)
 create mode 100644 board/hardkernel/odroidc2/boot.cmd
 create mode 100644 board/hardkernel/odroidc2/genimage-mainline.cfg
 create mode 100644 board/hardkernel/odroidc2/patches/linux/0001-update_arm64_defconfig_with_meson_configs.patch
 create mode 100755 board/hardkernel/odroidc2/post-build.sh
 create mode 100644 configs/odroidc2_mainline_defconfig
DEVELOPERS +1 -0
index 1cb46cfd28..97d24f631b 100644
@@ -466,6 +466,7 @@ F:	package/kvm-unit-tests
 N:	Dagg Stompler <[email protected]>
 F:	board/hardkernel/odroidc2
 F:	configs/odroidc2_defconfig
+F:	configs/odroidc2_mainline_defconfig
 F:	package/libamcodec/
 F:	package/meson-tools/
 F:	package/odroidc2-ATF/
board/hardkernel/odroidc2/boot.cmd new file +10 -0
new file mode 100644
index 0000000000..85a1a0a020
@@ -0,0 +1,10 @@
+setenv loadaddr "0x1080000"
+setenv dtb_loadaddr "0x01000000"
+setenv kernel_filename "uImage"
+setenv fdt_filename "meson-gxbb-odroidc2.dtb"
+setenv bootargs "console=ttyAML0,115200n8 earlyprintk root=/dev/mmcblk1p2 rootwait panic=10 ${extra} rw"
+
+fatload mmc 0:1 ${loadaddr} ${kernel_filename}
+fatload mmc 0:1 ${dtb_loadaddr} ${fdt_filename}
+
+bootm ${loadaddr} - ${dtb_loadaddr}
board/hardkernel/odroidc2/genimage-mainline.cfg new file +33 -0
new file mode 100644
index 0000000000..77e4d6dd2f
@@ -0,0 +1,33 @@
+image boot.vfat {
+	vfat {
+		files = {
+			"uImage",
+			"meson-gxbb-odroidc2.dtb",
+			"boot.scr"
+		}
+	}
+	size = 64M
+}
+
+image sdcard.img {
+	hdimage {
+	}
+
+	partition u-boot {
+		in-partition-table = "no"
+		image = "uboot-odc2.img"
+		offset = 49664
+	}
+
+	partition boot {
+		partition-type = 0xC
+		bootable = "true"
+		image = "boot.vfat"
+	}
+
+	partition rootfs {
+		partition-type = 0x83
+		image = "rootfs.ext4"
+		size = 512M
+	}
+}
board/hardkernel/odroidc2/patches/linux/0001-update_arm64_defconfig_with_meson_configs.patch new file +642 -0

642 lines not on this page · raw message

board/hardkernel/odroidc2/post-build.sh new file +12 -0
new file mode 100755
index 0000000000..30e1dd2f0e
@@ -0,0 +1,12 @@
+#!/bin/sh
+# post-build.sh for Odroid C2 taken from CubieBoard's post-build.sh
+# 2013, Carlo Caione <[email protected]>
+
+BOARD_DIR="$(dirname $0)"
+MKIMAGE=$HOST_DIR/bin/mkimage
+
+# vendor u-boot uses uImage
+if [ -f "${BINARIES_DIR}/Image" ]; then
+    ${MKIMAGE} -A arm64 -O linux -T kernel -C none -a 0x1080000 -e 0x1080000 \
+	     -n linux -d ${BINARIES_DIR}/Image ${BINARIES_DIR}/uImage
+fi
board/hardkernel/odroidc2/post-image.sh +22 -3
index a53f87ec11..bc885d4c51 100755
@@ -2,12 +2,29 @@
 
 BOARD_DIR="$(dirname $0)"
 GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
+TARGET_MAINLINE="$2"
 IM_FILE=""
+CLEANUPS_CMD=""
 
-GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
-IM_FILE="${BINARIES_DIR}/u-boot.bin"
+if [ "${TARGET_MAINLINE}" = "yes" ]; then
+	GENIMAGE_CFG="${BOARD_DIR}/genimage-mainline.cfg"
+	SIGNED_UBOOT_IMG="${BINARIES_DIR}/uboot-odc2.img"
+	ODRODIDC2_ATF_FOLDER="${HOST_DIR}/usr/share/odroidc2_atf"
+	IM_FILE="${ODRODIDC2_ATF_FOLDER}/bl1.bin.hardkernel"
+	CLEANUPS_CMD="rm -rf ${BINARIES_DIR}/fip.bin ${BINARIES_DIR}/boot_new.bin ${BINARIES_DIR}/u-boot.img"
 
-cp ${BOARD_DIR}/boot.ini ${BINARIES_DIR}/
+	${HOST_DIR}/bin/fip_create --bl30 ${ODRODIDC2_ATF_FOLDER}/bl30.bin --bl301 ${ODRODIDC2_ATF_FOLDER}/bl301.bin --bl31 ${ODRODIDC2_ATF_FOLDER}/bl31.bin --bl33 ${BINARIES_DIR}/u-boot.bin ${BINARIES_DIR}/fip.bin
+	${HOST_DIR}/bin/fip_create --dump ${BINARIES_DIR}/fip.bin
+	cat ${ODRODIDC2_ATF_FOLDER}/bl2.package ${BINARIES_DIR}/fip.bin > ${BINARIES_DIR}/boot_new.bin
+	${HOST_DIR}/bin/amlbootsig ${BINARIES_DIR}/boot_new.bin ${BINARIES_DIR}/u-boot.img
+
+	dd if=${BINARIES_DIR}/u-boot.img of=${SIGNED_UBOOT_IMG} bs=512 skip=96
+else
+	GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
+	IM_FILE="${BINARIES_DIR}/u-boot.bin"
+
+	cp ${BOARD_DIR}/boot.ini ${BINARIES_DIR}/
+fi
 
 rm -rf "${GENIMAGE_TMP}"
 
@@ -20,3 +37,5 @@ genimage                           \
 
 dd if=${IM_FILE} of=${BINARIES_DIR}/sdcard.img bs=1 count=442 conv=sync,notrunc
 dd if=${IM_FILE} of=${BINARIES_DIR}/sdcard.img bs=512 skip=1 seek=1 conv=fsync,notrunc
+
+${CLEANUPS_CMD}
board/hardkernel/odroidc2/readme.txt +25 -2
index b44aa67f5a..1ca90546b5 100644
@@ -10,7 +10,11 @@ How to build it
 
   $ make odroidc2_defconfig
 
-Then you can edit the build options using
+For vendor based configuration or
+
+  $ make odroidc2_mainline_defconfig
+
+For community based configuration, then you can edit the build options using
 
   $ make menuconfig
 
@@ -24,7 +28,9 @@ download the packages' sources.
 Result of the build
 -------------------
 
-After building, you should obtain this tree:
+After building, you should obtain one of the following trees:
+
+For vendor based configuration:
 
     output/images/
     +-- Image
@@ -37,7 +43,24 @@ After building, you should obtain this tree:
     +-- sdcard.img
     `-- u-boot.bin
 
+For community based configuration:
+
+    output/images/
+    +-- Image
+    +-- uImage			   [2]
+    +-- boot.scr                   [1]
+    +-- boot.vfat
+    +-- meson-gxbb-odroidc2.dtb
+    +-- rootfs.ext2
+    +-- rootfs.ext4
+    +-- rootfs.tar
+    +-- sdcard.img
+    +-- uboot-odc2.img		   [3]
+    `-- u-boot.bin
+
 [1] This is the ODROID-C2 configuration file used in u-boot.
+[2] This is the ODROID-C2 kernel image file which will be booted.
+[3] This is the ODROID-C2 signed u-boot image which will be used.
 
 How to write the SD card or eMMC
 ================================
configs/odroidc2_mainline_defconfig new file +38 -0
new file mode 100644
index 0000000000..6a4015425e
@@ -0,0 +1,38 @@
+# Architecture
+BR2_aarch64=y
+
+# System
+BR2_TARGET_GENERIC_HOSTNAME="odroidc2"
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_4=y
+BR2_GLOBAL_PATCH_DIR="board/hardkernel/odroidc2/patches"
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/hardkernel/odroidc2/post-build.sh"
+BR2_ROOTFS_POST_IMAGE_SCRIPT="board/hardkernel/odroidc2/post-image.sh"
+BR2_ROOTFS_POST_SCRIPT_ARGS="yes"
+BR2_KERNEL_HEADERS_4_14=y
+
+# Kernel
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.4"
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="amlogic/meson-gxbb-odroidc2"
+BR2_LINUX_KERNEL_IMAGE=y
+
+# U-Boot
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BOARDNAME="odroid-c2"
+BR2_TARGET_UBOOT_NEEDS_DTC=y
+BR2_TARGET_UBOOT_BOOT_SCRIPT=y
+BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/hardkernel/odroidc2/boot.cmd"
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11"
+
+# Required tools to create the SD image
+BR2_PACKAGE_HOST_DOSFSTOOLS=y
+BR2_PACKAGE_HOST_GENIMAGE=y
+BR2_PACKAGE_HOST_MESON_TOOLS=y
+BR2_PACKAGE_HOST_MTOOLS=y
+BR2_PACKAGE_HOST_UBOOT_TOOLS=y
+BR2_PACKAGE_HOST_ODROIDC2_ATF=y
Signature · 1 line
2.16.2