svn commit: r320252 - in head/release: . arm64 tools

Glen Barber gjb at FreeBSD.org
Fri Jun 23 00:08:38 UTC 2017


Author: gjb
Date: Fri Jun 23 00:08:36 2017
New Revision: 320252
URL: https://svnweb.freebsd.org/changeset/base/320252

Log:
  In release/release.sh:
  - Rename chroot_arm_armv6_build_release() to chroot_arm_build_release()
    and make it hardware agnostic (such as armv6 -vs- armv7 -vs- arm64).
  
  - Evaluate EMBEDDED_TARGET differently so release/tools/arm.subr can
    be used for arm/armv6 and arm64/aarch64.
  
  - Update comments and copyright.
  
  In release/tools/arm.subr:
  - In arm_create_disk(), change the default alignment from 63 to 512k,
    fixing a boot issue on arm64 and EFI. [1]
  
  - Update comments and copyright.
  
  Add a RPI3 configuration file, pieces obtained from Crochet.
  
  Obtained from:	Crochet [1]
  MFC after:	5 days
  X-MFC-Note:	maybe
  Sponsored by:	The FreeBSD Foundation

Added:
  head/release/arm64/RPI3.conf   (contents, props changed)
Modified:
  head/release/release.sh
  head/release/tools/arm.subr

Added: head/release/arm64/RPI3.conf
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/release/arm64/RPI3.conf	Fri Jun 23 00:08:36 2017	(r320252)
@@ -0,0 +1,66 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+CHROOT_MAKEENV="TARGET=amd64 TARGET_ARCH=amd64"
+SRCBRANCH="base/head at rHEAD"
+EMBEDDEDBUILD=1
+EMBEDDED_TARGET="arm64"
+EMBEDDED_TARGET_ARCH="aarch64"
+EMBEDDEDPORTS="sysutils/u-boot-rpi3 security/ca_root_nss"
+KERNEL="GENERIC"
+#MAKE_FLAGS="${MAKE_FLAGS} -s"
+WORLD_FLAGS="${WORLD_FLAGS} -j48 UBLDR_LOADADDR=0x42000000"
+IMAGE_SIZE="2G"
+PART_SCHEME="MBR"
+FAT_SIZE="50m -b 1m"
+FAT_TYPE="16"
+MD_ARGS="-x 63 -y 255"
+NODOC=1
+DTB_REPO="https://github.com/raspberrypi/firmware/blob/master/boot"
+DTB="bcm2710-rpi-3-b.dtb"
+OVERLAYS="mmc.dtbo pi3-disable-bt.dtbo"
+export BOARDNAME="RPI3"
+
+arm_install_uboot() {
+	UBOOT_DIR="/usr/local/share/u-boot/u-boot-rpi3"
+	UBOOT_FILES="LICENCE.broadcom README armstub8.bin bootcode.bin config.txt \
+		fixup.dat fixup_cd.dat fixup_x.dat start.elf start_cd.elf \
+		start_x.elf u-boot.bin"
+	FATMOUNT="${DESTDIR%${KERNEL}}fat"
+	UFSMOUNT="${DESTDIR%${KERNEL}}ufs"
+	chroot ${CHROOTDIR} mkdir -p "${FATMOUNT}" "${UFSMOUNT}"
+	chroot ${CHROOTDIR} mount_msdosfs /dev/${mddev}s1 ${FATMOUNT}
+	chroot ${CHROOTDIR} mount /dev/${mddev}s2a ${UFSMOUNT}
+	for _UF in ${UBOOT_FILES}; do
+		chroot ${CHROOTDIR} cp -p ${UBOOT_DIR}/${_UF} \
+			${FATMOUNT}/${_UF}
+	done
+	chroot ${CHROOTDIR} fetch -o "${FATMOUNT}/${DTB}" "${DTB_REPO}/${DTB}?raw=true"
+	chroot ${CHROOTDIR} mkdir -p ${FATMOUNT}/overlays
+	for _OL in ${OVERLAYS}; do
+		chroot ${CHROOTDIR} fetch -o "${FATMOUNT}/overlays/${_OL}"\
+			"${DTB_REPO}/overlays/${_OL}?raw=true"
+	done
+
+	_OBJDIR="$(chroot ${CHROOTDIR} make -C ${WORLDDIR} -V .OBJDIR)"
+	_OBJDIR="$(realpath ${_OBJDIR})"
+	if [ -d "${CHROOTDIR}/${_OBJDIR%%/usr/src}/${TARGET}.${TARGET_ARCH}" ]; then
+		BOOTFILES="/${_OBJDIR%%/usr/src}/${TARGET}.${TARGET_ARCH}/usr/src/sys/boot"
+	else
+		BOOTFILES="/${_OBJDIR}/sys/boot"
+	fi
+
+	chroot ${CHROOTDIR} mkdir -p ${FATMOUNT}/EFI/BOOT
+	chroot ${CHROOTDIR} cp -p ${BOOTFILES}/efi/boot1/boot1.efi \
+		${FATMOUNT}/EFI/BOOT/bootaa64.efi
+	chroot ${CHROOTDIR} touch ${UFSMOUNT}/firstboot
+	sync
+	umount_loop ${CHROOTDIR}/${FATMOUNT}
+	umount_loop ${CHROOTDIR}/${UFSMOUNT}
+	chroot ${CHROOTDIR} rmdir ${FATMOUNT}
+	chroot ${CHROOTDIR} rmdir ${UFSMOUNT}
+	
+	return 0
+}

