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

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

3天内不再提示

从eMMC到SPI+SSD:双存储方案下Vendor Storage适配指南

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

扫码添加小助手

加入工程师交流群

嵌入式Linux开发中,存储方案的切换是常见需求,比如从传统eMMC改为SPI NOR Flash+SSDSATA/NVMe)双存储架构。这种调整能兼顾启动速度与存储容量,但也可能引发Vendor Storage访问异常。本文将结合实际调试案例,拆解适配过程中的核心问题与解决方案,帮助开发者快速踩坑。

wKgZO2kal-iARdfVAABACSCDcwE036.png

一、问题根源:存储切换为何影响Vendor Storage

Vendor Storage是嵌入式系统中用于存放SN(序列号)、MAC地址、硬件配置等关键信息的专用存储区域,其正常工作依赖存储设备驱动、分区配置、内核参数三者的协同。从eMMC切换到SPI+SSD方案后,原有适配逻辑失效,主要源于以下3点差异:

1.存储介质特性不同eMMC属于块设备,Vendor Storage通常依托eMMC的专用分区实现;而SPI NOR Flash是字符设备(MTD设备),需通过MTD子系统驱动管理,原有块设备驱动无法直接复用。

2.分区表定义规则变化eMMC的分区表由厂商预设或通过工具分区,SPI NOR Flash需在parameter.txt(启动参数文件)和内核设备树(DTS)中手动定义分区,且分区起始地址、大小必须满足64KB整数倍(SPI NOR擦除块对齐要求)。

3.内核配置依赖不同eMMC方案下启用的Vendor Storage配置(如CONFIG_ROCKCHIP_FLASH_VENDOR_STORAGE),在SPI方案中需切换为MTD子系统对应的配置(CONFIG_ROCKCHIP_MTD_VENDOR_STORAGE),同时需启用SPI NOR驱动支持。

wKgZO2kal-iAY0aEAACQLqPfOYU985.pngwKgZO2kal-iAPjKtAAZibsVN6Gs410.png

二、核心适配步骤:四步打通SPI+SSD下的Vendor Storage

结合实际调试经验,从eMMC迁移到SPI+SSD方案时,需按以下步骤完成Vendor Storage适配,每一步都需严格验证,避免后续问题:

1.内核配置:启用SPI NORMTD Vendor Storage支持

首先需在Linux内核配置(.config文件)中开启关键选项,确保SPI NOR设备能被识别,且Vendor Storage能依托MTD子系统工作:

启用SPI NOR驱动:勾选CONFIG_MTD_SPI_NOR(路径:Device Drivers > Memory Technology Device (MTD) > SPI-NOR device support),同时确保对应厂商驱动(如MacronixWinbond)被编译(可通过spi-nor-dev_ids数组确认芯片型号匹配,如本文中mx25u12832f需在列表中)。

启用MTD Vendor Storage:勾选CONFIG_ROCKCHIP_MTD_VENDOR_STORAGE(路径:Device Drivers > Memory Technology Device (MTD) > Rockchip MTD Vendor Storage Support),禁用原eMMC方案的CONFIG_ROCKCHIP_FLASH_VENDOR_STORAGE,避免驱动冲突。

验证配置:编译内核后,通过dmesg | grep spi查看SPI NOR是否被识别(如出现“spi-nor: detected mx25u12832f”日志,说明驱动加载成功)。

2.分区配置:双文件同步定义“vnvm”专用分区

SPI NOR需单独划分“vnvm”分区存放Vendor Storage数据,且**parameter.txtDTS中的分区定义必须完全一致**(仅单位不同),这是适配过程中的高频踩坑点:

配置文件

配置规则

示例(以256KB vnvm分区为例)

parameter.txt(启动参数)

