74 lines
1.8 KiB
Bash
Executable File
74 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
set -x
|
|
|
|
LED_INDICATOR_NAME="green:status"
|
|
LED_INDICATOR_PATH="/sys/class/leds/${LED_INDICATOR_NAME}"
|
|
LED_INDICATOR_TRIG="none"
|
|
|
|
MMC_CARD_DEVICE="/dev/mmcblk0"
|
|
MMC_CARD_PART_USER="${MMC_CARD_DEVICE}p3"
|
|
|
|
MMC_EMMC_DEVICE="/dev/mmcblk2"
|
|
MMC_EMMC_PART_BOOT="${MMC_EMMC_DEVICE}p1"
|
|
MMC_EMMC_PART_ROOT="${MMC_EMMC_DEVICE}p2"
|
|
|
|
UPGRADE_PART_MOUNT_POINT="/mnt"
|
|
|
|
UPGRADE_ROOT_IMAGE_NAME="rootfs.ext2"
|
|
UPGRADE_ROOT_IMAGE_PATH="${UPGRADE_PART_MOUNT_POINT}/${UPGRADE_ROOT_IMAGE_NAME}"
|
|
|
|
UPGRADE_BOOT_IMAGE_NAME="u-boot-sunxi-with-spl.bin"
|
|
UPGRADE_BOOT_IMAGE_PATH="${UPGRADE_PART_MOUNT_POINT}/${UPGRADE_BOOT_IMAGE_NAME}"
|
|
|
|
if [ ! -b "${MMC_CARD_PART_USER}" ]; then
|
|
echo "No user partition present on SD card."
|
|
exit -1
|
|
fi
|
|
|
|
echo "Mount user partition on /mnt ..."
|
|
mount "${MMC_CARD_PART_USER}" /mnt
|
|
|
|
# Update eMMC ROOTFS partition
|
|
if [ -f "${UPGRADE_ROOT_IMAGE_PATH}" ]; then
|
|
echo "Flashing rootfs image to eMMC, please wait..."
|
|
dd if="${UPGRADE_ROOT_IMAGE_PATH}" of="${MMC_EMMC_PART_ROOT}" bs=4M
|
|
|
|
echo "Flash complete, resizing FS to fill the partition..."
|
|
resize2fs "${MMC_EMMC_PART_ROOT}"
|
|
|
|
echo "Finished updating rootfs."
|
|
fi
|
|
|
|
# Update eMMC BOOT partition
|
|
if [ -f "${UPGRADE_BOOT_IMAGE_PATH}" ]; then
|
|
echo "Flashing bootloader to eMMC, please wait..."
|
|
dd if="${UPGRADE_BOOT_IMAGE_PATH}" of="${MMC_EMMC_DEVICE}" bs=8k seek=1
|
|
|
|
echo "Finished updating bootloader."
|
|
fi
|
|
|
|
echo "Syncing disks..."
|
|
sync
|
|
|
|
echo "Unmounting upgrade partition..."
|
|
umount "${MMC_CARD_PART_USER}"
|
|
|
|
echo "Flash completed, remove SD card and reboot."
|
|
|
|
if [ ! -f "${LED_INDICATOR_PATH}/trigger" ]; then
|
|
echo "Status LED not available, exiting..."
|
|
exit 0
|
|
fi
|
|
|
|
echo none > "${LED_INDICATOR_PATH}/trigger"
|
|
|
|
# Blink STATUS LED (on base board)
|
|
while true; do
|
|
echo 0 > "${LED_INDICATOR_PATH}/brightness"
|
|
sleep 0.1
|
|
echo 1 > "${LED_INDICATOR_PATH}/brightness"
|
|
sleep 0.1
|
|
done
|