0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RK3588平台双存储(SPI+PCIE)OTA升级方案教学文档

jf_44130326 来源:Linux1024 2026-02-01 16:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、方案概述

1.1背景与目标

嵌入式设备中,单一存储介质可能存在容量限制或可靠性风险。RK3588平台的双存储OTA升级方案支持SPI(如SPI NAND/NOR)与PCIE存储(如PCIE SSD混合部署场景,通过统一升级引擎实现跨存储设备的固件管理,解决多存储介质下的升级兼容性问题,同时保障升级过程的安全性与可靠性。

1.2核心特性

混合存储支持:同时适配SPIMTD设备)与PCIE(块设备)存储,支持不同类型分区独立升级。

固件格式扩展:新增多存储固件格式,兼容原有单存储固件。

精细化存储识别:每个分区独立标记存储类型(MTD /MTD),替代全局判断。

安全校验增强:针对不同存储类型优化校验逻辑,确保数据完整性。

二、环境配置与编译准备

2.1 Buildroot配置(rk3588.config

开启升级功能并指定新升级引擎,确保编译时包含必要组件:

#开启升级相关功能

BR2_PACKAGE_RECOVERY=y

#使用新升级程序(替代原有流程)

BR2_PACKAGE_RECOVERY_USE_UPDATEENGINE=y

#编译recovery二进制文件

BR2_PACKAGE_RECOVERY_RECOVERYBIN=y

#编译新升级引擎二进制文件

BR2_PACKAGE_RECOVERY_UPDATEENGINEBIN=y

#关闭UI(适用于无显示场景)

BR2_PACKAGE_RECOVERY_NO_UI=y

2.2依赖调整(glibc.mk

为兼容双存储升级引擎,将glibc版本从2.38降级至2.31

#原版本

# GLIBC_VERSION = 2.38-27-g750a45a783906a19591fb8ff6b7841470f1f5701

#调整后版本

GLIBC_VERSION = 2.31-54-g6fdf971c9dbf7dac9bea552113fe4694015bbc4d

注:版本调整需根据实际兼容性测试结果确认。

三、核心技术实现

3.1存储类型定义与标识

3.1.1存储类型枚举(rkimage.h

定义支持的存储类型,包含SPIPCIE

typedef enum {

STORAGE_FLASH_CODE = 1<<0,  //闪存

STORAGE_EMMC_CODE = 1<<1,  // eMMC

STORAGE_SD0_CODE = 1<<2,  // SD0

STORAGE_SD1_CODE = 1<<3,  // SD1

STORAGE_SPINOR_CODE = 1<<9,  // SPI NORMTD设备)

STORAGE_SPINAND_CODE = 1<<8,  // SPI NANDMTD设备)

STORAGE_USB_CODE = 1<<7,  // USB存储

STORAGE_PCIE_CODE = 1<<11  // PCIE存储(块设备)

//其他存储类型...

} STORAGE_CODE;

3.1.2固件标签标识(defineHeader.h

通过标签区分固件类型:

//多存储固件标签(SPI+PCIE等混合存储)

#define SSFW_TAG 0x57465353

//普通单存储固件标签

#define RKFW_TAG 0x57464B52

3.2多存储固件格式设计

双存储固件采用分层打包结构,外层为容器,内层包含各存储设备的独立固件:

update_ssfw.img(外层容器)

├── STORAGE_FW_HDR(头部,4KB

├── tag: SSFW_TAG(标识多存储固件)

├── head_size:头部大小

├── entry_count:存储设备数量(如2个:SPIPCIE

└── entry_size:每个存储条目的大小

├── STORAGE_ENTRY(条目表,可变长)

├── [SPI存储条目]

├── storage: STORAGE_SPINAND_CODE(存储类型)

├── offset: SPI固件在内层的偏移量

└── size: SPI固件大小

└── [PCIE存储条目]

├── storage: STORAGE_PCIE_CODE

├── offset: PCIE固件在内层的偏移量

└── size: PCIE固件大小

├── SPI固件(内层,RKFW格式)

└── PCIE固件(内层,RKFW格式)

3.3固件解析流程

3.3.1解析入口(rkimage.c

analyticImage函数根据固件标签判断类型,分支处理:

int analyticImage(const char *filepath, PRKIMAGE_HDR phdr, PRKIMAGE_STORAGE image_storage, int num) {

//读取固件头部标签

if (rkimage_tag == SSFW_TAG) {

//解析多存储固件(SPI+PCIE

return analyticDualStorageImage(filepath, phdr, image_storage, num);

} else if (rkimage_tag == RKFW_TAG) {

//解析普通单存储固件

return analyticRKFWImage(filepath, phdr, 0, fileSize);

}

}

3.3.2多存储固件解析(analyticDualStorageImage

1.读取外层容器头部,验证SSFW_TAG

2.解析条目表,获取SPIPCIE固件的偏移量与大小;

3.分别解析内层SPI固件和PCIE固件(调用analyticRKFWImage);

4.整合所有分区信息,并标记每个分区的存储类型(is_mtd):

SPI存储的分区(如SPI NAND)标记为is_mtd = true

PCIE存储的分区标记为is_mtd = false

3.4升级执行适配

3.4.1存储类型感知的烧写逻辑(flash_image.c

将全局存储类型判断改为分区级判断,适配SPIMTD)与PCIE(块设备):

//原逻辑:全局判断是否为MTD设备

// if (is_sdboot || is_usbboot || !isMtdDevice()) {

//新逻辑:使用当前分区的is_mtd属性

if (is_sdboot || is_usbboot || !pcmd->is_mtd) {

//块设备操作(如PCIE存储):直接写入/dev/block路径

} else {

// MTD设备操作(如SPI存储):通过mtd-utils工具操作

}

3.4.2校验逻辑适配(md5sum.c

comparefile函数增加is_mtd参数,根据存储类型选择校验方式:

//新增is_mtd参数

bool comparefile(..., bool is_mtd) {

if (is_mtd) {

// MTD设备校验(SPI存储):使用mtd读取接口

checkdata_mtd(dest_path, md5sum_dest, dest_offset, checkSize);

} else {

//块设备校验(PCIE存储):使用普通文件读取接口

checkdata(dest_path, md5sum_dest, dest_offset, checkSize);

}

}

3.4.3升级流程整合(update.c

1.升级前解析固件时,通过image_storage记录各分区的is_mtd属性;

2.升级执行时,为每个分区的update_cmd设置is_mtd

3.调用烧写函数(flash_normal/flash_bootloader)和校验函数(comparefile)时,传入is_mtd参数,确保操作与存储类型匹配。

四、关键技术点总结

技术点

作用

实现方式

多存储固件格式

支持SPIPCIE固件打包

外层SSFW容器+内层RKFW固件

分区级存储标识

区分每个分区的存储类型

is_mtd属性(true=SPIfalse=PCIE

动态烧写适配

针对存储类型选择操作接口

块设备直接写入/ MTD设备通过mtd-utils

校验逻辑适配

确保不同存储类型的校验准确性

根据is_mtd选择校验方法

五、测试与验证

5.1测试场景

1.基础功能测试:分别升级SPIPCIE存储的分区,验证单独升级有效性;

2.混合升级测试:同时升级SPI(如uboot)和PCIE(如rootfs)分区,验证跨存储协同;

3.容错测试:升级中断后重启,检查是否支持断点续传或回滚;

4.兼容性测试:验证对原有单存储固件(RKFW_TAG)的兼容能力。

wKgZO2kancSATQrJAAA7LJ_L6VY686.pngwKgZO2kancSAIIldAABA4FqOeL0554.png

5.2验证指标

升级成功率:≥99.5%1000次测试);

升级速度:SPI NAND≥8MB/s),PCIE SSD≥30MB/s);

校验准确性:100%识别数据篡改(通过人工修改固件测试)。

六、总结

本方案通过扩展固件格式、引入分区级存储标识、适配动态烧写与校验逻辑,实现了RK3588平台SPIPCIE双存储的OTA升级。方案兼顾兼容性与灵活性,可满足复杂存储场景下的升级需求,为多存储设备的嵌入式系统提供可靠的固件更新能力。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5209

    文章

    20625

    浏览量

    336758
  • 存储
    +关注

    关注

    13

    文章

    4881

    浏览量

    90251
  • RK3588
    +关注

    关注

    8

    文章

    585

    浏览量

    7540
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞芯微RK3588开发板RK3588 EVB和RK3588S EVB解读

    行业类应用产品;RK3588S EVB 面向高端平板、AR/VR、个人移动互联网设备等消费类电子产品。 1. RK3588 EVB:高性能 多接口 RK3588 EVB采用RK3588
    的头像 发表于 09-22 15:54 2.3w次阅读
    瑞芯微<b class='flag-5'>RK3588</b>开发板<b class='flag-5'>RK3588</b> EVB和<b class='flag-5'>RK3588</b>S EVB解读

    RK3588 EVB 开发板介绍

    RK3588 EVB:高性能 多接口RK3588 EVB采用RK3588芯片,RK806-2PMIC的供电
    发表于 03-16 16:39

    重磅!基于瑞芯微RK3588旗舰芯片打造的MinipcRK3588面世

    ,而且很容易升级支持未来更高性能的扩展。首先,RK3588采用瑞芯微最新的第四代编解码技术,真8K视频同编同解,图像更清晰、细节更丰富。根据产品需求,还可以支持更高分辨率比如12K视频的播放,同样,可以
    发表于 04-04 17:14

    求一种基于RK3588实现SPI-NOR大容量存储方案

    1、基于RK3588S自研平板方案实现硬件存储CPU: RK3588SDDR: LPDDR5 8GBNOR: SPI接口 32MB容量SSD
    发表于 05-23 14:20

    介绍一种基于RK3588平台的便携式8K录播一体机解决方案

    和8K@60硬件解码和输出,并且作为一颗通用型SoC,RK3588有着丰富的拓展接口,下面将介绍基于KR3588平台的便携式8K录播一体机解决方案。  
    发表于 07-13 16:14

    基于RK3588芯片方案开发ARM PC项目

    V-by-One、LVDS等屏幕接口,可以满足各种尺寸的一体机电脑需求。  瘦客户端机也是RK3588的一个应用方向,准确地讲,RK3588平台的ARMPC已经不算是严格意义上的瘦客户端机了,因为
    发表于 07-27 16:05

    求一种基于RK3588平台的高端游戏掌机产品解决方案

    流畅PSP游戏,对于新发布的网游和高端模拟器支持较差。ScenSmart推出基于RK3588平台的高端游戏掌机产品解决方案,可流畅运行PS2游戏和最新的手游,还可以提供AR、MR游戏方案
    发表于 08-01 16:55

    求一种RK3588+FPGA高速图像处理通信处理机解决方案

    方案,支持LPDDR4X/eMMC存储,拥有HDMI、MIPI、VGA、SATA等10余个外设接口,具有集成度高、性能强、扩展能力强等特点,满足各类行业AIoT终端设备对产品的需求。RK3588
    发表于 09-15 17:41

    基于RK3588平台的高性能XR解决方案

    近日,瑞芯微电子股份有限公司(“瑞芯微” Rockchip)与诠视科技(Xvisio Technology)联合宣布达成战略合作,基于各自优势和资源,双方将共同打造基于瑞芯微RK3588平台的高性能XR平台解决
    的头像 发表于 03-25 16:26 3436次阅读

    基于RK3588平台的会议平板即将发布

    瑞芯微与宇视合作推出的会议平板即将发布,据官方测试,这款 RK3588 平板安兔兔跑分可达 55 万。 RK3588性能强大,RK3588平台针对平板瑞芯微有多款高端平板
    的头像 发表于 10-09 16:13 3255次阅读
    基于<b class='flag-5'>RK3588</b><b class='flag-5'>平台</b>的会议平板即将发布

    rk3588rk3588s的区别

    rk3588rk3588s的区别 Rockchip是一家专业的半导体公司,成立于2001年,总部位于中国深圳,主要从事集成电路的设计、开发和销售。他们的热门产品RK3588RK3588
    的头像 发表于 08-15 16:44 2.1w次阅读

    RK35883588s的区别

    RK35883588s的区别 Rockchip RK3588RK3588s是两种功能强大且广受欢迎的片上系统(SoC)解决方案,用于一系
    的头像 发表于 08-15 17:03 2.9w次阅读

    Banana Pi BPI-W3 RK3588平台驱动调试篇 [ PCIE篇二 ] - PCIE的开发指南

    Banana Pi BPI-W3 RK3588平台驱动调试篇 [ PCIE篇 ] - PCIE的开发指南(二)
    的头像 发表于 11-02 09:24 2150次阅读
    Banana Pi BPI-W3 <b class='flag-5'>RK3588</b><b class='flag-5'>平台</b>驱动调试篇 [ <b class='flag-5'>PCIE</b>篇二 ] - <b class='flag-5'>PCIE</b>的开发指南

    北京迅为RK3588平台成功适配“望获”国产OS

    北京迅为RK3588平台成功适配“望获”国产OS
    的头像 发表于 04-09 15:35 1179次阅读
    北京迅为<b class='flag-5'>RK3588</b><b class='flag-5'>平台</b>成功适配“望获”国产OS

    实战复盘:RK3588 SPI+PCIe3x4方案启动修复,从节点配置到驱动适配全解析

          在 RK3588 嵌入式项目中, “ 接口配置不匹配 ” 是高频踩坑点 —— 近期 基于 linux6.1 内核 调试 SPI 闪存 +PCIe3x4 外设 方案时,就遇到
    的头像 发表于 01-08 10:24 696次阅读
    实战复盘:<b class='flag-5'>RK3588</b> <b class='flag-5'>SPI+PCIe</b>3x4<b class='flag-5'>方案</b>启动修复,从节点配置到驱动适配全解析