From 23b6d510636e8991dce11e3cc4b3291abe976c43 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Thu, 5 May 2016 01:23:04 -0700 Subject: [PATCH] u-boot: add hardkernel specific version --- packages/tools/u-boot/package.mk | 43 ++++++++++---- packages/tools/u-boot/release | 13 ++++- packages/tools/u-boot/scripts/update-c2.sh | 55 ++++++++++++++++++ ...u-boot-0001-set-default-boot-options.patch | 56 +++++++++++++++++++ 4 files changed, 155 insertions(+), 12 deletions(-) create mode 100644 packages/tools/u-boot/scripts/update-c2.sh create mode 100644 projects/Odroid_C2/patches/u-boot/u-boot-0001-set-default-boot-options.patch diff --git a/packages/tools/u-boot/package.mk b/packages/tools/u-boot/package.mk index 4de08b34c4..3dce887d04 100644 --- a/packages/tools/u-boot/package.mk +++ b/packages/tools/u-boot/package.mk @@ -17,18 +17,23 @@ ################################################################################ PKG_NAME="u-boot" +PKG_DEPENDS_TARGET="toolchain" if [ "$UBOOT_VERSION" = "imx6-cuboxi" ]; then PKG_VERSION="imx6-408544d" PKG_SITE="http://imx.solid-run.com/wiki/index.php?title=Building_the_kernel_and_u-boot_for_the_CuBox-i_and_the_HummingBoard" # https://github.com/SolidRun/u-boot-imx6.git PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz" +elif [ "$UBOOT_VERSION" = "hardkernel" ]; then + PKG_VERSION="502b13b" + PKG_SITE="https://github.com/hardkernel/u-boot" + PKG_URL="https://github.com/hardkernel/u-boot/archive/$PKG_VERSION.tar.gz" + PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET gcc-linaro-aarch64-none-elf:host" else exit 0 fi PKG_REV="1" -PKG_ARCH="arm" +PKG_ARCH="arm aarch64" PKG_LICENSE="GPL" -PKG_DEPENDS_TARGET="toolchain" PKG_PRIORITY="optional" PKG_SECTION="tools" PKG_SHORTDESC="u-boot: Universal Bootloader project" @@ -61,9 +66,16 @@ make_target() { done for UBOOT_TARGET in $UBOOT_CONFIG; do - make CROSS_COMPILE="$TARGET_PREFIX" ARCH="$TARGET_ARCH" mrproper - make CROSS_COMPILE="$TARGET_PREFIX" ARCH="$TARGET_ARCH" $UBOOT_TARGET - make CROSS_COMPILE="$TARGET_PREFIX" ARCH="$TARGET_ARCH" HOSTCC="$HOST_CC" HOSTSTRIP="true" + if [ "$PROJECT" = "Odroid_C2" ]; then + export PATH=$ROOT/$TOOLCHAIN/lib/gcc-linaro-aarch64-none-elf/bin/:$PATH + make CROSS_COMPILE=aarch64-none-elf- ARCH=arm mrproper + make CROSS_COMPILE=aarch64-none-elf- ARCH=arm $UBOOT_TARGET + make CROSS_COMPILE=aarch64-none-elf- ARCH=arm HOSTCC="$HOST_CC" HOSTSTRIP="true" + else + make CROSS_COMPILE="$TARGET_PREFIX" ARCH=arm mrproper + make CROSS_COMPILE="$TARGET_PREFIX" ARCH=arm $UBOOT_TARGET + make CROSS_COMPILE="$TARGET_PREFIX" ARCH=arm HOSTCC="$HOST_CC" HOSTSTRIP="true" + fi # rename files in case of multiple targets if [ $UBOOT_TARGET_CNT -gt 1 ]; then @@ -106,13 +118,22 @@ makeinstall_target() { mkdir -p $INSTALL/usr/share/bootloader - cp ./u-boot*.imx $INSTALL/usr/share/bootloader 2>/dev/null || : - cp ./u-boot*.img $INSTALL/usr/share/bootloader 2>/dev/null || : - cp ./SPL* $INSTALL/usr/share/bootloader 2>/dev/null || : + cp $ROOT/$PKG_BUILD/u-boot*.imx $INSTALL/usr/share/bootloader 2>/dev/null || : + cp $ROOT/$PKG_BUILD/u-boot*.img $INSTALL/usr/share/bootloader 2>/dev/null || : + cp $ROOT/$PKG_BUILD/SPL* $INSTALL/usr/share/bootloader 2>/dev/null || : - cp ./$UBOOT_CONFIGFILE $INSTALL/usr/share/bootloader 2>/dev/null || : - - cp -PRv $PKG_DIR/scripts/update.sh $INSTALL/usr/share/bootloader + cp $ROOT/$PKG_BUILD/$UBOOT_CONFIGFILE $INSTALL/usr/share/bootloader 2>/dev/null || : cp -PR $PROJECT_DIR/$PROJECT/bootloader/uEnv*.txt $INSTALL/usr/share/bootloader 2>/dev/null || : + + case $PROJECT in + Odroid_C2) + cp -PRv $PKG_DIR/scripts/update-c2.sh $INSTALL/usr/share/bootloader/update.sh + cp -PRv $ROOT/$PKG_BUILD/sd_fuse/bl1.bin.hardkernel $INSTALL/usr/share/bootloader/bl1 + cp -PRv $ROOT/$PKG_BUILD/sd_fuse/u-boot.bin $INSTALL/usr/share/bootloader/u-boot + ;; + imx6) + cp -PRv $PKG_DIR/scripts/update.sh $INSTALL/usr/share/bootloader + ;; + esac } diff --git a/packages/tools/u-boot/release b/packages/tools/u-boot/release index 80fa3a1cfb..876cac8c68 100755 --- a/packages/tools/u-boot/release +++ b/packages/tools/u-boot/release @@ -25,7 +25,10 @@ if [ -z "$UBOOT_CONFIGFILE" ]; then fi mkdir -p $RELEASE_DIR/3rdparty/bootloader - cp -PR $BUILD/u-boot-*/$UBOOT_CONFIGFILE $RELEASE_DIR/3rdparty/bootloader 2>/dev/null || : + if [ -e $BUILD/u-boot-*/$UBOOT_CONFIGFILE ]; then + cp -PR $BUILD/u-boot-*/$UBOOT_CONFIGFILE $RELEASE_DIR/3rdparty/bootloader + fi + cp -PR $BUILD/u-boot-*/SPL* $RELEASE_DIR/3rdparty/bootloader 2>/dev/null || : cp -PR $BUILD/u-boot-*/u-boot*.imx $RELEASE_DIR/3rdparty/bootloader 2>/dev/null || : cp -PR $BUILD/u-boot-*/u-boot*.img $RELEASE_DIR/3rdparty/bootloader 2>/dev/null || : @@ -35,3 +38,11 @@ mkdir -p $RELEASE_DIR/3rdparty/bootloader cp -PR $HOME/.openelec/projects/$PROJECT/bootloader/* $RELEASE_DIR/3rdparty/bootloader 2>/dev/null || : cp -PR $BUILD/linux-*/arch/$TARGET_KERNEL_ARCH/boot/dts/*.dtb $RELEASE_DIR/3rdparty/bootloader 2>/dev/null || : + + case $PROJECT in + Odroid_C2) + cp -PR $BUILD/$BOOTLOADER-*/sd_fuse/bl1.bin.hardkernel $RELEASE_DIR/3rdparty/bootloader/bl1 + cp -PR $BUILD/$BOOTLOADER-*/sd_fuse/u-boot.bin $RELEASE_DIR/3rdparty/bootloader/u-boot + cp -PR $PROJECT_DIR/$PROJECT/bootloader/boot.ini $RELEASE_DIR/3rdparty/bootloader + ;; + esac diff --git a/packages/tools/u-boot/scripts/update-c2.sh b/packages/tools/u-boot/scripts/update-c2.sh new file mode 100644 index 0000000000..a665655a66 --- /dev/null +++ b/packages/tools/u-boot/scripts/update-c2.sh @@ -0,0 +1,55 @@ +#!/bin/sh + +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +[ -z "$SYSTEM_ROOT" ] && SYSTEM_ROOT="" +[ -z "$BOOT_ROOT" ] && BOOT_ROOT="/flash" +[ -z "$BOOT_PART" ] && BOOT_PART=$(df "$BOOT_ROOT" | tail -1 | awk {' print $1 '}) +if [ -z "$BOOT_DISK" ]; then + case $BOOT_PART in + /dev/sd[a-z][0-9]*) + BOOT_DISK=$(echo $BOOT_PART | sed -e "s,[0-9]*,,g") + ;; + /dev/mmcblk*) + BOOT_DISK=$(echo $BOOT_PART | sed -e "s,p[0-9]*,,g") + ;; + esac +fi + +# mount $BOOT_ROOT r/w + mount -o remount,rw $BOOT_ROOT + +# update Device Tree Blobs + for all_dtb in /flash/*.dtb /flash/DTB; do + dtb=$(basename $all_dtb) + if [ -f $SYSTEM_ROOT/usr/share/bootloader/$dtb ]; then + echo "*** updating Device Tree Blob: $dtb ..." + cp -p $SYSTEM_ROOT/usr/share/bootloader/$dtb $BOOT_ROOT + fi + done + +echo "*** updating u-boot for Odroid on: $BOOT_DISK ..." + +dd if=$SYSTEM_ROOT/usr/share/bootloader/bl1 of=$BOOT_DISK conv=fsync bs=1 count=442 +dd if=$SYSTEM_ROOT/usr/share/bootloader/bl1 of=$BOOT_DISK conv=fsync bs=512 seek=1 skip=1 +dd if=$SYSTEM_ROOT/usr/share/bootloader/u-boot of=$BOOT_DISK conv=fsync bs=512 seek=97 + +# mount $BOOT_ROOT r/o + sync + mount -o remount,ro $BOOT_ROOT diff --git a/projects/Odroid_C2/patches/u-boot/u-boot-0001-set-default-boot-options.patch b/projects/Odroid_C2/patches/u-boot/u-boot-0001-set-default-boot-options.patch new file mode 100644 index 0000000000..078be0a980 --- /dev/null +++ b/projects/Odroid_C2/patches/u-boot/u-boot-0001-set-default-boot-options.patch @@ -0,0 +1,56 @@ +diff -Naur a/include/configs/odroidc2.h b/include/configs/odroidc2.h +--- a/include/configs/odroidc2.h 2016-03-30 00:48:47.000000000 -0700 ++++ b/include/configs/odroidc2.h 2016-05-02 11:46:12.581483463 -0700 +@@ -79,36 +79,24 @@ + #define CONFIG_SYS_MAXARGS 64 + + #define CONFIG_EXTRA_ENV_SETTINGS \ +- "boardname=ODROIDC2\0" \ +- "loadaddr=0x20000000\0" \ +- "dtbaddr=0x1000000\0" \ +- "fdt_high=0x20000000\0" \ +- "hdmimode=720p60hz\0" \ +- "cecconfig=cec0xf\0" \ +- "bootargs=root=/dev/mmcblk0p2 rw init=/init rootwait " \ +- "console=ttyS0,115200 " \ +- "hdmimode=720p60hz hdmitx=cecf " \ +- "logo=osd1,loaded,0x3f800000,720p60hz " \ +- "androidboot.hardware=odroidc2 androidboot.serialno=${fbt_id#} " \ +- "androidboot.selinux=disabled \0" \ +- "bootcmd=cfgload; showlogo ${hdmimode}; movi read dtb 0 ${dtbaddr}; movi read boot 0 ${loadaddr}; booti ${loadaddr} - ${dtbaddr}\0" ++ "bootcmd=cfgload\0" + + #define CONFIG_PREBOOT + #define CONFIG_BOOTCOMMAND + +-//#define CONFIG_ENV_IS_NOWHERE 1 ++#define CONFIG_ENV_IS_NOWHERE 1 + #define CONFIG_ENV_SIZE (32 * SZ_1K) /* 32kB */ + #define CONFIG_ENV_OFFSET (720 * SZ_1K) /* FIXME: should be + close to U-boot image + size to save space */ + #define CONFIG_FIT 1 + #define CONFIG_OF_LIBFDT 1 +-#define CONFIG_ANDROID_BOOT_IMAGE 1 +-#define CONFIG_ANDROID_IMG 1 ++//#define CONFIG_ANDROID_BOOT_IMAGE 1 ++//#define CONFIG_ANDROID_IMG 1 + #define CONFIG_SYS_BOOTM_LEN (64 << 20) /* Increase max gunzip size*/ + + /* Support commands */ +-#define CONFIG_CMD_SAVEENV 1 ++//#define CONFIG_CMD_SAVEENV 1 + #define CONFIG_CMD_CACHE 1 + #define CONFIG_CMD_BOOTI 1 + #define CONFIG_CMD_EFUSE 1 +@@ -176,8 +164,8 @@ + #define CONFIG_LZO 1 + + /* storage: emmc/nand/sd */ +-#define CONFIG_ENV_OVERWRITE +-#define CONFIG_ENV_IS_IN_MMC 1 ++//#define CONFIG_ENV_OVERWRITE ++#define CONFIG_ENV_IS_IN_MMC 0 + #define CONFIG_SYS_MMC_ENV_DEV 0 + #define CONFIG_AML_SD_EMMC 1 +