From 34f162379cd06a6f56e2055e276e188662e1404d Mon Sep 17 00:00:00 2001 From: Alex Kaplan Date: Tue, 27 Oct 2015 18:06:06 -0700 Subject: [PATCH 01/20] added sunxi-spl-with-ecc Signed-off-by: Alex Kaplan --- chip-fel-flash.sh | 79 +++++++++++++++++++---------------------- chip-update-firmware.sh | 23 +++++++++--- 2 files changed, 56 insertions(+), 46 deletions(-) diff --git a/chip-fel-flash.sh b/chip-fel-flash.sh index be9dc49..7e64674 100755 --- a/chip-fel-flash.sh +++ b/chip-fel-flash.sh @@ -3,12 +3,36 @@ SCRIPTDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) source $SCRIPTDIR/common.sh +############################################################## +# main +############################################################## +while getopts "flu:" opt; do + case $opt in + f) + echo "fastboot enabled" + METHOD=fastboot + ;; + l) + echo "factory mode remain in u-boot after flashing" + AFTER_FLASHING=loop + ;; + u) + BUILDROOT_OUTPUT_DIR="${OPTARG}" + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +echo "BUILDROOT_OUTPUT_DIR = $BUILDROOT_OUTPUT_DIR" + FEL=fel METHOD=${METHOD:-fel} -AFTER_FLASHING=${AFTER_FLASHING:-boot} +AFTER_FLASHING=${AFTER_FLASHING:-wait} -echo "BUILDROOT_OUTPUT_DIR = $BUILDROOT_OUTPUT_DIR" NAND_ERASE_BB=false if [ "$1" == "erase-bb" ]; then @@ -17,7 +41,7 @@ fi PATH=$PATH:$BUILDROOT_OUTPUT_DIR/host/usr/bin TMPDIR=`mktemp -d -t chipflashXXXXXX` -PADDED_SPL="$TMPDIR/sunxi-padded-spl" +PADDED_SPL="${BUILDROOT_OUTPUT_DIR}/images/sunxi-spl-with-ecc.bin" PADDED_SPL_SIZE=0 UBOOT_SCRIPT="$TMPDIR/uboot.scr" UBOOT_SCRIPT_MEM_ADDR=0x43100000 @@ -36,31 +60,22 @@ PAGE_SIZE=16384 OOB_SIZE=1664 prepare_images() { - local in=$SPL - local out=$PADDED_SPL - - if [ -e $out ]; then - rm $out - fi - - if [[ ! -e "${SCRIPTDIR}/spl-image-builder" ]]; then - pushd "${SCRIPTDIR}" - make - popd + #PADDED_SPL_SIZE in pages + if [[ ! -e "${PADDED_SPL}" ]]; then + echo "ERROR: can not read ${PADDED_SPL}" + exit 1 fi - "${SCRIPTDIR}/spl-image-builder" -d -r 3 -u 4096 -o 1664 -p 16384 -c 1024 -s 64 "$in" "$out" - - #PADDED_SPL_SIZE in pages - PADDED_SPL_SIZE=$(filesize "$out") + PADDED_SPL_SIZE=$(filesize "${PADDED_SPL}") PADDED_SPL_SIZE=$(($PADDED_SPL_SIZE / ($PAGE_SIZE + $OOB_SIZE))) PADDED_SPL_SIZE=$(echo $PADDED_SPL_SIZE | xargs printf "0x%08x") - echo "filesize= $(filesize "$out")" echo "PADDED_SPL_SIZE=$PADDED_SPL_SIZE" # Align the u-boot image on a page boundary dd if="$UBOOT" of="$PADDED_UBOOT" bs=16k conv=sync UBOOT_SIZE=`filesize "$PADDED_UBOOT" | xargs printf "0x%08x"` + echo "UBOOT_SIZE=${UBOOT_SIZE}" + echo "PADDED_UBOOT_SIZE=${PADDED_UBOOT_SIZE}" dd if=/dev/urandom of="$PADDED_UBOOT" seek=$((UBOOT_SIZE / 0x4000)) bs=16k count=$(((PADDED_UBOOT_SIZE - UBOOT_SIZE) / 0x4000)) } @@ -107,26 +122,6 @@ prepare_uboot_script() { } -############################################################## -# main -############################################################## -while getopts "fl" opt; do - case $opt in - f) - echo "fastboot enabled" - METHOD=fastboot - ;; - l) - echo "factory mode remain in u-boot after flashing" - AFTER_FLASHING=loop - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - exit 1 - ;; - esac -done - echo == preparing images == prepare_images @@ -141,13 +136,13 @@ ${FEL} spl "${SPL}" sleep 1 # wait for DRAM initialization to complete echo == upload spl == -${FEL} write $SPL_MEM_ADDR "${PADDED_SPL}" +${FEL} write $SPL_MEM_ADDR "${PADDED_SPL}" || ( echo "ERROR: could not write ${PADDED_SPL}" && exit $? ) echo == upload u-boot == -${FEL} write $UBOOT_MEM_ADDR "${PADDED_UBOOT}" +${FEL} write $UBOOT_MEM_ADDR "${PADDED_UBOOT}" || ( echo "ERROR: could not write ${PADDED_UBOOT}" && exit $? ) echo == upload u-boot script == -${FEL} write $UBOOT_SCRIPT_MEM_ADDR "${UBOOT_SCRIPT}" +${FEL} write $UBOOT_SCRIPT_MEM_ADDR "${UBOOT_SCRIPT}" || ( echo "ERROR: could not write ${UBOOT_SCRIPT}" && exit $? ) if [[ "${METHOD}" == "fel" ]]; then echo == upload ubi == diff --git a/chip-update-firmware.sh b/chip-update-firmware.sh index 38c5fa9..78a0e61 100755 --- a/chip-update-firmware.sh +++ b/chip-update-firmware.sh @@ -32,17 +32,23 @@ function cache_download { if [[ "${S3_MD5}" != "${MD5}" ]]; then echo "md5sum differs" rm ${DEST_DIR}/${FILE} - wget -P "${FW_IMAGE_DIR}" "${SRC_URL}/${FILE}" + if ! wget -P "${FW_IMAGE_DIR}" "${SRC_URL}/${FILE}"; then + echo "download of ${SRC_URL}/${FILE} failed!" + exit $? + fi else echo "file already downloaded" fi else - wget -P "${FW_IMAGE_DIR}" "${SRC_URL}/${FILE}" + if ! wget -P "${FW_IMAGE_DIR}" "${SRC_URL}/${FILE}"; then + echo "download of ${SRC_URL}/${FILE} failed!" + exit $? + fi fi } -while getopts "ufd" opt; do +while getopts "ufdb:w:" opt; do case $opt in u) echo "updating cache" @@ -54,6 +60,14 @@ while getopts "ufd" opt; do echo "fastboot enabled" FLASH_SCRIPT_OPTION="-f" ;; + b) + BRANCH="$OPTARG" + echo "BRANCH = ${BRANCH}" + ;; + w) + WHAT="$OPTARG" + echo "WHAT = ${BRANCH}" + ;; d) echo "debian selected" WHAT="debian" @@ -97,11 +111,12 @@ require_directory "${FW_IMAGE_DIR}" cache_download "${FW_IMAGE_DIR}" ${ROOTFS_URL} rootfs.ubi cache_download "${FW_IMAGE_DIR}" ${BR_URL} sun5i-r8-chip.dtb cache_download "${FW_IMAGE_DIR}" ${BR_URL} sunxi-spl.bin +cache_download "${FW_IMAGE_DIR}" ${BR_URL} sunxi-spl-with-ecc.bin cache_download "${FW_IMAGE_DIR}" ${BR_URL} uboot-env.bin cache_download "${FW_IMAGE_DIR}" ${BR_URL} zImage cache_download "${FW_IMAGE_DIR}" ${BR_URL} u-boot-dtb.bin -BUILDROOT_OUTPUT_DIR="${FW_DIR}" ${FLASH_SCRIPT} ${FLASH_SCRIPT_OPTION} +BUILDROOT_OUTPUT_DIR="${FW_DIR}" ${FLASH_SCRIPT} ${FLASH_SCRIPT_OPTION} || echo "ERROR: could not flash" && exit 1 if ! wait_for_linuxboot; then echo "ERROR: could not flash" From 3479cab875a38742212bfcbfb0834edf00ef2aee Mon Sep 17 00:00:00 2001 From: Alex Kaplan Date: Fri, 30 Oct 2015 17:12:09 -0700 Subject: [PATCH 02/20] enable sparse image & define vendor id for fastboot --- chip-fel-fastboot.sh | 2 +- chip-fel-flash.sh | 28 +++++++++++++++------------- chip-update-firmware.sh | 7 ++++++- common.sh | 3 ++- 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/chip-fel-fastboot.sh b/chip-fel-fastboot.sh index 6491519..8cdd67b 100755 --- a/chip-fel-fastboot.sh +++ b/chip-fel-fastboot.sh @@ -79,7 +79,7 @@ prepare_uboot_script() { echo "saveenv" >> "${UBOOT_SCRIPT_SRC}" echo "echo going to fastboot mode" >>"${UBOOT_SCRIPT_SRC}" - echo "fastboot" >>"${UBOOT_SCRIPT_SRC}" + echo "fastboot 0" >>"${UBOOT_SCRIPT_SRC}" echo "echo " >>"${UBOOT_SCRIPT_SRC}" echo "echo *****************[ BOOT ]*****************" >>"${UBOOT_SCRIPT_SRC}" echo "echo " >>"${UBOOT_SCRIPT_SRC}" diff --git a/chip-fel-flash.sh b/chip-fel-flash.sh index 7e64674..6f6fea3 100755 --- a/chip-fel-flash.sh +++ b/chip-fel-flash.sh @@ -53,6 +53,7 @@ PADDED_UBOOT="$TMPDIR/padded-uboot" PADDED_UBOOT_SIZE=0xc0000 UBOOT_MEM_ADDR=0x4a000000 UBI="$BUILDROOT_OUTPUT_DIR/images/rootfs.ubi" +SPARSE_UBI="${TMPDIR}/rootfs.ubi.sparse" UBI_MEM_ADDR=0x4b000000 UBI_SIZE=`filesize $UBI | xargs printf "0x%08x"` @@ -85,25 +86,23 @@ prepare_uboot_script() { else echo "nand erase 0x0 0x200000000" > "${UBOOT_SCRIPT_SRC}" fi - echo "echo sunxi_nand config spl" >> "${UBOOT_SCRIPT_SRC}" - echo "sunxi_nand config spl" >> "${UBOOT_SCRIPT_SRC}" - echo "echo nand write.raw $SPL_MEM_ADDR 0x0 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" - echo "nand write.raw $SPL_MEM_ADDR 0x0 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" - echo "echo nand write.raw $SPL_MEM_ADDR 0x400000 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" - echo "nand write.raw $SPL_MEM_ADDR 0x400000 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" - echo "sunxi_nand config default" >> "${UBOOT_SCRIPT_SRC}" + + echo "echo nand write.raw.noverify $SPL_MEM_ADDR 0x0 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" + echo "nand write.raw.noverify $SPL_MEM_ADDR 0x0 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" + echo "echo nand write.raw.noverify $SPL_MEM_ADDR 0x400000 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" + echo "nand write.raw.noverify $SPL_MEM_ADDR 0x400000 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" + echo "nand write $UBOOT_MEM_ADDR 0x800000 $PADDED_UBOOT_SIZE" >> "${UBOOT_SCRIPT_SRC}" echo "setenv bootargs root=ubi0:rootfs rootfstype=ubifs rw earlyprintk ubi.mtd=4" >> "${UBOOT_SCRIPT_SRC}" echo "setenv bootcmd 'source \${scriptaddr}; nand slc-mode on; mtdparts; ubi part UBI; ubifsmount ubi0:rootfs; ubifsload \$fdt_addr_r /boot/sun5i-r8-chip.dtb; ubifsload \$kernel_addr_r /boot/zImage; bootz \$kernel_addr_r - \$fdt_addr_r'" >> "${UBOOT_SCRIPT_SRC}" echo "saveenv" >> "${UBOOT_SCRIPT_SRC}" if [[ "${METHOD}" == "fel" ]]; then - echo "nand slc-mode on" >> "${UBOOT_SCRIPT_SRC}" - echo "nand write.trimffs $UBI_MEM_ADDR 0x1000000 $UBI_SIZE" >> "${UBOOT_SCRIPT_SRC}" + echo "nand write.slc-mode.trimffs $UBI_MEM_ADDR 0x1000000 $UBI_SIZE" >> "${UBOOT_SCRIPT_SRC}" echo "mw \${scriptaddr} 0x0" >> "${UBOOT_SCRIPT_SRC}" else echo "echo going to fastboot mode" >>"${UBOOT_SCRIPT_SRC}" - echo "fastboot" >>"${UBOOT_SCRIPT_SRC}" + echo "fastboot 0" >>"${UBOOT_SCRIPT_SRC}" fi if [[ "${AFTER_FLASHING}" == "boot" ]]; then @@ -155,11 +154,14 @@ if [[ "${METHOD}" == "fel" ]]; then else echo == execute the main u-boot binary == ${FEL} exe $UBOOT_MEM_ADDR - + + echo == creating sparse image == + img2simg ${UBI} ${SPARSE_UBI} $((2*1024*1024)) + echo == waiting for fastboot == if wait_for_fastboot; then - fastboot -S 0 -u flash UBI ${BUILDROOT_OUTPUT_DIR}/images/rootfs.ubi - fastboot continue + fastboot -i 0x1f3a -u flash UBI ${SPARSE_UBI} + fastboot -i 0x1f3a continue else rm -rf "${TMPDIR}" exit 1 diff --git a/chip-update-firmware.sh b/chip-update-firmware.sh index 78a0e61..052d185 100755 --- a/chip-update-firmware.sh +++ b/chip-update-firmware.sh @@ -3,6 +3,12 @@ SCRIPTDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) source $SCRIPTDIR/common.sh +if ! wait_for_fel; then + echo "ERROR: please jumper your CHIP in FEL mode then power on" + exit 1 +fi + + FLASH_SCRIPT=./chip-fel-flash.sh WHAT=buildroot BRANCH=stable @@ -120,7 +126,6 @@ BUILDROOT_OUTPUT_DIR="${FW_DIR}" ${FLASH_SCRIPT} ${FLASH_SCRIPT_OPTION} || echo if ! wait_for_linuxboot; then echo "ERROR: could not flash" - rm -rf ${TMPDIR} exit 1 else ${SCRIPTDIR}/verify.sh diff --git a/common.sh b/common.sh index 7bc8149..38d27cd 100755 --- a/common.sh +++ b/common.sh @@ -1,6 +1,7 @@ #!/bin/bash TIMEOUT=30 +FEL=fel #------------------------------------------------------------ onMac() { @@ -24,7 +25,7 @@ filesize() { wait_for_fastboot() { echo -n "waiting for fastboot..."; for ((i=$TIMEOUT; i>0; i--)) { - if [[ ! -z "$(fastboot devices)" ]]; then + if [[ ! -z "$(fastboot -i 0x1f3a devices)" ]]; then echo "OK"; return 0; fi From 2a5ddf1cb4e653d0b49621e04b1e7de32f407243 Mon Sep 17 00:00:00 2001 From: Alex Kaplan Date: Tue, 3 Nov 2015 14:33:05 -0800 Subject: [PATCH 03/20] remove -gui from buildroot branches Signed-off-by: Alex Kaplan --- chip-update-firmware.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chip-update-firmware.sh b/chip-update-firmware.sh index 052d185..aef07f5 100755 --- a/chip-update-firmware.sh +++ b/chip-update-firmware.sh @@ -104,7 +104,7 @@ if [[ "${WHAT}" == "buildroot" ]]; then BR_URL="${ROOTFS_URL}" else BR_BUILD="$(wget -q -O- ${ROOTFS_URL}/br_build)" - BR_URL="${BASE_URL}/buildroot/${BRANCH}/${BR_BUILD}/images" + BR_URL="${BASE_URL}/buildroot/${BRANCH%-gui}/${BR_BUILD}/images" BUILD="$(wget -q -O- ${ROOTFS_URL}/build)" fi From 7e908446d08b341e150fae9d644840b6f6769f29 Mon Sep 17 00:00:00 2001 From: Alex Kaplan Date: Sat, 7 Nov 2015 23:24:07 -0800 Subject: [PATCH 04/20] Updated u-boot environment (variables bootcmd and fel_booted). These changes are necessary to flash empty CHIPs with the latest u-boot. Signed-off-by: Alex Kaplan --- chip-fel-flash.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/chip-fel-flash.sh b/chip-fel-flash.sh index 6f6fea3..e781f7e 100755 --- a/chip-fel-flash.sh +++ b/chip-fel-flash.sh @@ -94,7 +94,8 @@ prepare_uboot_script() { echo "nand write $UBOOT_MEM_ADDR 0x800000 $PADDED_UBOOT_SIZE" >> "${UBOOT_SCRIPT_SRC}" echo "setenv bootargs root=ubi0:rootfs rootfstype=ubifs rw earlyprintk ubi.mtd=4" >> "${UBOOT_SCRIPT_SRC}" - echo "setenv bootcmd 'source \${scriptaddr}; nand slc-mode on; mtdparts; ubi part UBI; ubifsmount ubi0:rootfs; ubifsload \$fdt_addr_r /boot/sun5i-r8-chip.dtb; ubifsload \$kernel_addr_r /boot/zImage; bootz \$kernel_addr_r - \$fdt_addr_r'" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv bootcmd 'if test -n \${fel_booted} && test -n \${scriptaddr}; then echo '(FEL boot)'; source \${scriptaddr}; fi; mtdparts; ubi part UBI; ubifsmount ubi0:rootfs; ubifsload \$fdt_addr_r /boot/sun5i-r8-chip.dtb; ubifsload \$kernel_addr_r /boot/zImage; bootz \$kernel_addr_r - \$fdt_addr_r'" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv fel_booted 0" >> "${UBOOT_SCRIPT_SRC}" echo "saveenv" >> "${UBOOT_SCRIPT_SRC}" if [[ "${METHOD}" == "fel" ]]; then From a37d5c2538fb7fc869e8f135666d072a328a6184 Mon Sep 17 00:00:00 2001 From: Wynter Woods Date: Mon, 9 Nov 2015 05:54:54 -0800 Subject: [PATCH 05/20] Add error codes to flasher script --- chip-fel-flash.sh | 59 +++++++++++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/chip-fel-flash.sh b/chip-fel-flash.sh index e781f7e..adcb10a 100755 --- a/chip-fel-flash.sh +++ b/chip-fel-flash.sh @@ -121,7 +121,17 @@ prepare_uboot_script() { mkimage -A arm -T script -C none -n "flash CHIP" -d "${UBOOT_SCRIPT_SRC}" "${UBOOT_SCRIPT}" } - +assert_error() { + ERR=$? + ERRCODE=$1 + if [ "${ERR}" != "0" ]; then + if [ -z "${ERR}" ]; then + exit ${ERR} + fi + else + exit ${ERRCODE} + fi +} echo == preparing images == prepare_images @@ -132,41 +142,50 @@ if ! wait_for_fel; then echo "ERROR: please make sure CHIP is connected and jumpered in FEL mode" fi ${FEL} spl "${SPL}" +assert_error 128 sleep 1 # wait for DRAM initialization to complete echo == upload spl == ${FEL} write $SPL_MEM_ADDR "${PADDED_SPL}" || ( echo "ERROR: could not write ${PADDED_SPL}" && exit $? ) +assert_error 129 echo == upload u-boot == ${FEL} write $UBOOT_MEM_ADDR "${PADDED_UBOOT}" || ( echo "ERROR: could not write ${PADDED_UBOOT}" && exit $? ) +assert_error 130 echo == upload u-boot script == ${FEL} write $UBOOT_SCRIPT_MEM_ADDR "${UBOOT_SCRIPT}" || ( echo "ERROR: could not write ${UBOOT_SCRIPT}" && exit $? ) +assert_error 131 if [[ "${METHOD}" == "fel" ]]; then - echo == upload ubi == - ${FEL} --progress write $UBI_MEM_ADDR "${UBI}" + echo == upload ubi == + ${FEL} --progress write $UBI_MEM_ADDR "${UBI}" - echo == execute the main u-boot binary == - ${FEL} exe $UBOOT_MEM_ADDR + echo == execute the main u-boot binary == + ${FEL} exe $UBOOT_MEM_ADDR - echo == write ubi == + echo == write ubi == else - echo == execute the main u-boot binary == - ${FEL} exe $UBOOT_MEM_ADDR - - echo == creating sparse image == - img2simg ${UBI} ${SPARSE_UBI} $((2*1024*1024)) - - echo == waiting for fastboot == - if wait_for_fastboot; then - fastboot -i 0x1f3a -u flash UBI ${SPARSE_UBI} - fastboot -i 0x1f3a continue - else - rm -rf "${TMPDIR}" - exit 1 - fi + echo == execute the main u-boot binary == + ${FEL} exe $UBOOT_MEM_ADDR + assert_error 132 + + echo == creating sparse image == + img2simg ${UBI} ${SPARSE_UBI} $((2*1024*1024)) + assert_error 133 + + echo == waiting for fastboot == + if wait_for_fastboot; then + fastboot -i 0x1f3a -u flash UBI ${SPARSE_UBI} + assert_error 134 + + fastboot -i 0x1f3a continue + assert_error 135 + else + rm -rf "${TMPDIR}" + exit 1 + fi fi rm -rf "${TMPDIR}" From 6c7e78cd122cf01612f5d8351e45940bd9158803 Mon Sep 17 00:00:00 2001 From: Wynter Woods Date: Mon, 9 Nov 2015 06:12:32 -0800 Subject: [PATCH 06/20] Incorrect branching in assert_error --- chip-fel-flash.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chip-fel-flash.sh b/chip-fel-flash.sh index adcb10a..0f2ba8f 100755 --- a/chip-fel-flash.sh +++ b/chip-fel-flash.sh @@ -127,9 +127,9 @@ assert_error() { if [ "${ERR}" != "0" ]; then if [ -z "${ERR}" ]; then exit ${ERR} + else + exit ${ERRCODE} fi - else - exit ${ERRCODE} fi } From 5d577504b294f70b5f4bfba22797889131fdeebc Mon Sep 17 00:00:00 2001 From: Alex Kaplan Date: Mon, 9 Nov 2015 15:32:20 -0800 Subject: [PATCH 07/20] switched to next branch as default branch --- chip-update-firmware.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chip-update-firmware.sh b/chip-update-firmware.sh index aef07f5..4c22472 100755 --- a/chip-update-firmware.sh +++ b/chip-update-firmware.sh @@ -11,7 +11,7 @@ fi FLASH_SCRIPT=./chip-fel-flash.sh WHAT=buildroot -BRANCH=stable +BRANCH=next function require_directory { if [[ ! -d "${1}" ]]; then From 63caf3276e0020a0c1244b358159f58b600c1271 Mon Sep 17 00:00:00 2001 From: Ryan Alexander Date: Tue, 10 Nov 2015 19:10:25 -0800 Subject: [PATCH 08/20] Disable u-boot output over vga --- chip-fel-flash.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/chip-fel-flash.sh b/chip-fel-flash.sh index 0f2ba8f..34b28e4 100755 --- a/chip-fel-flash.sh +++ b/chip-fel-flash.sh @@ -96,7 +96,13 @@ prepare_uboot_script() { echo "setenv bootargs root=ubi0:rootfs rootfstype=ubifs rw earlyprintk ubi.mtd=4" >> "${UBOOT_SCRIPT_SRC}" echo "setenv bootcmd 'if test -n \${fel_booted} && test -n \${scriptaddr}; then echo '(FEL boot)'; source \${scriptaddr}; fi; mtdparts; ubi part UBI; ubifsmount ubi0:rootfs; ubifsload \$fdt_addr_r /boot/sun5i-r8-chip.dtb; ubifsload \$kernel_addr_r /boot/zImage; bootz \$kernel_addr_r - \$fdt_addr_r'" >> "${UBOOT_SCRIPT_SRC}" echo "setenv fel_booted 0" >> "${UBOOT_SCRIPT_SRC}" - echo "saveenv" >> "${UBOOT_SCRIPT_SRC}" + + echo "echo Enabling splash" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv stdout serial" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv stderr serial" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv splashpos m,m" >> "${UBOOT_SCRIPT_SRC}" + + echo "saveenv" >> "${UBOOT_SCRIPT_SRC}" if [[ "${METHOD}" == "fel" ]]; then echo "nand write.slc-mode.trimffs $UBI_MEM_ADDR 0x1000000 $UBI_SIZE" >> "${UBOOT_SCRIPT_SRC}" From 8627ac0d2056be653386be8f2436ab2cb662f162 Mon Sep 17 00:00:00 2001 From: Ryan Alexander Date: Wed, 11 Nov 2015 18:58:01 -0800 Subject: [PATCH 09/20] Add video mode config --- chip-fel-flash.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/chip-fel-flash.sh b/chip-fel-flash.sh index 34b28e4..626e08a 100755 --- a/chip-fel-flash.sh +++ b/chip-fel-flash.sh @@ -97,11 +97,14 @@ prepare_uboot_script() { echo "setenv bootcmd 'if test -n \${fel_booted} && test -n \${scriptaddr}; then echo '(FEL boot)'; source \${scriptaddr}; fi; mtdparts; ubi part UBI; ubifsmount ubi0:rootfs; ubifsload \$fdt_addr_r /boot/sun5i-r8-chip.dtb; ubifsload \$kernel_addr_r /boot/zImage; bootz \$kernel_addr_r - \$fdt_addr_r'" >> "${UBOOT_SCRIPT_SRC}" echo "setenv fel_booted 0" >> "${UBOOT_SCRIPT_SRC}" - echo "echo Enabling splash" >> "${UBOOT_SCRIPT_SRC}" + echo "echo Enabling Splash" >> "${UBOOT_SCRIPT_SRC}" echo "setenv stdout serial" >> "${UBOOT_SCRIPT_SRC}" echo "setenv stderr serial" >> "${UBOOT_SCRIPT_SRC}" echo "setenv splashpos m,m" >> "${UBOOT_SCRIPT_SRC}" + echo "echo Configuring Video Mode" + echo "setenv video-mode sunxi:640x480-24@60,monitor=composite-ntsc" >> "${UBOOT_SCRIPT_SRC}" + echo "saveenv" >> "${UBOOT_SCRIPT_SRC}" if [[ "${METHOD}" == "fel" ]]; then From 3dda57381987ea392e8237065907f48a27e6eb27 Mon Sep 17 00:00:00 2001 From: Alex Kaplan Date: Fri, 13 Nov 2015 17:55:04 -0800 Subject: [PATCH 10/20] changed overscan --- chip-fel-flash.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chip-fel-flash.sh b/chip-fel-flash.sh index 626e08a..08bae89 100755 --- a/chip-fel-flash.sh +++ b/chip-fel-flash.sh @@ -103,7 +103,7 @@ prepare_uboot_script() { echo "setenv splashpos m,m" >> "${UBOOT_SCRIPT_SRC}" echo "echo Configuring Video Mode" - echo "setenv video-mode sunxi:640x480-24@60,monitor=composite-ntsc" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv video-mode sunxi:640x480-24@60,monitor=composite-ntsc,overscan_x=40,overscan_y=20" >> "${UBOOT_SCRIPT_SRC}" echo "saveenv" >> "${UBOOT_SCRIPT_SRC}" From 7cb800264b870514ecc33c5d771bb39863fabd69 Mon Sep 17 00:00:00 2001 From: Alex Kaplan Date: Fri, 20 Nov 2015 13:00:26 -0800 Subject: [PATCH 11/20] new parameter to select build number Signed-off-by: Alex Kaplan --- chip-update-firmware.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/chip-update-firmware.sh b/chip-update-firmware.sh index 4c22472..10241d2 100755 --- a/chip-update-firmware.sh +++ b/chip-update-firmware.sh @@ -54,7 +54,7 @@ function cache_download { } -while getopts "ufdb:w:" opt; do +while getopts "ufdb:w:B:" opt; do case $opt in u) echo "updating cache" @@ -66,6 +66,10 @@ while getopts "ufdb:w:" opt; do echo "fastboot enabled" FLASH_SCRIPT_OPTION="-f" ;; + B) + BUILD="$OPTARG" + echo "BUILD = ${BUILD}" + ;; b) BRANCH="$OPTARG" echo "BRANCH = ${BRANCH}" @@ -91,10 +95,14 @@ FW_IMAGE_DIR="${FW_DIR}/images" BASE_URL="http://opensource.nextthing.co/chip" S3_URL="${BASE_URL}/${WHAT}/${BRANCH}/latest" -ROOTFS_URL="$(wget -q -O- ${S3_URL})" || (echo "ERROR: cannot reach ${S3_URL}" && exit 1) -if [[ -z "${ROOTFS_URL}" ]]; then - echo "error: could not get URL for latest build from ${S3_URL} - check internet connection" - exit 1 +if [[ -z "$BUILD" ]]; then + ROOTFS_URL="$(wget -q -O- ${S3_URL})" || (echo "ERROR: cannot reach ${S3_URL}" && exit 1) + if [[ -z "${ROOTFS_URL}" ]]; then + echo "error: could not get URL for latest build from ${S3_URL} - check internet connection" + exit 1 + fi +else + ROOTFS_URL="${S3_URL%latest}$BUILD" fi if [[ "${WHAT}" == "buildroot" ]]; then From bd2a3956e21aaa5f924e0e92eb9f444853be2166 Mon Sep 17 00:00:00 2001 From: Wynter Woods Date: Wed, 2 Dec 2015 15:18:54 -0800 Subject: [PATCH 12/20] Added chip-flash utility, modification of chip-fel-flash that supports specifying stages --- chip-flash | 265 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100755 chip-flash diff --git a/chip-flash b/chip-flash new file mode 100755 index 0000000..d8a5ee9 --- /dev/null +++ b/chip-flash @@ -0,0 +1,265 @@ +#!/bin/bash + +SCRIPTDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +source $SCRIPTDIR/common.sh + +RUN_ALL_STAGES=true +NUM_STAGES=5 +stage=() + +for i in $(seq 0 $NUM_STAGES); do + stage+=(false) +done +############################################################## +# main +############################################################## +TEMP=`getopt -o "sflu:" --long "fel,fastboot,loop-after-flash,stage:" -- "$@"` +eval set -- "$TEMP" + +while true; do + case $1 in + -s|--fel) + echo "fel method enabled" + METHOD=fel + shift + ;; + -f|--fastboot) + echo "fastboot method enabled" + METHOD=fastboot + shift + ;; + -l|--loop-after-flash) + echo "factory mode remain in u-boot after flashing" + AFTER_FLASHING=loop + shift + ;; + -u) + BUILDROOT_OUTPUT_DIR="${2}" + shift + shift + ;; + --stage) + if [ "${2}" -ge 0 -a "${2}" -le $NUM_STAGES ]; then + echo "Enabling stage ${2}" + stage[${2}]=true + RUN_ALL_STAGES=false + else + echo "Unknown stage: ${2}" + fi + shift + shift + ;; + --) + shift; break;; + *) + echo "Invalid option: -$1" >&2 + exit 1 + break + ;; + esac +done + +echo "BUILDROOT_OUTPUT_DIR = $BUILDROOT_OUTPUT_DIR" + +if ${RUN_ALL_STAGES}; then + echo "Running all stages" + for i in $(seq 0 $NUM_STAGES); do + stage[i]=true + done +fi + +FEL=fel + +METHOD=${METHOD:-fastboot} +AFTER_FLASHING=${AFTER_FLASHING:-wait} + + +NAND_ERASE_BB=false +if [ "$1" == "erase-bb" ]; then + NAND_ERASE_BB=true +fi + +PATH=$PATH:$BUILDROOT_OUTPUT_DIR/host/usr/bin +TMPDIR="${BUILDROOT_OUTPUT_DIR}/tmp" +PADDED_SPL="${BUILDROOT_OUTPUT_DIR}/images/sunxi-spl-with-ecc.bin" +PADDED_SPL_SIZE=0 +UBOOT_SCRIPT="$TMPDIR/uboot.scr" +UBOOT_SCRIPT_MEM_ADDR=0x43100000 +UBOOT_SCRIPT_SRC="$TMPDIR/uboot.cmds" +SPL="$BUILDROOT_OUTPUT_DIR/images/sunxi-spl.bin" +SPL_MEM_ADDR=0x43000000 +UBOOT="$BUILDROOT_OUTPUT_DIR/images/u-boot-dtb.bin" +PADDED_UBOOT="$TMPDIR/padded-uboot" +PADDED_UBOOT_SIZE=0xc0000 +UBOOT_MEM_ADDR=0x4a000000 +UBI="$BUILDROOT_OUTPUT_DIR/images/rootfs.ubi" +SPARSE_UBI="${TMPDIR}/rootfs.ubi.sparse" +UBI_MEM_ADDR=0x4b000000 + +echo "Temporary directory: ${TMPDIR}" +if [ ! -d "$TMPDIR" ]; then + echo "Making directory: ${TMPDIR}" + mkdir -p "${TMPDIR}" +fi + +UBI_SIZE=`filesize $UBI | xargs printf "0x%08x"` +PAGE_SIZE=16384 +OOB_SIZE=1664 + +prepare_images() { + #PADDED_SPL_SIZE in pages + if [[ ! -e "${PADDED_SPL}" ]]; then + echo "ERROR: can not read ${PADDED_SPL}" + exit 1 + fi + + PADDED_SPL_SIZE=$(filesize "${PADDED_SPL}") + PADDED_SPL_SIZE=$(($PADDED_SPL_SIZE / ($PAGE_SIZE + $OOB_SIZE))) + PADDED_SPL_SIZE=$(echo $PADDED_SPL_SIZE | xargs printf "0x%08x") + echo "PADDED_SPL_SIZE=$PADDED_SPL_SIZE" + + # Align the u-boot image on a page boundary + dd if="$UBOOT" of="$PADDED_UBOOT" bs=16k conv=sync + UBOOT_SIZE=`filesize "$PADDED_UBOOT" | xargs printf "0x%08x"` + echo "UBOOT_SIZE=${UBOOT_SIZE}" + echo "PADDED_UBOOT_SIZE=${PADDED_UBOOT_SIZE}" + dd if=/dev/urandom of="$PADDED_UBOOT" seek=$((UBOOT_SIZE / 0x4000)) bs=16k count=$(((PADDED_UBOOT_SIZE - UBOOT_SIZE) / 0x4000)) +} + +prepare_uboot_script() { + if [ "$NAND_ERASE_BB" = true ] ; then + echo "nand scrub -y 0x0 0x200000000" > "${UBOOT_SCRIPT_SRC}" + else + echo "nand erase 0x0 0x200000000" > "${UBOOT_SCRIPT_SRC}" + fi + + echo "echo nand write.raw.noverify $SPL_MEM_ADDR 0x0 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" + echo "nand write.raw.noverify $SPL_MEM_ADDR 0x0 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" + echo "echo nand write.raw.noverify $SPL_MEM_ADDR 0x400000 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" + echo "nand write.raw.noverify $SPL_MEM_ADDR 0x400000 $PADDED_SPL_SIZE" >> "${UBOOT_SCRIPT_SRC}" + + echo "nand write $UBOOT_MEM_ADDR 0x800000 $PADDED_UBOOT_SIZE" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv bootargs root=ubi0:rootfs rootfstype=ubifs rw earlyprintk ubi.mtd=4" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv bootcmd 'if test -n \${fel_booted} && test -n \${scriptaddr}; then echo '(FEL boot)'; source \${scriptaddr}; fi; mtdparts; ubi part UBI; ubifsmount ubi0:rootfs; ubifsload \$fdt_addr_r /boot/sun5i-r8-chip.dtb; ubifsload \$kernel_addr_r /boot/zImage; bootz \$kernel_addr_r - \$fdt_addr_r'" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv fel_booted 0" >> "${UBOOT_SCRIPT_SRC}" + + echo "echo Enabling Splash" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv stdout serial" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv stderr serial" >> "${UBOOT_SCRIPT_SRC}" + echo "setenv splashpos m,m" >> "${UBOOT_SCRIPT_SRC}" + + echo "echo Configuring Video Mode" + echo "setenv video-mode sunxi:640x480-24@60,monitor=composite-ntsc,overscan_x=40,overscan_y=20" >> "${UBOOT_SCRIPT_SRC}" + + echo "saveenv" >> "${UBOOT_SCRIPT_SRC}" + + if [[ "${METHOD}" == "fel" ]]; then + echo "nand write.slc-mode.trimffs $UBI_MEM_ADDR 0x1000000 $UBI_SIZE" >> "${UBOOT_SCRIPT_SRC}" + echo "mw \${scriptaddr} 0x0" >> "${UBOOT_SCRIPT_SRC}" + else + echo "echo going to fastboot mode" >>"${UBOOT_SCRIPT_SRC}" + echo "fastboot 0" >>"${UBOOT_SCRIPT_SRC}" + fi + + if [[ "${AFTER_FLASHING}" == "boot" ]]; then + echo "echo " >>"${UBOOT_SCRIPT_SRC}" + echo "echo *****************[ BOOT ]*****************" >>"${UBOOT_SCRIPT_SRC}" + echo "echo " >>"${UBOOT_SCRIPT_SRC}" + echo "boot" >> "${UBOOT_SCRIPT_SRC}" + else + echo "echo " >>"${UBOOT_SCRIPT_SRC}" + echo "echo *****************[ FLASHING DONE ]*****************" >>"${UBOOT_SCRIPT_SRC}" + echo "echo " >>"${UBOOT_SCRIPT_SRC}" + echo "while true; do; sleep 10; done;" >>"${UBOOT_SCRIPT_SRC}" + fi + + mkimage -A arm -T script -C none -n "flash CHIP" -d "${UBOOT_SCRIPT_SRC}" "${UBOOT_SCRIPT}" +} + +assert_error() { + ERR=$? + ERRCODE=$1 + if [ "${ERR}" != "0" ]; then + if [ -z "${ERR}" ]; then + exit ${ERR} + else + exit ${ERRCODE} + fi + fi +} + +echo == preparing images == +prepare_images +prepare_uboot_script + +echo == upload the SPL to SRAM and execute it == +if ! wait_for_fel; then + echo "ERROR: please make sure CHIP is connected and jumpered in FEL mode" +fi + + +if ${stage[0]}; then + ${FEL} spl "${SPL}" + assert_error 128 +fi + +sleep 1 # wait for DRAM initialization to complete + +if ${stage[1]}; then + echo == upload spl == + ${FEL} write $SPL_MEM_ADDR "${PADDED_SPL}" || ( echo "ERROR: could not write ${PADDED_SPL}" && exit $? ) + assert_error 129 +fi + +if ${stage[2]}; then + echo == upload u-boot == + ${FEL} write $UBOOT_MEM_ADDR "${PADDED_UBOOT}" || ( echo "ERROR: could not write ${PADDED_UBOOT}" && exit $? ) + assert_error 130 +fi + +if ${stage[3]}; then + echo == upload u-boot script == + ${FEL} write $UBOOT_SCRIPT_MEM_ADDR "${UBOOT_SCRIPT}" || ( echo "ERROR: could not write ${UBOOT_SCRIPT}" && exit $? ) + assert_error 131 +fi + +if [[ "${METHOD}" == "fel" ]]; then + + if ${stage[4]}; then + echo == upload ubi == + ${FEL} --progress write $UBI_MEM_ADDR "${UBI}" + fi + + if ${stage[5]}; then + echo == execute the main u-boot binary == + ${FEL} exe $UBOOT_MEM_ADDR + fi + + echo == write ubi == +else + if ${stage[4]}; then + echo == execute the main u-boot binary == + ${FEL} exe $UBOOT_MEM_ADDR + assert_error 132 + fi + + if ${stage[5]}; then + echo == creating sparse image == + img2simg ${UBI} ${SPARSE_UBI} $((2*1024*1024)) + assert_error 133 + + echo == waiting for fastboot == + if wait_for_fastboot; then + fastboot -i 0x1f3a -u flash UBI ${SPARSE_UBI} + assert_error 134 + + fastboot -i 0x1f3a continue + assert_error 135 + else + rm -rf "${TMPDIR}" + exit 1 + fi + fi +fi + +rm -rf "${TMPDIR}" From 76f4a4c29f1ba2e39c66f6d171f2f15fac306509 Mon Sep 17 00:00:00 2001 From: Wynter Woods Date: Wed, 2 Dec 2015 16:33:52 -0800 Subject: [PATCH 13/20] Set default firmware dir and only wait for fel in stage 1 --- chip-flash | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/chip-flash b/chip-flash index d8a5ee9..5affc4a 100755 --- a/chip-flash +++ b/chip-flash @@ -59,6 +59,7 @@ while true; do esac done +BUILDROOT_OUTPUT_DIR="${BUILDROOT_OUTPUT_DIR:-$(pwd)/.firmware}" echo "BUILDROOT_OUTPUT_DIR = $BUILDROOT_OUTPUT_DIR" if ${RUN_ALL_STAGES}; then @@ -97,7 +98,7 @@ SPARSE_UBI="${TMPDIR}/rootfs.ubi.sparse" UBI_MEM_ADDR=0x4b000000 echo "Temporary directory: ${TMPDIR}" -if [ ! -d "$TMPDIR" ]; then +if [ ! -d "${TMPDIR}" ]; then echo "Making directory: ${TMPDIR}" mkdir -p "${TMPDIR}" fi @@ -188,22 +189,21 @@ assert_error() { fi } -echo == preparing images == -prepare_images -prepare_uboot_script - -echo == upload the SPL to SRAM and execute it == -if ! wait_for_fel; then - echo "ERROR: please make sure CHIP is connected and jumpered in FEL mode" -fi - - if ${stage[0]}; then + echo == preparing images == + prepare_images + prepare_uboot_script + + echo == upload the SPL to SRAM and execute it == + if ! wait_for_fel; then + echo "ERROR: please make sure CHIP is connected and jumpered in FEL mode" + fi + ${FEL} spl "${SPL}" assert_error 128 + sleep 1 # wait for DRAM initialization to complete fi -sleep 1 # wait for DRAM initialization to complete if ${stage[1]}; then echo == upload spl == From 80e91d3e85c391faf5ecaf5fd1111283d1c994c1 Mon Sep 17 00:00:00 2001 From: Wynter Woods Date: Wed, 2 Dec 2015 18:10:09 -0800 Subject: [PATCH 14/20] Support flashing a specific device --- chip-flash | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/chip-flash b/chip-flash index 5affc4a..1272c77 100755 --- a/chip-flash +++ b/chip-flash @@ -13,7 +13,7 @@ done ############################################################## # main ############################################################## -TEMP=`getopt -o "sflu:" --long "fel,fastboot,loop-after-flash,stage:" -- "$@"` +TEMP=`getopt -o "sflu:n:" --long "fel,fastboot,loop-after-flash,stage:,chip-path:" -- "$@"` eval set -- "$TEMP" while true; do @@ -49,6 +49,15 @@ while true; do shift shift ;; + -n|--chip-path) + CHIP_PATH=$2 + FEL_DEVICE="--dev $(udevadm info ${CHIP_PATH} | grep "E\: BUSNUM" | awk -F "=" '{ print $NF }'):$(udevadm info ${CHIP_PATH} | grep "E\: DEVNUM" | awk -F "=" '{ print $NF }')" + FASTBOOT_PORT="-s usb:$(udevadm info ${CHIP_PATH} | grep "P\:" | awk -F "/" '{print $NF}')" + echo "Fastboot port: ${FASTBOOT_PORT}" + echo "FEL device: ${FEL_DEVICE}" + shift + shift + ;; --) shift; break;; *) @@ -69,7 +78,7 @@ if ${RUN_ALL_STAGES}; then done fi -FEL=fel +FEL="fel ${FEL_DEVICE}" METHOD=${METHOD:-fastboot} AFTER_FLASHING=${AFTER_FLASHING:-wait} @@ -234,8 +243,7 @@ if [[ "${METHOD}" == "fel" ]]; then echo == execute the main u-boot binary == ${FEL} exe $UBOOT_MEM_ADDR fi - - echo == write ubi == + rm -rf "${TMPDIR}" else if ${stage[4]}; then echo == execute the main u-boot binary == @@ -243,23 +251,21 @@ else assert_error 132 fi - if ${stage[5]}; then + if ${stage[5]}; then echo == creating sparse image == img2simg ${UBI} ${SPARSE_UBI} $((2*1024*1024)) assert_error 133 echo == waiting for fastboot == if wait_for_fastboot; then - fastboot -i 0x1f3a -u flash UBI ${SPARSE_UBI} + fastboot ${FASTBOOT_PORT} -i 0x1f3a -u flash UBI ${SPARSE_UBI} assert_error 134 - fastboot -i 0x1f3a continue + fastboot ${FASTBOOT_PORT} -i 0x1f3a continue assert_error 135 else - rm -rf "${TMPDIR}" exit 1 fi + rm -rf "${TMPDIR}" fi fi - -rm -rf "${TMPDIR}" From 63b98b6bc58add2a4d72d0f7bc166ca1a8451ef6 Mon Sep 17 00:00:00 2001 From: Wynter Woods Date: Thu, 3 Dec 2015 18:02:15 -0800 Subject: [PATCH 15/20] Bug fixes when flashing multiple chips --- chip-flash | 19 +++++++++++-------- common.sh | 4 ++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/chip-flash b/chip-flash index 1272c77..d95031b 100755 --- a/chip-flash +++ b/chip-flash @@ -200,13 +200,14 @@ assert_error() { if ${stage[0]}; then echo == preparing images == - prepare_images - prepare_uboot_script + if [ ! -f "${PADDED_UBOOT}" ]; then + prepare_images + fi + if [ ! -f "${UBOOT_SCRIPT}" ]; then + prepare_uboot_script + fi echo == upload the SPL to SRAM and execute it == - if ! wait_for_fel; then - echo "ERROR: please make sure CHIP is connected and jumpered in FEL mode" - fi ${FEL} spl "${SPL}" assert_error 128 @@ -236,7 +237,7 @@ if [[ "${METHOD}" == "fel" ]]; then if ${stage[4]}; then echo == upload ubi == - ${FEL} --progress write $UBI_MEM_ADDR "${UBI}" + ${FEL} write $UBI_MEM_ADDR "${UBI}" fi if ${stage[5]}; then @@ -253,11 +254,13 @@ else if ${stage[5]}; then echo == creating sparse image == - img2simg ${UBI} ${SPARSE_UBI} $((2*1024*1024)) + if [ ! -f "${SPARSE_UBI}" ]; then + img2simg ${UBI} ${SPARSE_UBI} $((2*1024*1024)) + fi assert_error 133 echo == waiting for fastboot == - if wait_for_fastboot; then + if wait_for_fastboot ${FASTBOOT_PORT}; then fastboot ${FASTBOOT_PORT} -i 0x1f3a -u flash UBI ${SPARSE_UBI} assert_error 134 diff --git a/common.sh b/common.sh index 38d27cd..183c05a 100755 --- a/common.sh +++ b/common.sh @@ -25,7 +25,7 @@ filesize() { wait_for_fastboot() { echo -n "waiting for fastboot..."; for ((i=$TIMEOUT; i>0; i--)) { - if [[ ! -z "$(fastboot -i 0x1f3a devices)" ]]; then + if [[ ! -z "$(fastboot -i 0x1f3a $1 devices)" ]]; then echo "OK"; return 0; fi @@ -41,7 +41,7 @@ wait_for_fastboot() { wait_for_fel() { echo -n "waiting for fel..."; for ((i=$TIMEOUT; i>0; i--)) { - if ${FEL} ver 2>/dev/null >/dev/null; then + if ${FEL} $1 ver 2>/dev/null >/dev/null; then echo "OK" return 0; fi From b312864562fda8fe34b3fee20eab526e6a0723af Mon Sep 17 00:00:00 2001 From: Wynter Woods Date: Thu, 3 Dec 2015 19:59:15 -0800 Subject: [PATCH 16/20] Make sure fel device isn't passed in octal number format --- chip-flash | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/chip-flash b/chip-flash index d95031b..02a652c 100755 --- a/chip-flash +++ b/chip-flash @@ -51,10 +51,11 @@ while true; do ;; -n|--chip-path) CHIP_PATH=$2 - FEL_DEVICE="--dev $(udevadm info ${CHIP_PATH} | grep "E\: BUSNUM" | awk -F "=" '{ print $NF }'):$(udevadm info ${CHIP_PATH} | grep "E\: DEVNUM" | awk -F "=" '{ print $NF }')" + FEL_DEVICE="--dev $(udevadm info ${CHIP_PATH} | grep "E\: BUSNUM" | awk -F "=" '{ print $NF }'| sed 's/^0*//'):$(udevadm info ${CHIP_PATH} | grep "E\: DEVNUM" | awk -F "=" '{ print $NF }'| sed 's/^0*//')" FASTBOOT_PORT="-s usb:$(udevadm info ${CHIP_PATH} | grep "P\:" | awk -F "/" '{print $NF}')" echo "Fastboot port: ${FASTBOOT_PORT}" echo "FEL device: ${FEL_DEVICE}" + exit 1 shift shift ;; From 2681924d67fca7e5e7de4c108066b0690da96a4d Mon Sep 17 00:00:00 2001 From: Wynter Woods Date: Thu, 3 Dec 2015 20:02:09 -0800 Subject: [PATCH 17/20] Removed an exit path --- chip-flash | 1 - 1 file changed, 1 deletion(-) diff --git a/chip-flash b/chip-flash index 02a652c..20ff7ca 100755 --- a/chip-flash +++ b/chip-flash @@ -55,7 +55,6 @@ while true; do FASTBOOT_PORT="-s usb:$(udevadm info ${CHIP_PATH} | grep "P\:" | awk -F "/" '{print $NF}')" echo "Fastboot port: ${FASTBOOT_PORT}" echo "FEL device: ${FEL_DEVICE}" - exit 1 shift shift ;; From 98b2419f0b6b901995467a82df47b132b8a6edd9 Mon Sep 17 00:00:00 2001 From: Wynter Woods Date: Thu, 3 Dec 2015 20:07:01 -0800 Subject: [PATCH 18/20] Fix to how utility commands pass device paths --- common.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common.sh b/common.sh index 183c05a..b619f54 100755 --- a/common.sh +++ b/common.sh @@ -25,7 +25,7 @@ filesize() { wait_for_fastboot() { echo -n "waiting for fastboot..."; for ((i=$TIMEOUT; i>0; i--)) { - if [[ ! -z "$(fastboot -i 0x1f3a $1 devices)" ]]; then + if [[ ! -z "$(fastboot -i 0x1f3a $@ devices)" ]]; then echo "OK"; return 0; fi @@ -41,7 +41,7 @@ wait_for_fastboot() { wait_for_fel() { echo -n "waiting for fel..."; for ((i=$TIMEOUT; i>0; i--)) { - if ${FEL} $1 ver 2>/dev/null >/dev/null; then + if ${FEL} $@ ver 2>/dev/null >/dev/null; then echo "OK" return 0; fi From 891eabd8eaf1d76a7703f20a0c5c179634b357bb Mon Sep 17 00:00:00 2001 From: Wynter Woods Date: Fri, 4 Dec 2015 18:20:31 -0800 Subject: [PATCH 19/20] Changed output, fixed a few error assertions --- chip-flash | 69 +++++++++++++++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/chip-flash b/chip-flash index 20ff7ca..7d6bc5c 100755 --- a/chip-flash +++ b/chip-flash @@ -68,11 +68,14 @@ while true; do esac done +log() { + echo " ${FEL_DEVICE}: $@" +} BUILDROOT_OUTPUT_DIR="${BUILDROOT_OUTPUT_DIR:-$(pwd)/.firmware}" -echo "BUILDROOT_OUTPUT_DIR = $BUILDROOT_OUTPUT_DIR" +log "BUILDROOT_OUTPUT_DIR = $BUILDROOT_OUTPUT_DIR" if ${RUN_ALL_STAGES}; then - echo "Running all stages" + log "Running all stages" for i in $(seq 0 $NUM_STAGES); do stage[i]=true done @@ -106,9 +109,9 @@ UBI="$BUILDROOT_OUTPUT_DIR/images/rootfs.ubi" SPARSE_UBI="${TMPDIR}/rootfs.ubi.sparse" UBI_MEM_ADDR=0x4b000000 -echo "Temporary directory: ${TMPDIR}" +log "Temporary directory: ${TMPDIR}" if [ ! -d "${TMPDIR}" ]; then - echo "Making directory: ${TMPDIR}" + log "Making directory: ${TMPDIR}" mkdir -p "${TMPDIR}" fi @@ -119,20 +122,20 @@ OOB_SIZE=1664 prepare_images() { #PADDED_SPL_SIZE in pages if [[ ! -e "${PADDED_SPL}" ]]; then - echo "ERROR: can not read ${PADDED_SPL}" + log "ERROR: can not read ${PADDED_SPL}" exit 1 fi PADDED_SPL_SIZE=$(filesize "${PADDED_SPL}") PADDED_SPL_SIZE=$(($PADDED_SPL_SIZE / ($PAGE_SIZE + $OOB_SIZE))) PADDED_SPL_SIZE=$(echo $PADDED_SPL_SIZE | xargs printf "0x%08x") - echo "PADDED_SPL_SIZE=$PADDED_SPL_SIZE" + log "PADDED_SPL_SIZE=$PADDED_SPL_SIZE" # Align the u-boot image on a page boundary dd if="$UBOOT" of="$PADDED_UBOOT" bs=16k conv=sync UBOOT_SIZE=`filesize "$PADDED_UBOOT" | xargs printf "0x%08x"` - echo "UBOOT_SIZE=${UBOOT_SIZE}" - echo "PADDED_UBOOT_SIZE=${PADDED_UBOOT_SIZE}" + log "UBOOT_SIZE=${UBOOT_SIZE}" + log "PADDED_UBOOT_SIZE=${PADDED_UBOOT_SIZE}" dd if=/dev/urandom of="$PADDED_UBOOT" seek=$((UBOOT_SIZE / 0x4000)) bs=16k count=$(((PADDED_UBOOT_SIZE - UBOOT_SIZE) / 0x4000)) } @@ -199,36 +202,36 @@ assert_error() { } if ${stage[0]}; then - echo == preparing images == + log "== preparing images ==" if [ ! -f "${PADDED_UBOOT}" ]; then - prepare_images + prepare_images > /dev/null fi if [ ! -f "${UBOOT_SCRIPT}" ]; then - prepare_uboot_script + prepare_uboot_script > /dev/null fi - echo == upload the SPL to SRAM and execute it == + log "== upload the SPL to SRAM and execute it ==" - ${FEL} spl "${SPL}" + ${FEL} spl "${SPL}" > /dev/null assert_error 128 sleep 1 # wait for DRAM initialization to complete fi if ${stage[1]}; then - echo == upload spl == - ${FEL} write $SPL_MEM_ADDR "${PADDED_SPL}" || ( echo "ERROR: could not write ${PADDED_SPL}" && exit $? ) + log "== upload spl ==" + ${FEL} write $SPL_MEM_ADDR "${PADDED_SPL}" > /dev/null assert_error 129 fi if ${stage[2]}; then - echo == upload u-boot == - ${FEL} write $UBOOT_MEM_ADDR "${PADDED_UBOOT}" || ( echo "ERROR: could not write ${PADDED_UBOOT}" && exit $? ) + log "== upload u-boot ==" + ${FEL} write $UBOOT_MEM_ADDR "${PADDED_UBOOT}" > /dev/null assert_error 130 fi if ${stage[3]}; then - echo == upload u-boot script == + log "== upload u-boot script ==" ${FEL} write $UBOOT_SCRIPT_MEM_ADDR "${UBOOT_SCRIPT}" || ( echo "ERROR: could not write ${UBOOT_SCRIPT}" && exit $? ) assert_error 131 fi @@ -236,39 +239,41 @@ fi if [[ "${METHOD}" == "fel" ]]; then if ${stage[4]}; then - echo == upload ubi == - ${FEL} write $UBI_MEM_ADDR "${UBI}" + log "== upload ubi ==" + ${FEL} write $UBI_MEM_ADDR "${UBI}" > /dev/null + assert_error 132 fi if ${stage[5]}; then - echo == execute the main u-boot binary == - ${FEL} exe $UBOOT_MEM_ADDR + log "== execute the main u-boot binary ==" + ${FEL} exe $UBOOT_MEM_ADDR > /dev/null + assert_error 133 fi - rm -rf "${TMPDIR}" + # rm -rf "${TMPDIR}" else if ${stage[4]}; then - echo == execute the main u-boot binary == - ${FEL} exe $UBOOT_MEM_ADDR + log "== execute the main u-boot binary ==" + ${FEL} exe $UBOOT_MEM_ADDR > /dev/null assert_error 132 fi - if ${stage[5]}; then - echo == creating sparse image == + if ${stage[5]}; then + log "== creating sparse image ==" if [ ! -f "${SPARSE_UBI}" ]; then - img2simg ${UBI} ${SPARSE_UBI} $((2*1024*1024)) + img2simg ${UBI} ${SPARSE_UBI} $((2*1024*1024)) &> /dev/null fi assert_error 133 - echo == waiting for fastboot == + log "== waiting for fastboot ==" if wait_for_fastboot ${FASTBOOT_PORT}; then - fastboot ${FASTBOOT_PORT} -i 0x1f3a -u flash UBI ${SPARSE_UBI} + fastboot ${FASTBOOT_PORT} -i 0x1f3a -u flash UBI ${SPARSE_UBI} > /dev/null assert_error 134 - fastboot ${FASTBOOT_PORT} -i 0x1f3a continue + fastboot ${FASTBOOT_PORT} -i 0x1f3a continue > /dev/null assert_error 135 else exit 1 fi - rm -rf "${TMPDIR}" + # rm -rf "${TMPDIR}" fi fi From 0e5a1b7e6cd5862fa5467bfafbfbcb5b33857ff1 Mon Sep 17 00:00:00 2001 From: Alex Kaplan Date: Mon, 28 Dec 2015 21:13:57 -0800 Subject: [PATCH 20/20] fixed typo --- chip-update-firmware.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chip-update-firmware.sh b/chip-update-firmware.sh index 10241d2..a7f1a12 100755 --- a/chip-update-firmware.sh +++ b/chip-update-firmware.sh @@ -76,7 +76,7 @@ while getopts "ufdb:w:B:" opt; do ;; w) WHAT="$OPTARG" - echo "WHAT = ${BRANCH}" + echo "WHAT = ${WHAT}" ;; d) echo "debian selected"