网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

突破RK3576-S核心板存储限制:UFS/EMMC双存储启动逻

时间:2025-10-29 08:30

人气:

作者:admin

标签:

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

前言:

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

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

88503ea2-b45e-11f0-8ce9-92fbcf53809c.png

空贴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 模式。


88942554-b45e-11f0-8ce9-92fbcf53809c.png


二、硬件分析

问题根源在于易被忽视的: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的启动优先级高。硬件调整方法也很简单:根据下表更换上下拉电阻阻值。


88ab592c-b45e-11f0-8ce9-92fbcf53809c.png

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


三、Uboot分析

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

88cdbfa8-b45e-11f0-8ce9-92fbcf53809c.png

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

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

88f270c8-b45e-11f0-8ce9-92fbcf53809c.png

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

890806d6-b45e-11f0-8ce9-92fbcf53809c.png

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

89393bb6-b45e-11f0-8ce9-92fbcf53809c.png


四、软件修改

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

89577874-b45e-11f0-8ce9-92fbcf53809c.png

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

#编译usbplug./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
#拷贝usbplug.bin到rkbin替换对应文件cpusbplug.bin ../rkbin/bin/rk35/rk3576_usbplug_v1.04.bin

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

#重新编译uboot和loader./build.sh uboot
#打包整包固件./build.sh updateimg


五、验证

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

896dd97a-b45e-11f0-8ce9-92fbcf53809c.png

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

工程师Tips

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

2. UFS 固件下载工具及操作指南,可联系我司客服人员获取;

3. RK3576-S 核心板为标准品,建议选型时明确存储配置,避免自行调整导致售后问题。


温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信