腳本名字: 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
# -------------------------------------------------------
輸入/輸出示例