[ARM入门] 突破RK3576-S核心板存储限制:UFS/EMMC双存储启动逻辑剖析

[复制链接]
192|1
gztwdz4379 发表于 2025-10-31 09:01 | 显示全部楼层 |阅读模式
本帖最后由 gztwdz4379 于 2025-10-31 09:05 编辑

前言:  

两周前,眺望电子发布了最新RK3576-S核心板的预告,搭载LPDDR5和UFS这一组合引起了不少用户的关注,同时也收到不少关于存储搭配的疑问。本文结合内测调试经验以与客户需求为大家剖析其中关键点。

眺望电子RK3576-S核心板支持LPDDR5,考虑硬件复用性,核心板可选贴UFS和EMMC存储器颗粒,因此会衍生出四种配置场景:


  • 空贴UFS,LPDDR5+EMMC配置;
  • 空贴EMMC,LPDDR5+UFS配置;
  • 同时存在UFS和EMMC,以EMMC为系统磁盘,UFS作为扩展存储器;
  • 同时存在UFS和EMMC,以UFS为系统磁盘,EMMC作为扩展存储器;


如上四种场景均需软硬件协同修改,以下以最复杂的 “UFS 与 EMMC 共存且 EMMC 为系统盘” 场景为例,详解原理与操作方法。




一、问题描述


当 RK3576-S 核心板同时搭载 UFS 与 EMMC 时,会出现两个异常现象:

1、芯片首次上电,固件默认烧写至 UFS 而非 EMMC;

2、即使 UFS 烧写固件成功,系统上电仍无法启动,始终进入 maskrom 模式。




二、硬件分析

问题根源在于易被忽视的:BOOT启动项配置

SARADC_IN0_BOOT 专用于 SYSTEM BOOT 启动顺序的设置,不能用于其它功能,通过上下拉电阻分压采样得到的值,用来判断从哪个接口进行 BOOT,设置如下表:(Rup/Rdown 代表上、下拉电阻)

我司RK3576-S核心板SARADC_IN0_BOOT 引脚内部上下拉配置为Config 10状态,对应启动顺序为EMMC->SDMMC0->USB。

这就导致:若 EMMC 为空(未烧写固件),即使 UFS 已烧写固件,系统仍会因优先检测 EMMC 失败而进入 maskrom 模式。

若要设置UFS为系统磁盘,必须保证SYSTEM BOOT配置中UFS比EMMC的启动优先级高。硬件调整方法也很简单:根据下表更换上下拉电阻阻值。



对于场景【3】来说,光调整硬件可还不行,uboot也是关键。


三、Uboot分析


芯片进入烧写模式时,默认走usbplug的uboot。查看启动usbplug的启动log发现系统只扫描到UFS就进行启动了,并没有扫描EMMC。


定位到SDK/u-boot/arch/arm/mach-rockchip/usbplug.c文件中bootdev_rockusb_cmd函数会根据dev_list数组定义的顺序来依次对存储介质进行初始化等操作,如果扫描到对应的存储设备就会直接从该存储介质中启动,也就是将固件烧写到该存储介质中。

从dev_list数组可以看到初始化存储介质的顺序为SCSI(UFS)->MMC(EMMC)。


所以对于有UFS颗粒和EMMC颗粒的核心板,当扫描到UFS存储介质之后,就会退出循环,不再对EMMC等存储介质进行扫描。


最后将扫描到的存储介质类型和设备号组合成“rockusb 0 xxx x”命令,最终在board_init函数中运行此命令,将固件烧写到对应的存储中。



四、软件修改


要实现默认烧写固件到EMMC中而不是UFS中,需要让系统扫描到UFS后只做初始化,不退出循环,直到扫描到EMMC才退出循环,因此需要对bootdev_rockusb_cmd函数做以下修改:


修改后需要重新编译usbplug,以下操作均在u-boot目录下实现:

  1. <font color="#000000">#编译usbplug
  2. ./make.sh CROSS_COMPILE=/home/talowe/talowe-rk3576-linux-v1.01/prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- rk3576-usbplug

  3. #拷贝usbplug.bin到rkbin替换对应文件
  4. cp usbplug.bin ../rkbin/bin/rk35/rk3576_usbplug_v1.04.bin</font>

打包固件,以下操作均在SDK根目录下实现:

  1. <font color="#000000">
  2. #重新编译uboot和loader
  3. ./build.sh uboot

  4. #打包整包固件
  5. ./build.sh updateimg</font>
五、验证


将打包生成的整包固件烧写,有以下打印证明固件被烧写到EMMC中:


如上则是针对同时存在UFS和EMMC,以EMMC为系统磁盘,UFS作为扩展存储器的软硬件完整修改方案了。掌握此逻辑后,可类比调整其他三种存储配置场景的软硬件参数。

工程师Tips  📢
🛡️ 1.文档中存储颗粒的品牌、料号可能随市场供应调整,以实际采购为准;

🚀 2. UFS 固件下载工具及操作指南,可联系我司客服人员获取;
🔋 3. RK3576-S 核心板为标准品,建议选型时明确存储配置,避免自行调整导致售后问题。


产品预告Tips  📢
2025年11月7日,眺望电子Core-RK3576-S核心板即将上市,敬请期待!
现在行动,抢先锁定三大特权:
①首批内测开发者名额(限10位)  
② 专属技术方案定制礼包
③ 早鸟采购折扣(仅限本月)




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
yangjiaxu 发表于 2025-10-31 13:51 | 显示全部楼层
现在3576的性能如何?做个nas或者工控机是不是完全OK啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

19

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部