3. RH850启动流程与刷写模式
RH850上电后的行为并不是“直接运行用户程序”,而是由芯片内部一组固定硬件逻辑按顺序完成取向量、判模式、映射存储区,最后才把控制权交给某段代码。生产刷写能否成功,取决于我们是否理解并主动控制了这条启动链上的关键节点。本节围绕复位向量、启动模式选择、Boot Mode与User Mode切换、Flash固件与用户程序的关系,以及生产刷写的入口条件与硬件配置要求展开。
复位向量与启动的第一条指令
RH850属于瑞萨G3M/G3K等系列时,复位释放后CPU首先从固定地址读取复位向量。以RH850/F1x、G3M等常见车规器件为例,复位向量通常位于代码Flash起始区域(如0x0000_0000附近)或专用向量表区,向量内容是一个32位地址,指向复位处理程序(Reset Handler)。CPU取出该地址后跳转执行,这就是整个系统的第一条有效指令。
这里有一个对生产刷写极其重要的推论:只要复位向量指向的代码区被擦除或内容非法,芯片上电后就会取到无效地址,表现为跑飞、反复复位或停在异常状态。因此刷写过程中若中途断电,芯片往往处于“半擦除”状态,再次上电无法正常进入任何程序,只能依赖Boot Mode等硬件强制入口来恢复。
复位处理程序通常由启动代码(startup)承担,它完成栈指针初始化、时钟与RAM初始化、数据段搬运(.data从Flash搬到RAM)、.bss清零,然后跳转到main。生产刷写工具并不关心这些细节,但必须保证刷入的镜像包含合法的复位向量和完整的启动代码,否则即使写入成功也无法运行。
启动模式选择:Boot Mode与User Mode
RH850通过复位释放瞬间对特定引脚(模式引脚,如MD0/MD1或FLMD0等,具体名称随型号不同)的电平采样来决定启动模式。采样发生在复位释放的极短窗口内,之后引脚状态不再影响本次启动。两种主要模式的行为差异如下:
- User Mode(用户模式):从用户Flash的复位向量启动,执行正常应用程序。这是量产成品的默认工作模式。
- Boot Mode(引导模式):芯片不执行用户程序,而是运行固化在芯片内的引导程序(Boot ROM / Firmware),通过指定通信接口(如CSI、UART、CAN或LIN)等待上位机下发刷写命令,实现Flash的擦除与写入。
Boot Mode的本质是“芯片自己提供的一个刷写服务端”。它不依赖用户Flash中任何有效代码,因此即使Flash被完全擦除,只要模式引脚配置正确,芯片仍能被重新刷写。这正是生产刷写和故障恢复的最后一道保障。
Flash固件与用户程序的关系
在RH850的存储布局中,Flash通常划分为若干块(Block),可粗略分为:
- 引导/固件区:存放Boot ROM相关配置、选项字节(Option Bytes)、以及部分型号的固件刷写程序(Flash Firmware)。
- 用户程序区:存放应用程序代码、常量、复位向量表。
- 数据/标定区:存放标定参数、EEPROM模拟数据等,生产刷写时可能需要保留。
需要区分两个容易混淆的概念:一是芯片内固化的Boot ROM,它不可擦写,负责Boot Mode下的通信与刷写协议;二是可选的“Flash固件”(有时称Flashloader或刷写固件),它可能被烧录到用户Flash的特定区域,由Boot ROM加载后执行,用于支持更复杂的刷写算法(如校验、加密、多区写入)。生产刷写时,上位机工具通常先让芯片进入Boot Mode,再由Boot ROM或Flashloader完成对用户程序区的擦写。
因此,用户程序与刷写固件在物理上共享同一片Flash,但逻辑上属于不同层次。刷写操作必须明确目标地址范围,避免误擦引导配置区或标定区,否则可能导致芯片无法再次进入Boot Mode。
生产刷写的入口条件与硬件配置要求
要让一块RH850在产线上稳定进入Boot Mode并被刷写,需要同时满足以下几类条件,缺一不可:
第一,模式引脚的可控性。产线工装必须能够在上电前将模式引脚拉至Boot Mode所需电平,并在复位释放后保持足够时间。常见做法是用工装上的跳线、继电器或专用编程器输出控制这些引脚。若引脚同时被用户电路驱动,需确认不会发生电平冲突。
第二,复位信号的时序配合。推荐顺序是:先建立模式引脚电平 → 再释放复位 → 等待采样窗口结束 → 启动Boot ROM通信。若复位释放过早或模式引脚建立过晚,芯片会误入User Mode,此时若用户Flash为空,将无法建立刷写连接。
第三,通信接口的物理连接。Boot Mode下使用的接口(如CSI、UART、CAN)必须与上位机工具匹配,包括波特率、时钟极性、收发引脚映射。部分型号的Boot Mode接口引脚与用户功能复用,需确认工装连接的是Boot Mode默认引脚。
第四,供电与时钟。Boot ROM运行需要稳定的电源和基本时钟源(通常为内部振荡器)。若外部晶振未起振,Boot Mode仍可工作,但通信速率可能受限。生产环境应保证供电电压在芯片规定范围内,避免欠压导致刷写中断。
第五,目标地址范围与保护策略。刷写工具必须明确擦除和写入的地址区间。建议在刷写算法中显式跳过引导/配置区和标定区,或先读取并备份这些区域,刷写完成后再恢复。对于支持选项字节(Option Bytes)的型号,还需注意刷写后选项字节是否被意外修改,导致下次上电模式改变。
从启动链看刷写流程的对应关系
把上述内容串起来,一次典型的生产刷写流程与启动链的对应关系是:工装控制模式引脚进入Boot Mode → 释放复位 → Boot ROM采样并进入刷写服务 → 上位机通过通信接口发送擦除/写入/校验命令 → 刷写完成后工装切换模式引脚回User Mode → 再次复位 → 芯片从用户Flash复位向量启动,运行新程序。整个过程中,模式引脚和复位时序是入口,Flash地址范围是边界,通信接口是通道,校验与回读是确认手段。理解这条链,才能在产线出现“连不上”“刷完不跑”“刷完变砖”等问题时快速定位到具体环节。
实际产线中,建议在刷写工位增加一次“刷写后回读校验”,即由上位机读回用户程序区的关键地址(如复位向量、校验和、版本号),与源文件比对。若校验失败,立即报警并阻止流入下一工位。对于支持CRC或签名校验的型号,可进一步利用芯片内部校验机制,减少对回读带宽的依赖。