aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlen Barber <gjb@FreeBSD.org>2017-06-23 00:08:36 +0000
committerGlen Barber <gjb@FreeBSD.org>2017-06-23 00:08:36 +0000
commit751c20d8a59ddb967d01536892518f722f2e2c81 (patch)
tree85b6329750def54900efdb3a965ecee65757ca17
parent6f81bd02b3f6a3b48dbfc6416288346b97e87d7c (diff)
downloadsrc-751c20d8a59ddb967d01536892518f722f2e2c81.tar.gz
src-751c20d8a59ddb967d01536892518f722f2e2c81.zip
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
Notes
Notes: svn path=/head/; revision=320252
-rw-r--r--release/arm64/RPI3.conf66
-rwxr-xr-xrelease/release.sh25
-rw-r--r--release/tools/arm.subr6
3 files changed, 85 insertions, 12 deletions
diff --git a/release/arm64/RPI3.conf b/release/arm64/RPI3.conf
new file mode 100644
index 000000000000..3f08a6cbb138
--- /dev/null
+++ b/release/arm64/RPI3.conf
@@ -0,0 +1,66 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+CHROOT_MAKEENV="TARGET=amd64 TARGET_ARCH=amd64"
+SRCBRANCH="base/head@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
+}
diff --git a/release/release.sh b/release/release.sh
index 821623990f95..29ad403d7919 100755
--- a/release/release.sh
+++ b/release/release.sh
@@ -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() {
diff --git a/release/tools/arm.subr b/release/tools/arm.subr
index 97326c4d1fb7..c5adbaf063d7 100644
--- a/release/tools/arm.subr
+++ b/release/tools/arm.subr
@@ -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}