[RK-Linux] updateEngine工具使用以及代码分析

本文介绍了Rockchip Linux平台的Recovery模式和A/B模式,详细阐述了Recovery模式的配置、编译、系统升级及日志查看,以及A/B模式的升级流程。同时讲解了misc分区的作用和updateEngine工具的使用,包括其参数说明和自定义分区升级的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Rockchip Linux 平台支持两种启动方案,Recovery 模式和Linux A/B 模式:

  1. Recovery 模式,设备上有一个单独的分区(recovery)用于升级操作。
  2. Linux A/B 模式,设备上有两套固件,可切换使用。

两种启动方案的对比如下:

升级方案 代码路径 是否支持Recovey启动模式升级 是否支持A/B启动模式升级 是否需要misc分区支持
updateEngine external/recovery/update_engine 支持 支持 需要
rkupdate external/rkupdate 支持 不支持 需要

### 环境准备 为了在瑞芯微RK3588S平台上运行YOLOv8进行物体检测,首先需要搭建基础环境。这包括但不限于安装Linux操作系统、配置Python开发环境以及设置必要的依赖库[^1]。 ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt install python3-pip git cmake build-essential libopencv-dev pip3 install --upgrade pip setuptools wheel ``` ### 安装 RKNN Toolkit2 接着,需安装用于模型转换和优化的工具RKNN-Toolkit2。通过验证`from rknn.api import RKNN`语句能否无误执行来确认安装是否成功[^4]。 ```bash git clone https://github.com/rockchip-linux/rknn-toolkit2.git cd rknn-toolkit2 pip3 install . python3 -c "from rknn.api import RKNN" ``` ### 准备 YOLOv8 模型文件 获取官方发布的YOLOv8预训练权重,并将其转化为适用于RK3588平台上的`.rknn`格式。此过程可能涉及调整网络结构以适应NPU硬件特性[^2]。 ```python import torch from ultralytics.yolo.engine.model import YOLO model = YOLO('yolov8.pt') # 加载YOLOv8 PyTorch模型 torch.save(model.state_dict(), 'yolov8_weights.pth') ``` 注意:上述代码片段仅作为示意用途,在实际操作中还需参照具体版本文档完成相应修改。 ### 转化为 .rknn 文件 利用RKNN-ToolKit2提供的API接口实现PyTorch至RKNN模型格式的转变工作。确保所选参数适合目标设备性能需求。 ```python from rknn.api import RKNN # 初始化RKNN对象实例 rknn = RKNN() # 配置量化方式和其他选项... ret = rknn.load_pytorch(model='path/to/yolov8', input_size_list=[[3, 640, 640]]) if ret != 0: print('Load PyTorch model failed!') exit(ret) # 设置输入节点名称等信息... ret = rknn.build(do_quantization=True, dataset='./dataset.txt') if ret != 0: print('Build model failed!') exit(ret) # 导出最终.rknn文件 rknn.export_rknn('./yolov8.rknn') ``` ### 编写 Python 推理脚本 创建一个新的Python程序用来加载编译好的`.rknn`文件并调用NPU加速计算资源来进行实时预测分析任务[^3]。 ```python from rknn.api import RKNN def main(): rknn = RKNN() # Load RKNN Model ret = rknn.load_rknn('./yolov8.rknn') if ret != 0: print('Loading RKNN model failed.') return # Set inputs and outputs according to your application needs. ... # Start inference with NPU acceleration enabled by default on RK3588 series boards. outputs = rknn.inference(inputs=[input_image]) # Post-process the output data here... if __name__ == '__main__': main() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式逍遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值