ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

RKDevInfoWriteTool产线批量写入SN/MAC配置与校验实践

RKDevInfoWriteTool产线批量写入SN/MAC配置与校验实践 1. 生产上线前先搞懂RKDevInfoWriteTool到底解决什么问题很多刚接触瑞芯微平台的工程师第一次听到RKDevInfoWriteTool这个工具时都会下意识把它和烧录固件的RKDevTool搞混。这俩虽然都是瑞芯微官方工具但干的完全是两码事。RKDevTool负责把固件镜像烧进eMMC或SPI Flash而RKDevInfoWriteTool负责的是往设备里写入产品信息——比如序列号SN、WiFi MAC地址、蓝牙MAC地址、机型型号、产线编号这类“一机一密”的数据。我见过不少从方案公司拿到样板的硬件工程师第一款量产产品上线时还在一台一台打开串口手动改设备信息效率低不说还容易漏写、写错。尤其当单日产能到几百台的时候手动一个个改SN基本就是在拖垮产线。这时候你才发现瑞芯微其实早就把批量写信息的工具给好了问题只是很多人没用过、不会配或者根本不知道有这个工具存在。先说这个工具在整条产线里的位置。一条典型的瑞芯微方案量产线大概长这样贴片完成板卡裸板先做PCB测试确认供电、时钟、DDR这些基础硬件没问题。进入一级烧录工位用RKDevTool或工厂定制的烧录脚本把完整的系统固件写进去。固件烧完后主板进入二级产测工位这时候就需要把每块板子的唯一身份信息写入进去。最后是整机功能测试测试工位通过读取设备信息来生成IMEI、SN标签、MAC条码和系统内部读取到的值做比对。RKDevInfoWriteTool承担的就是第三步的工作而且它支持批量连续写入也就是说你只要把配置文件的规则定好然后机械地把每块板子插上去工具会按规则自动生成并写入SN、MAC这些信息写完之后还能自动校验全程不需要人工干预。从我个人经验来说这个工具特别适合三种场景整机代工厂批量生产一天几百上千台SN和MAC必须唯一且需要支持自动编码规则。方案开发阶段的小批量打样几十台样机要分别测试手动写信息太累用工具批量处理省心。产测软件集成前的数据准备有些工厂会把写入工具做成自动化系统的一部分调用命令行接口对接MES制造执行系统RKDevInfoWriteTool同样能胜任。还有一点容易被忽略这个工具不仅支持Rockusb模式也就是Loaderd模式下写信息也能在设备正常启动后通过ADB通道写入特定分区。两种方式对应的配置和操作流程略有不同后面我会展开说。先记住一个结论——只要你的产线要批量出货SN和MAC这类信息就绝对不能靠手工去改用工具批量写入才是正路。2. 环境准备驱动、固件版本与设备进入烧录模式在动手配置RKDevInfoWriteTool之前先把环境捣鼓好。这个环节出问题的概率其实比后面配置工具还要高因为瑞芯微的USB驱动和相关工具版本之间的兼容性真的需要仔细看一下。2.1 安装Rockchip USB驱动别用太旧的DriverAssistant瑞芯微的USB驱动通常以DriverAssistant或瑞芯微驱动助手的形式提供在官方SDK、工具包或者方案公司提供的工程包里面都能找到。安装步骤很简单以Windows系统为例解压驱动包找到DriverInstall.exe。右键以管理员身份运行。点击“驱动安装”等它提示安装完成。把设备用USB线连接到电脑插入时按住设备上的RECOVERY键或者根据板卡手册进入Loader模式打开设备管理器确认端口。正常识别后在设备管理器里应该能看到一个名为“Rockusb Device”的设备节点有时候也会显示为“Class for Rockusb Devices”。如果这里没识别出来后面工具就完全找不到设备这是第一个排查点。这里说一个实际踩过的坑很多工程师电脑上装过别的芯片平台的USB驱动比如全志的、联发科的这些驱动有可能会抢占USB设备句柄导致Rockusb设备识别异常。遇到这种情况建议在设备管理器里先把不相关的USB驱动禁用或者换一台干净的电脑试试。另外多换几根USB数据线——听起来像废话但真有不少是线的问题只能充电不能传数据的数据线在工厂里太常见了。2.2 设备要进入哪种模式Loader、MaskROM、ADB的区别RKDevInfoWriteTool写入信息时设备需要处于特定的连接状态。瑞芯微平台的设备常见三种模式Loader模式最常见的升级模式bootloader已经跑起来可以执行固件烧录和分区写入。进Loader的方式一般是按住RECOVERY键上电或者在系统里执行reboot loader命令。部分板卡在uboot阶段有快捷键进Loader具体看板卡原理图但绝大多数情况下按住RECOVERY再上电是最稳的。MaskROM模式当BootLoader损坏或者Flash里没有固件时芯片会进入MaskROM模式。在这个模式下可以做低级擦除、DDR初始化等操作RkDevTool里强制升级用的就是MaskROM。RKDevInfoWriteTool一般不建议在MaskROM模式下写产品信息因为部分分区状态不完整写入可能失败。ADB模式设备正常启动到Android/Linux系统后通过ADB连接。RKDevInfoWriteTool也支持这个模式但前提是设备系统里已经集成了对应的写入服务或分区可写。我的建议是量产优先用Loader模式批量写入。原因很直接Loader模式下不依赖系统完整启动只要BootLoader能跑板子就能被识别稳定性高而且可以统一控制写入时机不受系统启动时长影响。ADB模式虽然也支持但每台设备都要等系统起来产线节拍会慢不少。2.3 工具版本和固件版本的匹配关系这是最容易忽略的一个点。RKDevInfoWriteTool工具本身有版本迭代不同版本的开发套件所对应的固件分区布局可能不一样。比如说老版本SDK里产品信息可能存放在misc分区或parameter分区的某个偏移位置而新版本SDK则改成了独立的vendor分区或者factory分区。如果你用新版本工具配老固件或者反过来都有可能导致写入信息后设备启动时读不到。所以我强烈建议第一件事就是把方案公司或者原厂提供的工具版本和固件版本对应清楚最好直接使用同一个SDK包里打包好的一整套工具链而不是从网上随便找一个大而全的版本。我在实际项目中就遇到过工具能正常写入设备也提示成功但重启后系统读取SN一直是空最后查下来是固件里读取分区的代码和新工具写入的位置对不上这类问题排查起来非常费劲。3. 配置文件的键值映射与字段规划RKDevInfoWriteTool之所以强大核心在于它有一套灵活、可配置的键值对映射机制。你用记事本打开它的配置文件会发现里面其实就是一组组键值对定义了“你要往设备里写什么字段、写在哪个分区、内容怎么生成”。理解这个机制基本就理解了整个工具的使用逻辑。3.1 配置文件的基本结构工具主程序运行后会读取一个默认的配置文件常见的是config.ini或InfoConfig.ini里面按段落划分不同的配置组。结构简化和示意如下[DeviceInfo] ; 设备支持的模式loader表示Rockusb Loader模式 support_mode loader, adb [WriteConfig] ; 要写入的目标分区名 partition factory [Item_SN] ; 字段对应的标识 item_name SN ; 写入内容的编码方式 encode ascii ; 写入数据长度字节 length 32 ; 内容生成规则auto表示自动按规则生成 value_mode auto ; 自动生成的规则表达式 format SN%04d start 1000 step 1这个结构在真实项目中可能会有些微差异但本质不变。我列出这些字段是想让你理解三件事每个写入字段都有一个唯一的item_name这个名称对应的是固件里读取信息时用的key。比如系统里的SN读取逻辑会去factory分区找名为SN的字段那么你配置里的item_name就必须叫SN不能随意改。encode和length决定了数据在存储介质里的实际形态。ASCII编码下一个字符占一个字节如果是十六进制HEX编码两个字符才占一个字节。定义错编码方式长度就全乱了。value_mode是写入内容来源的核心参数支持定值、自动生成、文件导入等多种模式。3.2 常见字段的配置范例实际量产项目里最常见的写入字段无非这几个字段名含义典型长度典型编码说明SN序列号16~32字节ASCII生产管理关键字段WIFI_MACWiFi网卡MAC地址6字节HEX局域网唯一标识BT_MAC蓝牙MAC地址6字节HEX蓝牙唯一标识MODEL产品型号16~32字节ASCII多机型共线生产时必配HW_VERSION硬件版本号4~16字节ASCII返修定位时很有用FACTORY_ID产线编号4~8字节ASCII用于溯源以MAC地址为例配置里通常长这样[Item_WIFI_MAC] item_name WIFI_MAC encode hex length 6 value_mode auto ; 这里按十六进制生成A8:B2:C3:... format A8B2C3%04X start 0 step 1这里有个细节WiFi MAC地址的前3个字节通常是公司申请的OUIOrganizational Unique Identifier后3个字节由厂商自行分配。默认配置里如果你不写format工具可能会按随机或者全零处理这会导致设备连不上路由器或者和别的设备MAC冲突。所以量产前一定要确认OUI段是多少把前半段固定死后半段以递增方式生成这是最稳妥的做法。3.3 定值写入与文件导入模式除了自动生成还有两种常用的写入模式定值写入value_mode fixed然后写明value xxx。适合写那些所有机器都一样的信息比如产品型号MODEL、硬件版本HW_VERSION、软件版本SW_VERSION。文件导入value_mode file然后指定一个CSV或文本文件路径。适合从MES系统拉取每台设备的SN列表按顺序写入。这样每条SN都是你事先准备好的和MES系统里绑定出货的SN完全一致省去事后同步数据的麻烦。我有一次做出口产品的项目客户严格要求SN必须和包装箱条码一一对应而且MES系统已经把SN序列生成好了。这种情况下自动生成规则就满足不了必须用文件导入模式从MES导出的CSV里逐行读取SN每写一台设备就消费一行顺序错了都不行。RKDevInfoWriteTool的文件导入模式在这种场景下就很关键。3.4 配置前先和固件工程师对齐字段协议这一点放在配置章节的最后说因为它极其重要。你在工具的配置文件里写多少字段、字段名叫什么、数据怎么编码必须和固件端读取这些信息的代码保持严格一致。在瑞芯微的Linux和Android平台里产品信息通常会被写在/factory、/vendor、/misc等分区中并在系统启动后将它们解析为环境变量或者生成节点文件上层App通过读文件或者读属性获取。整个链路是工具按照配置文件把键值对写到指定分区的指定偏移量BootLoader或内核启动时解析该分区系统最终以文件或属性的形式暴露给App读取。如果固件解析时用的是WIFI_MAC这个名字而你在工具里配置成了WIFI_MAC_ADDR那结果就是数据写了也校验成功了但上层拿不到白忙活。拿到工具的第一件事不是打开就写而是先把固件SDK里的分区解析代码找到把字段名全部摘出来再对照工具配置文件逐项确认。4. 从单台调试到批量写入批处理脚本与产能提升配置好字段之后就要进入实际写入环节。刚开始用这个工具时建议先单台调试确认一台设备能正确写入且系统能正常读取再放开手脚批量操作。这个习惯能帮你把问题控制在小范围内避免一次错一堆。4.1 单台调试的基本流程把板子通过USB接到电脑上并进入Loader模式打开RKDevInfoWriteTool选择对应的配置文件然后执行“写入”操作。执行过程中留意工具底部的日志输出正常情况下会显示类似“Device found”“Writing item SN OK”“Writing item WIFI_MAC OK”“Verify OK”的提示。这里有一个环节不能跳过——写完之后一定要做一次“读取校验”。工具通常提供单独的读取/导出功能把设备里实际存储的信息读回来和预期值做对比。我一般会在写入流程里强制加入校验步骤写完之后立刻读取一遍因为实际生产环境中写入操作受USB接触不良、供电不稳、分区异常等因素影响有一定概率“假成功”。如果你没有校验就直接流到下一道工序等到整机组装完成才发现SN不对返工成本就大了。4.2 批量写入的两种姿势确认单台没问题后就可以上批量了。RKDevInfoWriteTool支持两种典型的批量操作方式界面批量模式工具支持设备热插拔检测第一台写入完成后拔掉插上第二台工具会自动识别并开始写入。这种模式适合人工流水线操作操作员只需要把板子一根一根插上去不用点任何按钮。产线上可以安排一个工位专门干这事节拍大概能控制在15秒到30秒一台取决于写入字段数量和USB传输速度。命令行自动化模式如果产线自动化程度高或者你想把写入动作集成到自己的上位机软件里可以通过命令行方式调用工具主程序传入配置文件路径并触发写入。命令格式大致类似RKDevInfoWriteTool.exe -config factory.ini -write这样你的MES系统、自动化测试机柜就可以直接调用它和上下位机联动起来。4.3 提升产线节拍的几个实用技巧这么多年跑产线的经验总结几个直接影响产能的细节第一USB Hub要选带独立供电的。批量烧录时人手不够往往一台电脑接多个USB扩展坞每个扩展坞再挂多块板子。如果扩展坞供电不足插入时电压跌落轻则设备识别慢重则写入中途掉线非常坑。我建议选工业级带外部电源的USB Hub并且每路USB口都有独立过流保护。第二脚本里加写失败自动重试。即使握手正常写入也有小概率失败。如果你的上位机是自研的可以在调用工具后判断返回值失败自动延时2秒重试重试2到3次。在Loader模式下设备不会自动跑系统重置一下USB枚举就能再次识别重试成功率很高。第三SN的Start值和Step值要想好。自动生成SN时工具的计数是保存在本地的。如果你一天生产500台建议每个班次设置不同的Start值比如白班从1000开始夜班从2000开始避免两个班次同时写序列时把计数器搞串了。更稳妥的方式还是用文件导模式从MES系统拉取当班批次的SN列表从一开始就从源头杜绝重复。第四批量操作前要把日志输出打开并保存。工具一般都支持把日志写到一个文本文件里我习惯让操作员每天上班新建一个日志目录按日期命名写入结果的全部日志都归档保留。一旦后面出货阶段发现某台设备SN和标签对不上靠日志能很快定位是哪一天、哪一台、当时写了什么内容省去大海捞针的排查过程。4.4 多台设备并行写入的思路如果你的产线产能要求特别高单台串行写满足不了节拍那就要考虑多台并行。思路其实不复杂每台电脑接一个多口USB Hub每个Hub上挂多台设备然后在工具里开多个实例或者用多台电脑同时跑。但要注意批量并行时如果几台设备同时写入USB带宽会成为瓶颈。Rockusb设备的传输速度本身不算快如果同时写多个大字段信息比如要把整个厂商分区的内容都重新写入速度就会明显下降。我的经验值是复杂的配置10个字段以上建议一个人最多同时盯4到6台简单配置只有SNMAC可以放宽到8台。再多的话不是工具扛不住而是你分不清哪台写完了哪台没写完反而容易出错。4.5 写完之后如何自动复位设备还有一个很提升效率的小功能写入完成并校验成功后工具可以自动复位设备让设备重启进入系统。这样操作员拔下来的就是一台已经写入完信息且正常启动的设备而不是还停在Loader模式的板子。在流水线上这一步省去了操作员还要手动按键复位的动作每台省下几秒钟一天下来就是大半个小时产能。先确认工具的复位参数和板卡的uboot配置匹配有的板卡上电默认进Loader有的默认进系统如果你的固件默认停在Loader就需要在复位后检测一下到底有没有正常启动别让一批“没启动起来”的板子流到后面工位去。5. 写入完成后的校验机制与返工流程写信息看起来简单但真正决定产线质量的关键在后半程——校验和返工。这个环节没做好前面写得再快也是白搭。5.1 三层校验机制我建议量产项目至少做三层校验第一层是工具自带的写入后校验。写入完成后立刻读取设备信息和预期值比对。这层能拦截大多数基本写入错误比如USB断线、分区写入失败。第二层是系统层面校验。设备从Loader模式复位进入系统后通过ADB执行查询命令比如查看SN节点文件或者读取属性把系统实际拿到的值读取出来和工具写入值做对比。为什么要多做这一层因为信息写入是一回事固件能不能正确解析出来是另一回事。前面提到过工具配置的字段名和固件解析的key不一致时写入校验是正常的但系统读出来就是空的。只有把两层校验都做了才能确认整条链路是通的。第三层是产测工位校验。设备到了功能测试工位产测软件读取产品信息同时扫描操作员贴的SN标签条码两者不匹配就拦截下来。这层更像是最终出货前的守门员确保到用户手里的每一台设备信息和标签一致。5.2 写错了怎么处理返工流程要提前设计产线运行难免会遇到写错、写坏的情况。比如操作员把SN写错了或者一台板子在烧录过程中突然断电导致分区数据损坏。这时候如果你没有提前设计返工流程现场一定乱套。一个通用的返工思路是将设备重新进入Loader模式。用RKDevTool重新烧录一遍完整的固件把之前写入的分区覆盖掉恢复到出厂状态。再用RKDevInfoWriteTool重新写入正确的产品信息。关键点在于烧录固件的动作一定会把之前写入的SN、MAC覆盖掉所以返工完成后要重新走一遍写入流程而不是只修正某个字段。有个细节可能很多人不知道某些字段在写入时会有防重机制比如同一台设备已经写过WIFI_MAC再写一次可能会被拒绝或者校验时发现新值和旧值不同就警告。这是为了防呆但也会成为返工时的障碍。遇到这种情况不要想着直接覆盖写老老实实重新烧固件再写信息反而最快。5.3 校验失败之后的日志分析与追溯当校验失败率突然升高时先别急着怀疑工具稳定性。我用过的经验是产线批量问题90%以上出在以下几类原因USB连接器松动或氧化导致传输数据偶尔出错。某一批板卡的Flash器件存在坏块写入时恰好落在了坏块区域。配置文件被改动过却没人知道写入的字段偏移发生了错位。电脑系统后台自动更新把USB驱动给更新了或者杀毒软件把工具给拦截了。遇到批量失败第一件事是翻日志。日志里如果失败集中在某种特定的错误代码比如“Write Fail at sector xxx”那大概率是Flash问题如果错误提示是“Device Not Found”那先查USB连接和驱动。一定要养成把日志保留下来、按批次分析的职业习惯而不是失败了重启一下工具就完事。5.4 状态标记与合格品管理还有一个管理上的实用技巧在工具配置文件里加一个“写入状态”到固件可读的位置比如写入完成后再额外写入一个PROD_STATUS字段值为PASS。设备到下一个工位时产测软件先检查PROD_STATUS如果不是PASS直接判定异常。这个小技巧花不了什么成本但对产线防呆意义很大——防止未写入信息的设备不知不觉流到下一个工位。特别是在多款产品共线生产的工厂里操作员忙起来根本分辨不出哪台写了哪台没写有个显式的PASS状态标记机器能帮你把关。6. 产线落地中的常见坑位与实用经验最后这部分我把这些年跑瑞芯微产线过程中遇到的典型问题和处理经验集中整理一下每一件都是我或者身边同事真金白银换来的教训。6.1 驱动被Windows自动更新搞坏Windows 10和Windows 11的自动更新有时候会替换Rockusb驱动导致工具突然找不到设备。产线上的Windows电脑强烈建议手动关闭驱动自动更新或者用组策略把瑞芯微设备驱动排除在更新范围外。这个坑很隐蔽因为白天正常第二天上班突然全体报“No Device”。排查一通发现是夜里Windows自动更新把驱动换掉了。如果工厂的电脑数量多建议用统一镜像管理把驱动固化进镜像同时禁用自动更新策略。6.2 USB Hub的选型不能图便宜产线USB Hub是重灾区。很多工厂为了省钱买那种几十块钱的普通Hub接上两三个设备就开始不稳定。我自己实测的经验是用于批量烧录的Hub至少要满足三个条件外置电源供电、每个端口独立过流保护、支持USB 3.0而且向下兼容稳定。另外要注意的是Hub和电脑之间的连接线也必须是质量好的USB 3.0线材。那段线是整个USB链路中最容易被人忽视的瓶颈线太长或者线径太细都会导致电压下降设备识别时好时坏。6.3 批次管理和配置变更控制RKDevInfoWriteTool的配置文件改动一定要纳入版本管理。不要在产线电脑上直接改配置每次修改都通过U盘或者网络共享目录拷贝更新同时记录变更日志什么时间、谁改的、改了哪些字段、对应哪个项目。实际操作中我真的见过这种事某天开始产线突然出现一批“该写入SN字段却写进去的是MODEL字段”的设备查来查去发现是头一天晚上加班的工程师为了方便随手改了配置文件里两个字段的顺序忘了改回来。配置变更失控造成的批量性事故是最可惜的本来完全可以通过管理手段避免。6.4 多项目共线时的配置切换现在很多代工厂一条产线要兼容多个项目的主板不同项目之间写入的字段、分区、SN规则可能完全不同。这时候建议把每个项目的配置文件独立命名存放比如config_A1_factory.ini、config_B2_factory.ini并且要求操作员在切换项目时严格按照SOP标准作业程序操作切换前先确认当前产线在做的项目型号。选择对应项目的配置文件。用一台样机做单台试写和读取校验。校验通过后才能开始批量产线操作。为了进一步防呆可以在配置文件里把MODEL字段设成只读定值并在写入前让工具自动读取设备当前的型号信息比对配置文件里设定的型号不一致就报错拒绝写入。不少成熟方案会这么设计目的就是把型号匹配错误的事情防在前面。6.5 老化测试和批量写入的关系在一些可靠性要求高的项目里主板在写入信息之后还会经历高低温老化测试。老化测试时设备是上电运行状态和批量写入工位一定不要混在一起。老化之后的信息读取校验工位其实是验证老化环境有没有对存储分区造成数据损坏的好时机。我遇到过有的板子在老化过程中因为反复掉电重启出现了极低概率的分区数据异常SN读不出来。如果出货前没有读信息校验这一道这类故障板就会流到客户手里。所以哪怕产线节拍再紧建议至少保留一个“读信息校验”工位把写入链路的最后一环看住。6.6 工具被杀毒软件误杀最后提一个很现实的问题RKDevInfoWriteTool这类量产工具经常会被杀毒软件误报。因为工具要和底层USB驱动打交道行为特征在某些杀毒引擎眼里有点像硬件调试工具就直接给隔离了。对策很简单产线电脑安装完工具链后把工具目录加入杀毒白名单。尽量使用正版的、从原厂或方案公司拿到的工具版本避免从不明渠道下载到被二次打包的版本。每次实施量产项目前先在一台样机上完整走一遍流程确认工具能正常弹窗、写入、校验再上产线。量产工具的稳定压倒一切任何不必要的“自动化更新”“云扫描”功能在产线电脑上都是徒增风险。7. 最后分享一个让产线更稳的小习惯说了这么多其实最想表达的就一句话RKDevInfoWriteTool的难点不在于工具本身怎么操作而在于你有没有一套完整的产线工序设计、校验机制和防呆逻辑。工具只是执行者配置和管理才是真正拉开效率差距的地方。我自己的习惯是每年新项目导入量产时一定会做一份“信息写入工序清单”大概就这几项从固件工程师那里拿到完整的字段定义清单。确认目标分区、字段名、编码方式、长度。在样机上完成单台写入和系统读取校验。把配置文件归档并纳入版本管理。模拟一遍断电、断线、错误SN等异常场景确认返工流程可行。和产测软件联调确认信息读取对得上。这套动作做完再放量基本不会出什么幺蛾子。如果你正在为新项目的量产犯愁不妨照着这个思路把配置文件和工序流程提前理一理会省掉很多现场才暴露出来的麻烦。另外提一个后续可以扩展的方向如果你的产线已经比较成熟下一步可以考虑把RKDevInfoWriteTool的信息写入动作集成到自动化工装里通过PLC控制夹具的压合和USB连接再结合MES系统的工单下发实现真正意义上的全自动烧录和信息写入。到了那个阶段工具仍然扮演核心执行者的角色但决定产线效率的就变成了你的整体自动化和数据流设计能力。
返回列表