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

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

输入/输出示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/964438.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用开源项目:pdf2docx,让PDF转换为Word

目录 1.安装python 2.安装 pdf2docx 3.使用 pdf2docx 转换 PDF 到 Word pdf2docx:GitCode - 全球开发者的开源社区,开源代码托管平台 环境:windows电脑 1.安装python Download Python | Python.org 最好下载3.8以上的版本 安装时记得选择上&#…

一、TensorFlow的建模流程

1. 数据准备与预处理: 加载数据:使用内置数据集或自定义数据。 预处理:归一化、调整维度、数据增强。 划分数据集:训练集、验证集、测试集。 转换为Dataset对象:利用tf.data优化数据流水线。 import tensorflow a…

设计模式 - 行为模式_Template Method Pattern模板方法模式在数据处理中的应用

文章目录 概述1. 核心思想2. 结构3. 示例代码4. 优点5. 缺点6. 适用场景7. 案例:模板方法模式在数据处理中的应用案例背景UML搭建抽象基类 - 数据处理的 “总指挥”子类定制 - 适配不同供应商供应商 A 的数据处理器供应商 B 的数据处理器 在业务代码中整合运用 8. 总…

计算图 Compute Graph 和自动求导 Autograd | PyTorch 深度学习实战

前一篇文章,Tensor 基本操作5 device 管理,使用 GPU 设备 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started PyTorch 计算图和 Autograd 微积分之于机器学习Computational Graphs 计算图Autograd…

C++11详解(一) -- 列表初始化,右值引用和移动语义

文章目录 1.列表初始化1.1 C98传统的{}1.2 C11中的{}1.3 C11中的std::initializer_list 2.右值引用和移动语义2.1左值和右值2.2左值引用和右值引用2.3 引用延长生命周期2.4左值和右值的参数匹配问题2.5右值引用和移动语义的使用场景2.5.1左值引用主要使用场景2.5.2移动构造和移…

Spring Boot常用注解深度解析:从入门到精通

今天,这篇文章带你将深入理解Spring Boot中30常用注解,通过代码示例和关系图,帮助你彻底掌握Spring核心注解的使用场景和内在联系。 一、启动类与核心注解 1.1 SpringBootApplication 组合注解: SpringBootApplication Confi…

生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (下)

今天小李哥将开启全新的技术分享系列,为大家介绍生成式AI的安全解决方案设计方法和最佳实践。近年来生成式 AI 安全市场正迅速发展。据IDC预测,到2025年全球 AI 安全解决方案市场规模将突破200亿美元,年复合增长率超过30%,而Gartn…

git:恢复纯版本库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

蓝桥杯python基础算法(2-1)——排序

目录 一、排序 二、例题 P3225——宝藏排序Ⅰ 三、各种排序比较 四、例题 P3226——宝藏排序Ⅱ 一、排序 (一)冒泡排序 基本思想:比较相邻的元素,如果顺序错误就把它们交换过来。 (二)选择排序 基本思想…

python学opencv|读取图像(五十四)使用cv2.blur()函数实现图像像素均值处理

【1】引言 前序学习进程中,对图像的操作均基于各个像素点上的BGR值不同而展开。 对于彩色图像,每个像素点上的BGR值为三个整数,因为是三通道图像;对于灰度图像,各个像素上的BGR值是一个整数,因为这是单通…

Slint的学习

Slint是什么 Slint是一个跨平台的UI工具包,支持windows,linux,android,ios,web,可以用它来构建申明式UI,后端代码支持rust,c,python,nodejs等语言。 开源地址:https://github.com/slint-ui/slint 镜像地址:https://kkgithub.com/…

惰性函数【Ⅱ】《事件绑定的自我修养:从青铜到王者的进化之路》

【Ⅱ】《事件绑定的自我修养:从青铜到王者的进化之路》 1. 代码功能大白话(给室友讲明白版) // 青铜写法:每次都要问浏览器"你行不行?" function addEvent青铜版(element, type, handler) {if (window.add…

Unity飞行代码 超仿真 保姆级教程

本文使用Rigidbody控制飞机,基本不会穿模。 效果 飞行效果 这是一条优雅的广告 如果你也在开发飞机大战等类型的飞行游戏,欢迎在主页搜索博文并参考。 搜索词:Unity游戏(Assault空对地打击)开发。 脚本编写 首先是完整代码。 using System.Co…

基于微信小程序的私家车位共享系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

C++编程语言:抽象机制:模板(Bjarne Stroustrup)

目录 23.1 引言和概观(Introduction and Overview) 23.2 一个简单的字符串模板(A Simple String Template) 23.2.1 模板的定义(Defining a Template) 23.2.2 模板实例化(Template Instantiation) 23.3 类型检查(Type Checking) 23.3.1 类型等价(Type Equivalence) …

多线程的常用方法

getName和setName方法 注意点 setName方法最好放在线程启动之前 最好在线程启动之前修改名字,因为线程启动之后,如果执行过快的话,那么在调用 setName() 之前线程可能就已经结束了 MyThread t1 new MyThread("haha"); t1.setNa…

C++继承的基本意义

文章目录 一、继承的本质和原理二、重载、隐藏和覆盖三、基类与派生类的转换 一、继承的本质和原理 继承的本质:a. 代码的复用 b. 类和类之间的关系: 组合:a part of… 一部分的关系 继承:a kind of… 一种的关系 总结&#xff…

简单易懂的倒排索引详解

文章目录 简单易懂的倒排索引详解一、引言 简单易懂的倒排索引详解二、倒排索引的基本结构三、倒排索引的构建过程四、使用示例1、Mapper函数2、Reducer函数 五、总结 简单易懂的倒排索引详解 一、引言 倒排索引是一种广泛应用于搜索引擎和大数据处理中的数据结构,…

FinRobot:一个使用大型语言模型的金融应用开源AI代理平台

“FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models” 论文地址:https://arxiv.org/pdf/2405.14767 Github地址:https://github.com/AI4Finance-Foundation/FinRobot 摘要 在金融领域与AI社区间&a…

Docker使用指南(一)——镜像相关操作详解(实战案例教学,适合小白跟学)

目录 1.镜像名的组成 2.镜像操作相关命令 镜像常用命令总结: 1. docker images 2. docker rmi 3. docker pull 4. docker push 5. docker save 6. docker load 7. docker tag 8. docker build 9. docker history 10. docker inspect 11. docker prune…