泰山派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" ]; 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
# -------------------------------------------------------

输入/输出示例

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正大杯攻略|分层抽样+不等概率三阶段抽样

首先,先进行分层抽样,确定主城区和郊区的比例 然后对主城区分别进行不等概率三阶段抽样 第一阶段,使用PPS抽样,确定行政区(根据分层抽样比例合理确定主城区和郊区行政区数量) 第二阶段,使用分…

开源智慧园区管理系统对比其他十种管理软件的优势与应用前景分析

内容概要 在当今数字化快速发展的时代,园区管理软件的选择显得尤为重要。而开源智慧园区管理系统凭借其独特的优势,逐渐成为用户的新宠。与传统管理软件相比,它不仅灵活性高,而且具有更强的可定制性,让各类园区&#…

计算机网络 应用层 笔记1(C/S模型,P2P模型,FTP协议)

应用层概述: 功能: 常见协议 应用层与其他层的关系 网络应用模型 C/S模型: 优点 缺点 P2P模型: 优点 缺点 DNS系统: 基本功能 系统架构 域名空间: DNS 服务器 根服务器: 顶级域…

人类心智逆向工程:AGI的认知科学基础

文章目录 引言:为何需要逆向工程人类心智?一、逆向工程的定义与目标1.1 什么是逆向工程?1.2 AGI逆向工程的核心目标二、认知科学的四大支柱与AGI2.1 神经科学:大脑的硬件解剖2.2 心理学:心智的行为建模2.3 语言学:符号与意义的桥梁2.4 哲学:意识与自我模型的争议三、逆向…

游戏引擎学习第86天

仓库: https://gitee.com/mrxiao_com/2d_game_2 回顾 继续之前的工作。 昨天已经让地形系统基本运行起来,但目前仍然需要进一步完善,使其能够生成更多的地块。目前的情况是,仅仅有一个地块位于中心区域,而真正需要的是让地块覆盖…

Python在线编辑器

from flask import Flask, render_template, request, jsonify import sys from io import StringIO import contextlib import subprocess import importlib import threading import time import ast import reapp Flask(__name__)RESTRICTED_PACKAGES {tkinter: 抱歉&…

力扣动态规划-20【算法学习day.114】

前言 ###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!! 习题 1.网格中的最小路径代价 题目链接…

关于算尽圆周率

总有人提到圆周率算尽的问题,其实代码都已经在前面给出了,自己跑一下就明白了。 用语言描述的话,那就是: 前面几篇文章已经写清楚了,圆周率的本质就是无限分辨率前提下的可二分度量单位。 就像是自然对数底&#xf…

从通讯工具到 AI 助理,AI手机如何发展?

随着AI进军各行各业,全面AI化时代已经到来。手机,作为现代人类的“数字器官”之一,更是首当其冲地融入了这一变革浪潮之中。 2024年年初,OPPO联合IDC发布了《AI手机白皮书》,公布OPPO已迈向AI手机这一全新阶段。到如今…

游戏引擎 Unity - Unity 打开项目、Unity Editor 添加简体中文语言包模块、Unity 项目设置为简体中文

Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…

C# 接口介绍

.NET学习资料 .NET学习资料 .NET学习资料 一、接口的定义 在 C# 中,接口是一种特殊的抽象类型,它定义了一组方法签名,但不包含方法的实现。接口使用interface关键字来声明。例如,定义一个表示形状的接口IShape: in…

Qt常用控件 多元素控件

文章目录 1. QListWidget1.1 常用属性和方法1.2 常用信号1.4 例子1,操作元素 2. QTableWidget2.1 常用属性和方法2.2 常用信号2.3 例子1,创建表格3.1 常用属性和方法3.2 常用信号3.3 例子1,创建树形结构 Qt中提供的多元素控件有: QListWidget…

2. 动态测试

一、动态测试是什么? 动态测试(Dynamic Test)允许在运行时生成测试用例,而不是在编译时通过 Test 静态定义。它通过 TestFactory 注解标记的方法动态生成一组测试用例,适用于需要灵活生成测试场景的场景。 核心特点&…

33.Word:国家中长期人才发展规划纲要【33】

目录 NO1.2样式​ NO3​ 图表 ​ NO4.5.6​ 开始→段落标记视图→导航窗格→检查有无遗漏 NO1.2样式 F12/另存为:Word.docx:考生文件夹样式的复制样式的修改 样式的应用(没有相似/超级多的情况下)——替换 [ ]通配符&#x…

Qt展厅播放器/多媒体播放器/中控播放器/帧同步播放器/硬解播放器/监控播放器

一、前言说明 音视频开发除了应用在安防监控、视频网站、各种流媒体app开发之外,还有一个小众的市场,那就是多媒体展厅场景,这个场景目前处于垄断地位的软件是HirenderS3,做的非常早而且非常全面,都是通用的需求&…

2021版小程序开发5——小程序项目开发实践(1)

2021版小程序开发5——小程序项目开发实践(1) 学习笔记 2025 使用uni-app开发一个电商项目; Hbuidler 首选uni-app官方推荐工具:https://www.dcloud.io/hbuilderx.htmlhttps://dev.dcloud.net.cn/pages/app/list 微信小程序 管理后台:htt…

【零拷贝】

目录 一:了解IO基础概念 二:数据流动的层次结构 三:零拷贝 1.传统IO文件读写 2.mmap 零拷贝技术 3.sendFile 零拷贝技术 一:了解IO基础概念 理解CPU拷贝和DMA拷贝 ​ 我们知道,操作系统对于内存空间&…

全栈开发:使用.NET Core WebAPI构建前后端分离的核心技巧(一)

目录 cors解决跨域 依赖注入使用 分层服务注册 缓存方法使用 内存缓存使用 缓存过期清理 缓存存在问题 分布式的缓存 cors解决跨域 前后端分离已经成为一种越来越流行的架构模式,由于跨域资源共享(cors)是浏览器的一种安全机制,它会阻止前端应用…

《Linux服务与安全管理》| 数据库服务器安装和配置

《Linux服务与安全管理》| 数据库服务器安装和配置 目录 《Linux服务与安全管理》| 数据库服务器安装和配置 任务一: 安装PostgreSQL数据库,设置远程登录,客户端可以成功登录并操作数据库。 任务二: 安装MySQL数据库&#xf…

Linux系统之whereis命令的基本使用

Linux系统之whereis命令的基本使用 一、whereis命令介绍二、whereis命令的使用帮助2.1 whereis命令的帮助信息2.2 whereis命令帮助解释 三、whereis命令的基本使用3.1 查找命令的位置3.2 仅查找二进制文件3.3 仅查找手册页3.4 输出实际使用的查找路径3.5 指定自定义搜索路径 四…