Merge pull request #4147 from vpeter4/imx6_p2

u-boot: support for multiple targets, patches for udoo system
This commit is contained in:
Stephan Raue 2015-05-14 20:34:05 +02:00
commit 54d2fa8ad4
6 changed files with 2216 additions and 55 deletions

View File

@ -36,14 +36,13 @@ PKG_PRIORITY="optional"
PKG_SECTION="tools"
PKG_SHORTDESC="u-boot: Universal Bootloader project"
PKG_LONGDESC="Das U-Boot is a cross-platform bootloader for embedded systems, used as the default boot loader by several board vendors. It is intended to be easy to port and to debug, and runs on many supported architectures, including PPC, ARM, MIPS, x86, m68k, NIOS, and Microblaze."
PKG_IS_ADDON="no"
PKG_AUTORECONF="no"
pre_configure_target() {
if [ -z "$UBOOT_CONFIG" ]; then
echo "$TARGET_PLATFORM does not define any u-boot configuration, aborting."
echo "Please add MACHINE_UBOOT_CONFIG to your platform meta file"
echo "Please add UBOOT_CONFIG to your project options file."
exit 1
fi
@ -53,13 +52,39 @@ pre_configure_target() {
unset LDFLAGS
# dont use some optimizations because of problems
# dont build in parallel because of problems
MAKEFLAGS=-j1
}
make_target() {
make CROSS_COMPILE="$TARGET_PREFIX" ARCH="$TARGET_ARCH" $UBOOT_CONFIG
make CROSS_COMPILE="$TARGET_PREFIX" ARCH="$TARGET_ARCH" HOSTCC="$HOST_CC" HOSTSTRIP="true"
# get number of targets to build
UBOOT_TARGET_CNT=0
for UBOOT_TARGET in $UBOOT_CONFIG; do
UBOOT_TARGET_CNT=$((UBOOT_TARGET_CNT + 1))
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"
# rename files in case of multiple targets
if [ $UBOOT_TARGET_CNT -gt 1 ]; then
if [ "$UBOOT_TARGET" = "mx6_cubox-i_config" ]; then
TARGET_NAME="cuboxi"
elif [ "$UBOOT_TARGET" = "matrix" ]; then
TARGET_NAME="matrix"
elif [ "$UBOOT_TARGET" = "udoo_quad_config" ]; then
TARGET_NAME="udoo_quad"
else
TARGET_NAME="undef"
fi
[ -f u-boot.img ] && mv u-boot.img u-boot-$TARGET_NAME.img
[ -f u-boot.imx ] && mv u-boot.imx u-boot-$TARGET_NAME.imx
[ -f SPL ] && mv SPL SPL-$TARGET_NAME
fi
done
}
makeinstall_target() {
@ -84,25 +109,13 @@ makeinstall_target() {
mkdir -p $INSTALL/usr/share/bootloader
if [ -f "./u-boot.imx" ]; then
cp ./u-boot.imx $INSTALL/usr/share/bootloader
fi
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 || :
if [ -f "./u-boot.img" ]; then
cp ./u-boot.img $INSTALL/usr/share/bootloader
fi
if [ -f "./SPL" ]; then
cp ./SPL $INSTALL/usr/share/bootloader
fi
if [ -f "./$UBOOT_CONFIGFILE" ]; then
cp ./$UBOOT_CONFIGFILE $INSTALL/usr/share/bootloader
fi
cp ./$UBOOT_CONFIGFILE $INSTALL/usr/share/bootloader 2>/dev/null || :
cp -PRv $PKG_DIR/scripts/update.sh $INSTALL/usr/share/bootloader
if [ -f "$PROJECT_DIR/$PROJECT/bootloader/uEnv.txt" ]; then
cp -PR $PROJECT_DIR/$PROJECT/bootloader/uEnv.txt $INSTALL/usr/share/bootloader
fi
cp -PR $PROJECT_DIR/$PROJECT/bootloader/uEnv*.txt $INSTALL/usr/share/bootloader 2>/dev/null || :
}

View File

@ -25,28 +25,11 @@ if [ -z "$UBOOT_CONFIGFILE" ]; then
fi
mkdir -p $RELEASE_DIR/3rdparty/bootloader
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-*/$UBOOT_CONFIGFILE $RELEASE_DIR/3rdparty/bootloader 2>/dev/null || :
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 || :
if [ -e $BUILD/u-boot-*/SPL ] ;then
cp -PR $BUILD/u-boot-*/SPL $RELEASE_DIR/3rdparty/bootloader
elif [ -e $BUILD/u-boot-*/u-boot.imx ] ;then
cp -PR $BUILD/u-boot-*/u-boot.imx $RELEASE_DIR/3rdparty/bootloader
fi
cp -PR $PROJECT_DIR/$PROJECT/bootloader/uEnv*.txt $RELEASE_DIR/3rdparty/bootloader 2>/dev/null || :
if [ -e $BUILD/u-boot-*/u-boot.img ] ;then
cp -PR $BUILD/u-boot-*/u-boot.img $RELEASE_DIR/3rdparty/bootloader
fi
if [ -e $BUILD/u-boot-*/u-boot.imx ] ;then
cp -PR $BUILD/u-boot-*/u-boot.imx $RELEASE_DIR/3rdparty/bootloader
fi
for dtb in $BUILD/linux-*/arch/arm/boot/dts/*.dtb; do
cp -PR $dtb $RELEASE_DIR/3rdparty/bootloader 2>/dev/null || :
done
if [ -f "$PROJECT_DIR/$PROJECT/bootloader/uEnv.txt" ]; then
cp -PR $PROJECT_DIR/$PROJECT/bootloader/uEnv.txt $RELEASE_DIR/3rdparty/bootloader
fi
cp -PR $BUILD/linux-*/arch/arm/boot/dts/*.dtb $RELEASE_DIR/3rdparty/bootloader 2>/dev/null || :

View File

@ -32,6 +32,13 @@ if [ -z "$BOOT_DISK" ]; then
esac
fi
# we don't have mounted /etc in initramfs so just load system type
if [ -f $SYSTEM_ROOT/etc/profile.d/01-system_type.conf ]; then
. $SYSTEM_ROOT/etc/profile.d/01-system_type.conf
else
SYSTEM_TYPE=""
fi
# mount $BOOT_ROOT r/w
mount -o remount,rw $BOOT_ROOT
@ -45,18 +52,44 @@ fi
done
# update bootloader files
if [ -f $SYSTEM_ROOT/usr/share/bootloader/u-boot.img ]; then
echo "*** updating u-boot image: $BOOT_ROOT/u-boot.img ..."
cp -p $SYSTEM_ROOT/usr/share/bootloader/u-boot.img $BOOT_ROOT
if [ "$SYSTEM_TYPE" = "matrix" ]; then
if [ -f $SYSTEM_ROOT/usr/share/bootloader/u-boot-$SYSTEM_TYPE.imx ]; then
echo "*** updating u-boot image in eMMC ..."
# clean up u-boot parameters
#dd if=/dev/zero of=/dev/mmcblk0 bs=1024 seek=384 count=8
# access boot partition 1
echo 0 > /sys/block/mmcblk0boot0/force_ro
# write u-boot to eMMC
dd if=$SYSTEM_ROOT/usr/share/bootloader/u-boot-$SYSTEM_TYPE.imx of=/dev/mmcblk0boot0 bs=1k seek=1 conv=fsync
# re-enable read-only access
echo 1 > /sys/block/mmcblk0boot0/force_ro
# enable boot partion 1 to boot
echo 8 > /sys/devices/soc0/soc.1/2100000.aips-bus/219c000.usdhc/mmc_host/mmc2/mmc2:0001/boot_config
fi
else
if [ -n "$SYSTEM_TYPE" ]; then
UBOOT_IMG_SRC=u-boot-$SYSTEM_TYPE.img
SPL_SRC=SPL-$SYSTEM_TYPE
else
UBOOT_IMG_SRC=u-boot.img
SPL_SRC=SPL
fi
if [ -f $SYSTEM_ROOT/usr/share/bootloader/$UBOOT_IMG_SRC ]; then
echo "*** updating u-boot image: $BOOT_ROOT/u-boot.img ..."
cp -p $SYSTEM_ROOT/usr/share/bootloader/$UBOOT_IMG_SRC $BOOT_ROOT/u-boot.img
fi
if [ -f $SYSTEM_ROOT/usr/share/bootloader/$SPL_SRC ]; then
echo "*** updating u-boot SPL Blob on: $BOOT_DISK ..."
dd if="$SYSTEM_ROOT/usr/share/bootloader/$SPL_SRC" of="$BOOT_DISK" bs=1k seek=1 conv=fsync
fi
fi
if [ -f $SYSTEM_ROOT/usr/share/bootloader/SPL ]; then
echo "*** updating u-boot SPL Blob on: $BOOT_DISK ..."
dd if="$SYSTEM_ROOT/usr/share/bootloader/SPL" of="$BOOT_DISK" bs=1k seek=1 conv=fsync
fi
# prefer uEnv.txt over boot.scr
if [ -f $SYSTEM_ROOT/usr/share/bootloader/uEnv.txt -a ! -f $BOOT_ROOT/uEnv.txt ]; then
# prefer uEnv.txt over boot.scr
if [ -n "$SYSTEM_TYPE" -a -f $SYSTEM_ROOT/usr/share/bootloader/uEnv-$SYSTEM_TYPE.txt -a ! -f $BOOT_ROOT/uEnv.txt ]; then
cp -p $SYSTEM_ROOT/usr/share/bootloader/uEnv-$SYSTEM_TYPE.txt $BOOT_ROOT/uEnv.txt
elif [ -f $SYSTEM_ROOT/usr/share/bootloader/uEnv.txt -a ! -f $BOOT_ROOT/uEnv.txt ]; then
cp -p $SYSTEM_ROOT/usr/share/bootloader/uEnv.txt $BOOT_ROOT
elif [ -f $SYSTEM_ROOT/usr/share/bootloader/boot.scr -a ! -f $BOOT_ROOT/boot.scr ]; then
cp -p $SYSTEM_ROOT/usr/share/bootloader/boot.scr $BOOT_ROOT

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,206 @@
From 590891a15d4f3facafeb3186a8d3217f33343eb3 Mon Sep 17 00:00:00 2001
From: Robert Nelson <robertcnelson@gmail.com>
Date: Wed, 23 Apr 2014 11:48:34 -0500
Subject: [PATCH] udoo: uEnv.txt, bootz, n fixes
diff -urN a/include/configs/udoo.h b/include/configs/udoo.h
--- a/include/configs/udoo.h 2014-11-29 15:55:08.877512289 +0100
+++ b/include/configs/udoo.h 2014-11-29 16:14:42.716345900 +0100
@@ -101,7 +101,7 @@
#define CONFIG_CMD_BMODE
#define CONFIG_CMD_SETEXPR
-#define CONFIG_BOOTDELAY 5
+#define CONFIG_BOOTDELAY 1
#define CONFIG_SYS_MEMTEST_START 0x10000000
#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 500 * SZ_1M)
@@ -119,101 +119,118 @@
#define CONFIG_BOUNCE_BUFFER
#define CONFIG_CMD_EXT2
#define CONFIG_CMD_FAT
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_FS_GENERIC
#define CONFIG_DOS_PARTITION
#define CONFIG_DEFAULT_FDT_FILE "imx6q-udoo.dtb"
#define CONFIG_EXTRA_ENV_SETTINGS \
"script=boot.scr\0" \
- "uimage=/boot/uImage\0" \
+ "image=zImage\0" \
"console=ttymxc1\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffff\0" \
"initrd_high=0xffffffff\0" \
"fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
- "fdt_addr=0x11000000\0" \
+ "fdt_addr=0x18000000\0" \
"boot_fdt=try\0" \
"ip_dyn=yes\0" \
- "hdmi_patch=\0" \
+ "optargs=\0" \
+ "video=\0" \
"mmcdev=0\0" \
"mmcpart=1\0" \
- "mmcroot=/dev/mmcblk0p1 rootwait rw\0" \
+ "mmcroot=/dev/mmcblk0p2 ro\0" \
+ "mmcrootfstype=ext4 rootwait\0" \
"update_sd_firmware_filename=u-boot.imx\0" \
"update_sd_firmware=" \
- "if test ${ip_dyn} = yes; then " \
- "setenv get_cmd dhcp; " \
- "else " \
- "setenv get_cmd tftp; " \
- "fi; " \
- "if mmc dev ${mmcdev}; then " \
- "if ${get_cmd} ${update_sd_firmware_filename}; then " \
- "setexpr fw_sz ${filesize} / 0x200; " \
- "setexpr fw_sz ${fw_sz} + 1; " \
- "mmc write ${loadaddr} 0x2 ${fw_sz}; " \
- "fi; " \
- "fi\0" \
+ "if test ${ip_dyn} = yes; then " \
+ "setenv get_cmd dhcp; " \
+ "else " \
+ "setenv get_cmd tftp; " \
+ "fi; " \
+ "if mmc dev ${mmcdev}; then " \
+ "if ${get_cmd} ${update_sd_firmware_filename}; then " \
+ "setexpr fw_sz ${filesize} / 0x200; " \
+ "setexpr fw_sz ${fw_sz} + 1; " \
+ "mmc write ${loadaddr} 0x2 ${fw_sz}; " \
+ "fi; " \
+ "fi\0" \
"mmcargs=setenv bootargs console=${console},${baudrate} " \
- "root=${mmcroot} " \
- "${hdmi_patch} " \
- "fbmem=24M video=mxcfb0:dev=hdmi,1920x1080M@60,bpp=32\0" \
+ "${optargs} " \
+ "root=${mmcroot} " \
+ "rootfstype=${mmcrootfstype} " \
+ "video=${video}\0" \
+ "loadbootenv=load mmc ${mmcdev}:${mmcpart} ${loadaddr} uEnv.txt\0" \
+ "importbootenv=echo Importing environment from mmc (uEnv.txt)...; " \
+ "env import -t $loadaddr $filesize\0" \
"loadbootscript=" \
- "ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+ "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
"bootscript=echo Running bootscript from mmc ...; " \
- "source\0" \
- "loaduimage=ext2load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
- "loadfdt=ext2load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
+ "source\0" \
+ "loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} zImage\0" \
+ "loadzimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} zImage\0" \
+ "loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} /dtbs/${fdt_file}\0" \
"mmcboot=echo Booting from mmc ...; " \
- "run mmcargs; " \
- "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
- "if run loadfdt; then " \
- "bootm ${loadaddr} - ${fdt_addr}; " \
- "else " \
- "if test ${boot_fdt} = try; then " \
- "bootm; " \
- "else " \
- "echo WARN: Cannot load the DT; " \
- "fi; " \
- "fi; " \
- "else " \
- "bootm; " \
- "fi;\0" \
+ "run mmcargs; " \
+ "bootz ${loadaddr} - ${fdt_addr};\0" \
+ "mmcbootdefault=echo Booting from mmc ...; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+ "if run loadfdt; then " \
+ "bootz ${loadaddr} - ${fdt_addr}; " \
+ "else " \
+ "if test ${boot_fdt} = try; then " \
+ "bootz ${loadaddr}; " \
+ "else " \
+ "echo WARN: Cannot load the DT; " \
+ "fi; " \
+ "fi; " \
+ "else " \
+ "bootz ${loadaddr}; " \
+ "fi;\0" \
"netargs=setenv bootargs console=${console},${baudrate} " \
- "root=/dev/nfs " \
- "${hdmi_patch} " \
+ "root=/dev/nfs " \
"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
- "netboot=echo Booting from net ...; " \
- "run netargs; " \
- "if test ${ip_dyn} = yes; then " \
- "setenv get_cmd dhcp; " \
- "else " \
- "setenv get_cmd tftp; " \
- "fi; " \
- "${get_cmd} ${uimage}; " \
- "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
- "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
- "bootm ${loadaddr} - ${fdt_addr}; " \
- "else " \
- "if test ${boot_fdt} = try; then " \
- "bootm; " \
- "else " \
- "echo WARN: Cannot load the DT; " \
- "fi; " \
- "fi; " \
- "else " \
- "bootm; " \
- "fi;\0"
+ "netboot=echo Booting from net ...; " \
+ "run netargs; " \
+ "if test ${ip_dyn} = yes; then " \
+ "setenv get_cmd dhcp; " \
+ "else " \
+ "setenv get_cmd tftp; " \
+ "fi; " \
+ "${get_cmd} ${image}; " \
+ "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+ "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
+ "bootz ${loadaddr} - ${fdt_addr}; " \
+ "else " \
+ "if test ${boot_fdt} = try; then " \
+ "bootz; " \
+ "else " \
+ "echo WARN: Cannot load the DT; " \
+ "fi; " \
+ "fi; " \
+ "else " \
+ "bootz; " \
+ "fi;\0"
#define CONFIG_BOOTCOMMAND \
- "mmc dev ${mmcdev}; if mmc rescan; then " \
- "if run loadbootscript; then " \
- "run bootscript; " \
- "else " \
- "if run loaduimage; then " \
- "run mmcboot; " \
- "else run netboot; " \
- "fi; " \
- "fi; " \
- "else run netboot; fi"
+ "mmc dev ${mmcdev};" \
+ "if mmc rescan; then " \
+ "echo SD/MMC found on device ${mmcdev};" \
+ "if run loadbootenv; then " \
+ "run importbootenv;" \
+ "fi;" \
+ "echo Checking if uenvcmd is set ...;" \
+ "if test -n $uenvcmd; then " \
+ "echo Running uenvcmd ...;" \
+ "run uenvcmd;" \
+ "fi;" \
+ "echo Running default loadimage ...;" \
+ "if run loadimage; then " \
+ "run loadfdt;" \
+ "run mmcboot;" \
+ "fi;" \
+ "fi;"
/* Miscellaneous configurable options */
#define CONFIG_SYS_LONGHELP

View File

@ -0,0 +1,27 @@
diff -urN a/include/configs/udoo.h b/include/configs/udoo.h
--- a/include/configs/udoo.h 2014-11-29 18:58:38.930773257 +0100
+++ b/include/configs/udoo.h 2014-11-29 19:04:06.005449364 +0100
@@ -126,8 +126,9 @@
#define CONFIG_DEFAULT_FDT_FILE "imx6q-udoo.dtb"
#define CONFIG_EXTRA_ENV_SETTINGS \
+ "zImage=KERNEL\0" \
"script=boot.scr\0" \
- "image=zImage\0" \
+ "image=${zImage}\0" \
"console=ttymxc1\0" \
"splashpos=m,m\0" \
"fdt_high=0xffffffff\0" \
@@ -168,9 +169,9 @@
"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
"bootscript=echo Running bootscript from mmc ...; " \
"source\0" \
- "loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} zImage\0" \
- "loadzimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} zImage\0" \
- "loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} /dtbs/${fdt_file}\0" \
+ "loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${zImage}\0" \
+ "loadzimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${zImage}\0" \
+ "loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
"mmcboot=echo Booting from mmc ...; " \
"run mmcargs; " \
"bootz ${loadaddr} - ${fdt_addr};\0" \