Modified: head/release/release.sh
==============================================================================
--- head/release/release.sh	Fri Jun 23 00:00:00 2017	(r320251)
+++ head/release/release.sh	Fri Jun 23 00:08:36 2017	(r320252)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #-
-# Copyright (c) 2013-2015 The FreeBSD Foundation
+# Copyright (c) 2013-2017 The FreeBSD Foundation
 # Copyright (c) 2013 Glen Barber
 # Copyright (c) 2011 Nathan Whitehorn
 # All rights reserved.
@@ -148,10 +148,11 @@ env_check() {
 		WITH_COMPRESSED_IMAGES=
 		NODOC=yes
 		case ${EMBEDDED_TARGET}:${EMBEDDED_TARGET_ARCH} in
-			arm:armv6)
-				chroot_build_release_cmd="chroot_arm_armv6_build_release"
+			arm:armv6|arm64:aarch64)
+				chroot_build_release_cmd="chroot_arm_build_release"
 				;;
 			*)
+				;;
 		esac
 	fi
 
@@ -346,13 +347,19 @@ chroot_build_release() {
 	return 0
 } # chroot_build_release()
 
-# chroot_arm_armv6_build_release(): Create arm/armv6 SD card image.
-chroot_arm_armv6_build_release() {
+# chroot_arm_build_release(): Create arm SD card image.
+chroot_arm_build_release() {
 	load_target_env
 	eval chroot ${CHROOTDIR} make -C /usr/src/release obj
-	if [ -e "${RELENGDIR}/tools/${EMBEDDED_TARGET}.subr" ]; then
-		. "${RELENGDIR}/tools/${EMBEDDED_TARGET}.subr"
-	fi
+	case ${EMBEDDED_TARGET} in
+		arm|arm64)
+			if [ -e "${RELENGDIR}/tools/arm.subr" ]; then
+				. "${RELENGDIR}/tools/arm.subr"
+			fi
+			;;
+		*)
+			;;
+	esac
 	[ ! -z "${RELEASECONF}" ] && . "${RELEASECONF}"
 	WORLDDIR="$(eval chroot ${CHROOTDIR} make -C /usr/src/release -V WORLDDIR)"
 	OBJDIR="$(eval chroot ${CHROOTDIR} make -C /usr/src/release -V .OBJDIR)"
@@ -381,7 +388,7 @@ chroot_arm_armv6_build_release() {
 		> CHECKSUM.SHA256
 
 	return 0
-} # chroot_arm_armv6_build_release()
+} # chroot_arm_build_release()
 
 # main(): Start here.
 main() {

Modified: head/release/tools/arm.subr
==============================================================================
--- head/release/tools/arm.subr	Fri Jun 23 00:00:00 2017	(r320251)
+++ head/release/tools/arm.subr	Fri Jun 23 00:08:36 2017	(r320252)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #-
-# Copyright (c) 2015 The FreeBSD Foundation
+# Copyright (c) 2015-2017 The FreeBSD Foundation
 # All rights reserved.
 #
 # Portions of this software were developed by Glen Barber
@@ -27,7 +27,7 @@
 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 # SUCH DAMAGE.
 #
-# Common subroutines used to build arm/armv6 images.
+# Common subroutines used to build arm SD card images.
 #
 # $FreeBSD$
 #
@@ -65,7 +65,7 @@ umount_loop() {
 arm_create_disk() {
 	# Create the target raw file and temporary work directory.
 	chroot ${CHROOTDIR} gpart create -s ${PART_SCHEME} ${mddev}
-	chroot ${CHROOTDIR} gpart add -t '!12' -a 63 -s ${FAT_SIZE} ${mddev}
+	chroot ${CHROOTDIR} gpart add -t '!12' -a 512k -s ${FAT_SIZE} ${mddev}
 	chroot ${CHROOTDIR} gpart set -a active -i 1 ${mddev}
 	chroot ${CHROOTDIR} newfs_msdos -L msdosboot -F ${FAT_TYPE} /dev/${mddev}s1
 	chroot ${CHROOTDIR} gpart add -t freebsd ${mddev}


More information about the svn-src-all mailing list