泰山派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.pswp.cn/news/894625.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894625.shtml
英文地址,請注明出處:http://en.pswp.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 指定自定義搜索路徑 四…