OpenHarmony镜像烧录bat脚本工具

环境

系统版本:OpenHarmony 4.0.10.13
平台设备:rk3588

背景

由于项目快速迭代,设备软件版本需经常升级更新,保持一致性。官方默认使用RKDevTool.exe工具来升级OpenHamrony rk35x8镜像,rk3568烧录OpenHarmony指导文档
但存在以下痛点:

  • 如要手动按按键进入loader模式
  • 需要导入config.cfg,配置镜像路径。虽然可以保存,但仍然不够效率。

为了解决以上两个痛点,提升OpenHarmony镜像升级的便捷性和效率,采用.bat工具来自动升级镜像。

.bat工具升级镜像步骤

  • 检查hdc环境是否正常
  • 检查设备连接数量,需唯一
  • 使用upgrade_tool进入loader 模式
  • 获取LocationID
  • 依次升级镜像文件(文件路径避免使用空格、中文、%¥#等特殊字符)
  • 重启设备

.bat工具使用步骤

  • 从OpenHarmony源码中获取upgrade_tool工具
    源码路径:developtools/integration_verification/DeployDevice/resource/RK3568_tool/upgrade_tool.exe
  • 将upgrade_tool.exe、OhosImagesUpgradeTool.bat工具和编译生成的镜像文件夹images放在同一目录下。
    在这里插入图片描述
  • 鼠标双击OhosImagesUpgradeTool.bat
  • 设备自动进入升级模式,升级完成后自动开机。

.bat 源码

注意:请根据镜像文件实际路径修改imgPath

@echo off
setlocal enabledelayedexpansion

echo ====================================
echo   Start Upgrade OpenHarmony Images
echo ====================================

::检查hdc环境
where hdc >nul 2>&1
if %errorlevel% equ 0 (
    echo hdc env is OK.
) else (
    echo hdc env isn't NG. pls config hdc first!
    pause
)

::检查设备连接数量,需唯一
set count=0
for /f "tokens=*" %%a in ('hdc list targets') do (
    set /a count+=1
)

::only need 1 connected device
::echo count=%count%
if %count% gtr 1 (
    echo More than one device connected. Please check the target device!
    pause
) else (
    for /f "tokens=*" %%i in ('hdc list targets') do (
        set "serialNumber=%%i"
        goto :break
    )
    :break
    echo found device connected. Serial number is: %serialNumber%
    set "DEVICE_SERIAL_NUMBER=%serialNumber%"
)

::进入loader模式,准备升级镜像
hdc -t %DEVICE_SERIAL_NUMBER% shell reboot loader
echo Enter loader mode ...
::delay 3s to enter loader mode
timeout /t 3 /nobreak >null
del .\null

::检查loader模式
for /f "tokens=*" %%a in ('.\upgrade_tool.exe LD ^| findstr /c:"Mode=Loader"') do (
    set "output=%%a"
    goto checkMode
)

:checkMode
if "!output!"=="" (
    echo Error: The device is not in Loader mode, Pls check!
    pause
) else (
    echo Device is in Loader mode.
)

::获取LocationID
set "LocationID="

for /f "tokens=2" %%i in ('.\upgrade_tool.exe LD ^| findstr "LocationID"') do (
    set "result=%%i"
)

::echo result is: %result%
::filter LocationID
for /f "tokens=4 delims==" %%j in ("%result%") do (
    set "LocationID=%%j"
)
::echo LocationID is: %LocationID%

::升级各镜像文件
::镜像文件夹路径,可修改为源码镜像生成路径
set "imgPath=.\images"
.\upgrade_tool.exe  -s %LocationID% UL %imgPath%\MiniLoaderAll.bin -noreset
.\upgrade_tool.exe  -s %LocationID% DI -p %imgPath%\parameter.txt
.\upgrade_tool.exe  -s %LocationID% DI -uboot %imgPath%\uboot.img
.\upgrade_tool.exe  -s %LocationID% DI -resource %imgPath%\resource.img
.\upgrade_tool.exe  -s %LocationID% DI -boot_linux %imgPath%\boot_linux.img
.\upgrade_tool.exe  -s %LocationID% DI -ramdisk %imgPath%\ramdisk.img
.\upgrade_tool.exe  -s %LocationID% DI -system %imgPath%\system.img
.\upgrade_tool.exe  -s %LocationID% DI -vendor %imgPath%\vendor.img
.\upgrade_tool.exe  -s %LocationID% DI -updater %imgPath%\updater.img
.\upgrade_tool.exe  -s %LocationID% DI -userdata %imgPath%\userdata.img
::兼容升级定制分区
if exist %imgPath%\data1.img (
    .\upgrade_tool.exe  -s %LocationID% DI -data1 %imgPath%\data1.img
)

echo ====================================
echo  Upgrade OpenHarmony Images Success
echo ====================================
::重启设备
.\upgrade_tool.exe -s %LocationID% RD
pause
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值