脚本名字: 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" ]; then
print_error "文件 $1 不存在,请检查路径!"
else
print_status "find file $1 success"
fi
}
# -------------------------------------------------------
# ---------------------- 主逻辑 -------------------------
# 检查参数
if [ $# -eq 0 ] || [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
echo "用法: $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 "$@"; do
case $param in
boot)
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" ]; then
print_error "Unknown parameter: $param,add -h to view the Help!"
fi
;;
esac
done
# 设备重启操作
if [ "$RESET_AFTER_FLASH" = true ]; then
print_status "烧录完成,正在重启设备..."
$UPGRADE_TOOL rd 1 || print_error "Device reboot failed!"
else
print_status "DownLoad success but device reboot failed!"
fi
# -------------------------------------------------------
输入/输出示例