diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6/install_linux_fw_sd.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6/install_linux_fw_sd.txt new file mode 100644 index 000000000..beb7f46b5 --- /dev/null +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey-2015.04/ccimx6/install_linux_fw_sd.txt @@ -0,0 +1,164 @@ +# +# U-Boot script for installing Linux images created by Yocto from the SD +# card into the eMMC +# + +echo "############################################################" +echo "# Linux firmware install from micro SD #" +echo "############################################################" +echo "" +echo " This process will erase your eMMC and will install a new" +echo " U-Boot, and Linux firmware images on the eMMC." +echo "" +echo " Press CTRL+C now if you wish to abort or wait 10 seconds" +echo " to continue." + +sleep 10 +if test $? -eq 1; then + echo "Aborted by user."; + exit; +fi + +# Ask for user confirmation (to be enabled in the future when shipped U-Boot +# supports the 'askenv' command) +#askenv install_yn "Do you want to continue? (y/n):" 1 +#if test "${install_yn}" != "y" && test "${install_yn}" != "Y"; then +# echo "Aborted."; +# exit; +#fi + +# Determine U-Boot file to program basing on module variant +if test "${module_variant}" = "0x12"; then + setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qsbc2GB.imx; +elif test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04" || test "${module_variant}" = "0x05" || test "${module_variant}" = "0x11"; then + setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qsbc.imx; +elif test "${module_variant}" = "0x03" || test "${module_variant}" = "0x0e" || test "${module_variant}" = "0x0f"; then + setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qsbc512MB.imx; +elif test "${module_variant}" = "0x0b"; then + setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6dlsbc.imx; +elif test "${module_variant}" = "0x0c" || test "${module_variant}" = "0x13"; then + setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6dlsbc512MB.imx; +else + if test -z "${INSTALL_UBOOT_FILENAME}"; then + echo "[ERROR] Cannot determine U-Boot file for this module!"; + echo ""; + echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 6 variant:"; + echo " - For a Quad/Dual CPU with 2GB DDR3, run:"; + echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qsbc2GB.imx"; + echo " - For a Quad/Dual CPU with 1GB DDR3, run:"; + echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qsbc.imx"; + echo " - For a Quad/Dual CPU with 512MB DDR3, run:"; + echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qsbc512MB.imx"; + echo " - For a DualLite/Solo CPU with 1GB DDR3, run:"; + echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6dlsbc.imx"; + echo " - For a DualLite/Solo CPU with 512MB DDR3, run:"; + echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6dlsbc512MB.imx"; + echo ""; + echo "2. Run the install script again."; + echo ""; + echo "Aborted"; + exit; + fi; +fi + +setenv INSTALL_LINUX_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6sbc.boot.vfat +setenv INSTALL_ROOTFS_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6sbc.ext4 + +# Check for presence of firmware files on the SD card +for install_f in $INSTALL_UBOOT_FILENAME $INSTALL_LINUX_FILENAME $INSTALL_ROOTFS_FILENAME; do + if test ! -e mmc 1:1 $install_f; then + echo "ERROR: Could not find file $install_f"; + install_abort=1 + fi; +done +if test "${install_abort}" = "1"; then + echo "Aborted."; + exit; +fi + +# Skip user confirmation for U-Boot update +setenv forced_update 1 + +# Set bootdelay to zero so that firmware update is run immediately after +# the first reset. +setenv bootdelay 0 + +# Set target MMC device index to eMMC +setenv mmcdev 0 + +# Update U-Boot +echo "" +echo "" +echo ">> Installing U-Boot boot loader (target will reset)"; +echo "" +echo "" +update uboot mmc 1 fat $INSTALL_UBOOT_FILENAME +if test $? -eq 1; then + echo "[ERROR] Failed to update U-Boot boot loader!"; + echo ""; + echo "Aborted."; + exit; +fi + +# Set 'bootcmd' to the second part of the script that will +# - Reset environment to defaults +# - Save the environment +# - Partition the eMMC user data area for Linux +# - Update the 'linux' partition +# - Update the 'rootfs' partition +# - Reset the system and let it boot +setenv bootcmd ' + env default -a; + saveenv; + setenv mmcdev 0; + setenv INSTALL_LINUX_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6sbc.boot.vfat + setenv INSTALL_ROOTFS_FILENAME dey-image-qt-##GRAPHICAL_BACKEND##-ccimx6sbc.ext4 + echo ""; + echo ""; + echo ">> Creating Linux partition table on the eMMC"; + echo ""; + echo ""; + run partition_mmc_linux; + if test $? -eq 1; then + echo "[ERROR] Failed to create Linux partition table!"; + echo ""; + echo "Aborted."; + exit; + fi; + echo ""; + echo ""; + echo ">> Installing Linux kernel and device tree files"; + echo ""; + echo ""; + update linux mmc 1 fat $INSTALL_LINUX_FILENAME; + if test $? -eq 1; then + echo "[ERROR] Failed to update linux partition!"; + echo ""; + echo "Aborted."; + exit; + fi; + echo ""; + echo ""; + echo ">> Installing Linux root file system"; + echo ""; + echo ""; + update rootfs mmc 1 fat $INSTALL_ROOTFS_FILENAME; + if test $? -eq 1; then + echo "[ERROR] Failed to update rootfs partition!"; + echo ""; + echo "Aborted."; + exit; + fi; + echo ""; + echo "#######################"; + echo "# Install complete! #"; + echo "#######################"; + echo ""; + sleep 1; + echo ">> Restarting the system"; + sleep 1; + reset; +' + +saveenv +reset \ No newline at end of file diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey_2015.04.bb b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey_2015.04.bb index 3af8c312c..a92d98824 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey_2015.04.bb +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey_2015.04.bb @@ -19,6 +19,7 @@ UBOOT_GIT_URI = "${@base_conditional('DIGI_INTERNAL_GIT', '1' , '${DIGI_GIT}u-bo SRC_URI = " \ ${UBOOT_GIT_URI};branch=${SRCBRANCH} \ file://boot.txt \ + file://install_linux_fw_sd.txt \ " LOCALVERSION ?= "" @@ -48,6 +49,10 @@ do_deploy_append() { unset i fi + # DEY firmware install script + sed -i -e 's,##GRAPHICAL_BACKEND##,${GRAPHICAL_BACKEND},g' ${WORKDIR}/install_linux_fw_sd.txt + mkimage -T script -n "DEY firmware install script" -C none -d ${WORKDIR}/install_linux_fw_sd.txt ${DEPLOYDIR}/install_linux_fw_sd.scr + # Boot script for DEY images mkimage -T script -n bootscript -C none -d ${WORKDIR}/boot.txt ${DEPLOYDIR}/boot.scr }