单位:sector512字节),格式为分区大小@起始地址(分区名),需为64KB整数倍(即128sector

mtdparts=rk29xxnand:0x00000200@0x00000c00(vnvm),0x00004000@0x00004000(uboot)

DTS(设备树)

单位:byte,格式与parameter.txt一致,需转换为bytesector×512

bootargs = "... mtdparts=sfc_nor:0x00040000@0x00018000(vnvm),0x00600000@0x00020000(uboot) ..."

wKgZO2kal-mAZ02SAAB8xU4tl0w594.png

关键注意事项:

分区单位不可混淆:parameter.txtsectorDTSbyte,若单位错误会导致分区无法识别,进而出现“vendor_storage open fail”错误。

避免冲突:“vnvm”分区起始地址需避开ubootboot等已有分区,建议放在uboot分区之前(如起始地址0x00000c00),大小根据需求设置(最小64KB,需为64KB整数倍)。

3.驱动验证:确认MTD Vendor Storage设备生成

完成内核与分区配置后,需验证系统是否生成/dev/vendor_storage设备节点(这是Vendor Storage工具调用的关键):

1.启动系统后,执行ls /dev | grep vendor_storage,若能看到设备节点,说明配置基本正常;

2.若未生成节点,通过dmesg | grep vendor排查问题:

若出现“vendor_storage_probe ret=-1”,可能是分区定义错误(如地址冲突、单位错误),需重新核对parameter.txtDTS

若出现“spi nor not initialized”,需检查SPI NOR驱动是否启用(参考步骤1的内核配置)。

4.功能测试:用工具验证读写可用性

最后通过vendor_storage工具测试读写功能,确认关键信息能正常存储:

写入测试:执行vendor_storage -w VENDOR_SN_ID -t string -i "TEST_SN_123456",无报错说明写入成功;

读取测试:执行vendor_storage -r VENDOR_SN_ID -t string,若能输出“TEST_SN_123456”,说明Vendor Storage完全可用;

异常排查:若出现输入/输出错误,需检查“vnvm”分区是否可读写(通过cat /proc/mtd查看分区状态,确保“vnvm”分区为“rw”模式)。

三、常见问题排查:3个高频场景的解决方案

在实际适配中,即使步骤正确,也可能因细节遗漏导致问题。以下是3个典型场景的排查思路:

1.场景1vendor_storage工具提示“open fail”

可能原因:

a.SPI NOR驱动未加载(dmesg | grep spi无识别日志);

b.“vnvm”分区未定义或定义错误(单位混淆、地址冲突);

c.内核未启用CONFIG_ROCKCHIP_MTD_VENDOR_STORAGE

排查步骤:先确认SPI NOR驱动加载(步骤1),再核对分区配置(步骤2),最后检查内核配置(步骤1)。

2.场景2dmesg中出现“vendor_storage_probe ret=-1”

可能原因:MTD子系统未找到“vnvm”分区,通常是分区表中未定义该分区,或parameter.txtDTS的分区信息不一致。

排查步骤:对比parameter.txtDTS中的“vnvm”分区起始地址、大小,确保单位转换正确(sector×512=byte),且无地址冲突。

3.场景3SPI NOR芯片未被识别(无“detected xxx”日志)

可能原因:

a.内核未勾选对应芯片的驱动(如mx25u12832f需在spi-nor-dev_ids数组中);

b.硬件接线问题(SPI引脚接触不良)。

排查步骤:先检查内核drivers/mtd/spi-nor/core.c中的spi_nor_dev_ids数组,确认芯片型号已添加;若软件配置正确,再排查硬件接线。

四、总结:适配的核心原则

eMMCSPI+SSDVendor Storage适配,本质是**“从块设备逻辑切换到MTD字符设备逻辑”**,关键在于抓住3个核心原则:

1.驱动匹配:明确SPI NOR芯片型号,确保驱动被编译且加载成功;

2.分区同步parameter.txtDTS“vnvm”分区定义必须一致,单位不可混淆;

3.配置唯一:禁用eMMC方案的Vendor Storage配置,仅保留MTD方案的配置,避免冲突。

只要按内核配置分区定义驱动验证功能测试的步骤推进,同时做好每一步的日志排查,就能高效解决适配过程中的问题,确保Vendor Storage在双存储方案下稳定工作。


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

    关注

    5212

    文章

    20763

    浏览量

    338793
  • 存储
    +关注

    关注

    13

    文章

    4934

    浏览量

    90389
  • SSD
    SSD
    +关注

    关注

    21

    文章

    3165

    浏览量

    122708
  • emmc
    +关注

    关注

    7

    文章

    279

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    eMMC和固态硬盘SSD的区别是什么?宏旺半导体的一个小观点

    eMMCSSD都是现在市场上主流的NAND Flash,关于它们之间的联系和区别,有许多关注存储行业的朋友还不了解,宏旺半导体ICMAX根据多年在存储行业的经验,给大家科普一
    发表于 06-24 17:04

    宏旺半导体应用领域来漫谈eMMCSSD的区别及特性

    存储介质,具有相同的存储原理,但在应用领域及组成形态上确是如此不同。今天ICMAX应用领域的方面和大家好好聊聊eMMCSSD,也可以观
    发表于 08-06 15:08

    宏旺半导体ICMAX解答eMMC为什么不能做成SSD

    NAND不是搞起来更方便吗?今天ICMAX就给大家解答。理论上eMMC是embedded Multi Media Card的缩写,相当于一个闪存芯片+简单的主控,不用于SSD,其实是定位问题,
    发表于 08-15 14:17

    全志 Tina Linux 存储介质切换:eMMCSPI NAND,SPI NOR,SD Card,SD NAND

    emmc、spinor切换sdnand四种切换方式。sys_config.fex中只要关注storage_type选项,这个选项决定使用哪一种存储介质,配置后在pack过程,会自动打包对应介质的二进制
    发表于 10-14 10:51

    佰维BGA SSD系列之——设计应用助力客户产品提升竞争力

    ,为终端设备提供更优异的存储解决方案。   高性能、低功耗,赋能旗舰级移动终端 对于以手机、平板、笔记本电脑为代表的移动智能终端而言,存储方案主要采用
    发表于 12-13 10:58 1226次阅读
    佰维BGA <b class='flag-5'>SSD</b>系列之——<b class='flag-5'>从</b>设计<b class='flag-5'>到</b>应用助力客户产品提升竞争力

    EMMCSSD存储的比较

    EMMC概述 EMMC(Embedded MultiMediaCard)是一种嵌入式存储解决方案,主要用于移动设备,如智能手机、平板电脑和嵌入式系统。它基于NAND闪存技术,提供了一种
    的头像 发表于 12-25 09:24 6147次阅读

    EMMC存储在手机中的应用

    随着智能手机和移动设备的普及,用户对设备的存储需求也在不断增长。EMMC(嵌入式多媒体卡)作为一种高效的存储解决方案,已经成为许多手机制造商的首选。
    的头像 发表于 12-25 09:36 3055次阅读

    EMMC存储器故障检测及解决方案

    随着技术的发展,EMMC存储器因其高速、大容量和低功耗的特性,已经成为移动设备和嵌入式系统的首选存储解决方案。然而,任何技术都有可能出现故障,EMM
    的头像 发表于 12-25 09:39 9277次阅读

    EMMC存储如何影响设备性能

    基于NAND闪存的存储技术,它集成了控制器和NAND闪存在一个单一的封装中。与传统的SD卡或eMMC相比,EMMC提供了更高的数据传输速率和更低的功耗。EMMC的版本
    的头像 发表于 12-25 09:40 3680次阅读

    EMMC存储模块的安装与配置

    随着技术的发展,EMMC(嵌入式多媒体卡)因其高速、高可靠性和紧凑的尺寸而成为许多设备的首选存储解决方案EMMC存储模块概述
    的头像 发表于 12-25 09:49 3889次阅读

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

    在嵌入式设备中,单一存储介质可能存在容量限制或可靠性风险。RK3588 平台的存储 OTA 升级方案支持SPI(如
    的头像 发表于 02-01 16:46 1855次阅读
    RK3588平台<b class='flag-5'>双</b><b class='flag-5'>存储</b>(<b class='flag-5'>SPI</b>+PCIE)OTA升级<b class='flag-5'>方案</b>教学文档

    RK 平台 Vendor Storage 开发指南:基础知识、流程与实用技巧

    在瑞芯微(RK)平台的嵌入式开发中,vendor_storage 是一个核心模块,专门用于存储 SN(序列号)、MAC 地址、DRM 密钥等厂商专属数据。它不仅提供了跨环境的数据读写能力,还具
    的头像 发表于 11-22 07:11 1429次阅读
    RK 平台 <b class='flag-5'>Vendor</b> <b class='flag-5'>Storage</b> 开发<b class='flag-5'>指南</b>:基础知识、流程与实用技巧

    “牺牲容量” “智能适配”!天硕工业级 SSD 定义下一代存储技术方向

    宽温环境闪存电压漂移是工业存储的核心痛点,传统方案难以根治。天硕(TOPSSD)以 smartSLC® 动态补偿技术,让工业级 SSD 实现物理层状态智能
    的头像 发表于 12-18 22:40 479次阅读

    SSD固态硬盘品牌推荐:FTL掉电保护,读懂高可靠存储的技术逻辑

    SSD固态硬盘正在逐步取代机械硬盘成为各类系统的核心存储方案。本文技术原理出发,解析SSD如何通过FTL闪存转换层、磨损均衡、垃圾回收等机
    的头像 发表于 04-09 17:06 442次阅读

    2026嵌入式存储选型:eMMC断供、SPI NAND难调,SD NAND成最大变量

    当8GB eMMC交期拉长至52周,当SPI NAND的坏块管理让工程师调试怀疑人生,2026年的嵌入式存储市场正上演一场“冰与火之歌”。而在eM
    的头像 发表于 04-14 14:46 534次阅读
    2026嵌入式<b class='flag-5'>存储</b>选型:<b class='flag-5'>eMMC</b>断供、<b class='flag-5'>SPI</b> NAND难调,SD NAND成最大变量