脚本名字: download.sh
输入./download -h获取帮助信息 ,其中各个IMG/TXT烧录的地址和路径都在前几行修改即可
#!/bin/bash# ======================================================
# DownLoad.sh 多镜像烧录脚本
# 版本:1.1
# 作者:zhangqi
# 功能:通过参数选择烧录指定镜像文件到开发板
# 支持镜像:boot | uboot | kernel | rootfs | update 等
# ======================================================# ---------------------- 用户配置区 ----------------------
# 注意:以下路径请根据实际目录结构修改
UPGRADE_TOOL="./tools/linux/Linux_Upgrade_Tool/Linux_Upgrade_Tool/upgrade_tool" # 工具路径
RESET_AFTER_FLASH=true # 烧录后是否重启设备# 定义每个镜像文件的路径(请根据实际情况修改)
BOOT_IMG="./kernel/boot.img"
UBOOT_IMG="./u-boot/uboot.img"
ROOTFS_IMG="./linuxroot.img"
PARAMETER_TXT="./rockdev/parameter.txt"
USERDATA_IMG="./rockdev/userdata.img"
MISC_IMG="./rockdev/misc.img"
OEM_IMG="./rockdev/oem.img"
UPDATE_IMG="./rockdev/update.img" BOOT_IMG_ADDR="0x00008000"
UBOOT_IMG_ADDR="0x00004000"
ROOTFS_IMG_ADDR="0x00058000"
PARAMETER_TXT_ADDR="0x00000000"
USERDATA_IMG_ADDR="0x01898000"
MISC_IMG_ADDR="0x00006000"
OEM_IMG_ADDR="0x1858000"# -------------------------------------------------------# ---------------------- 函数定义 ------------------------
# 输出带颜色的状态信息
function print_status() {echo -e "\033[1;34m[*] $1\033[0m"
}# 输出错误信息并退出
function print_error() {echo -e "\033[1;31m[!] 错误:$1\033[0m"exit 1
}# 检查文件是否存在
function check_file() {if [ ! -f "$1" ]; thenprint_error "文件 $1 不存在,请检查路径!"elseprint_status "find file $1 success"fi
}
# -------------------------------------------------------# ---------------------- 主逻辑 -------------------------
# 检查参数
if [ $# -eq 0 ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]; thenecho "用法: $0 [-h|--help] [镜像名称1] [镜像名称2] ..."echo "支持参数:"echo " -h, --help - 显示此帮助信息"echo " boot - 烧录 boot.img in $BOOT_IMG_ADDR"echo " uboot - 烧录 uboot.img in $UBOOT_IMG_ADDR"echo " rootfs - 烧录 rootfs.img in $ROOTFS_IMG_ADDR"echo " parameter - 烧录 parameter.txt in $PARAMETER_TXT_ADDR"echo " userdata - 烧录 userdata.img in $USERDATA_IMG_ADDR"echo " misc - 烧录 misc.img in $MISC_IMG_ADDR"echo " oem - 烧录 oem.img in $OEM_IMG_ADDR"echo " update - 烧录完整 update.img 固件"exit 0
fi# 遍历所有参数并执行对应操作
for param in "$@"; docase $param inboot)print_status "DownLoad boot.img..."check_file "$BOOT_IMG"$UPGRADE_TOOL wl $BOOT_IMG_ADDR "$BOOT_IMG" || print_error "DownLoad boot.img Failed!";;uboot)print_status "DownLoad uboot.img..."check_file "$UBOOT_IMG"$UPGRADE_TOOL wl $UBOOT_IMG_ADDR "$UBOOT_IMG" || print_error "DownLoad uboot.img Failed!";;parameter)print_status "DownLoad parameter,txt..."check_file "$PARAMETER_TXT"$UPGRADE_TOOL wl $PARAMETER_TXT_ADDR "$PARAMETER_TXT" || print_error "DownLoad parameter.txt Failed!";;userdata)print_status "DownLoad userdata.img..."check_file "$USERDATA_IMG"$UPGRADE_TOOL wl $USERDATA_IMG_ADDR "$USERDATA_IMG" || print_error "DownLoad userdata.img Failed!";;misc)print_status "DownLoad misc.img..."check_file "$MISC_IMG"$UPGRADE_TOOL wl $MISC_IMG_ADDR "$MISC_IMG" || print_error "DownLoad misc.img Failed!";;oem)print_status "DownLoad oem.img..."check_file "$OEM_IMG"$UPGRADE_TOOL wl $OEM_IMG_ADDR "$OEM_IMG" || print_error "DownLoad oem.img Failed!";;rootfs)print_status "DownLoad rootfs.img.."check_file "$ROOTFS_IMG"$UPGRADE_TOOL wl $ROOTFS_IMG_ADDR "$ROOTFS_IMG" || print_error "DownLoad rootfs.img Failed!";;update)print_status "DownLoad update.img..."check_file "$UPDATE_IMG"$UPGRADE_TOOL uf $"$UPDATE_IMG" || print_error "DownLoad update.img Failed!";;*)if [ "$param" != "-h" ] && [ "$param" != "--help" ]; thenprint_error "Unknown parameter: $param,add -h to view the Help!"fi;;esac
done# 设备重启操作
if [ "$RESET_AFTER_FLASH" = true ]; thenprint_status "烧录完成,正在重启设备..."$UPGRADE_TOOL rd 1 || print_error "Device reboot failed!"
elseprint_status "DownLoad success but device reboot failed!"
fi
# -------------------------------------------------------
输入/输出示例