泰山派Linux环境下自动烧录脚本(EMMC 2+16G)

news/2025/2/5 16:32:39 标签: linux, 运维, 服务器

脚本名字: 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
# -------------------------------------------------------

输入/输出示例


http://www.niftyadmin.cn/n/5842329.html

相关文章

基于 docker 的mysql 5.7 主备集群搭建

创建挂载目录和配置文件 主节点 mkdir -p /mysql_master/mysql/log mkdir -p /mysql_master/mysql/data mkdir -p /mysql_master/mysql/conf vim /mysql_master/mysql/conf/my.cnf[mysqld] datadir/var/lib/mysql #MySQL 数据库文件存放路径 server_id 1 #指定数据库服务器的…

《黑马点评》实战笔记

目录 P1 Redis企业实战课程介绍 P2 短信登录 导入黑马点评项目 P3 短信登录 基于session实现短信登录的流程 P4 短信登录 实现发送短信验证码功能 P5 短信登录 实现短信验证码登录和注册功能 P6 短信登录 实现登录校验拦截器 P7 短信登录 隐藏用户敏感信息 P8 短信登录 …

【BUUCTF杂项题】后门查杀、webshell后门

前言:Webshell 本质上是一段可在 Web 服务器上执行的脚本代码,通常以文件形式存在于 Web 服务器的网站目录中。黑客通过利用 Web 应用程序的漏洞,如 SQL 注入、文件上传漏洞、命令执行漏洞等,将 Webshell 脚本上传到服务器&#x…

kubernetes 核心技术-集群安全机制 RBAC

随着 Kubernetes 在企业级应用中的广泛采用,确保集群的安全性变得至关重要。Kubernetes 提供了多种安全机制来保护集群及其资源免受未授权访问和潜在威胁的影响。其中,基于角色的访问控制(Role-Based Access Control, 简称 RBAC)是…

excel实用问题:提取文字当中的数字进行运算

0、前言: 这里汇总在使用excel工作过程中遇到的问题,excel使用wps版本,小规模数据我们自己提取数据可行,大规模数据就有些难受了,因此就产生了如下处理办法。 需求:需要把所有文字当中的数字提取出来&…

HarmonyOS NEXT:应用程序框架进阶

基本概念 UIAbility组件:一种包含UI的应用组件,主要用于和用户交互。 ExtensionAbility组建:基于特定场景,如服务卡片、输入法等提供的应用组件,每一个具体场景对应一个ExtensionAbilityType,开发者只能使…

C++ Primer 多维数组

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

Swift 进阶:Observation 框架中可观察(@Observable)对象的高级操作(上)

概述 在 WWDC 24 中苹果推出了全新的 Observation 框架,借助于它我们可以更加细粒度的监听可观察(@Observable)对象 。同时,SwiftUI 自身也与时偕行开始全面支持 @Observable 对象的“嵌入”。 然而在这里,我们却另辟蹊径来介绍 @Observable 对象另外一些“鲜为人知”的故…