2. R-Car硬件验证环境搭建
R-Car系统级验证的第一步不是写测试用例,而是把一块能稳定复现问题的硬件环境搭起来。环境不稳,后续所有故障定位都会被噪声干扰。本节围绕开发板选型、供电与时钟、调试通道、串口网络以及版本管理,给出一套可落地的搭建方法。
开发板选型:先看验证目标,再看板卡规格
R-Car系列覆盖从座舱到ADAS的多个型号,选板时先明确验证对象。若验证目标是SoC内部IP(如GPU、VPU、CAN-FD控制器),应优先选择带完整外设引出、支持JTAG/TRACE的评估板,例如R-Car H3/M3的Salvator-X或Starter Kit;若验证目标是整机功能与启动链路,则需关注板载DDR容量、eMMC/UFS、以太网PHY和显示输出是否与目标产品一致。
选型时重点核对四项:一是SoC型号与硅版本(如H3 ES3.0与ES2.0的寄存器差异),二是调试接口是否同时引出JTAG与TRACE(如CoreSight ETM/AXI-AP),三是电源域是否可独立测量与限流,四是启动模式跳线是否可切换(QSPI、eMMC、SCIF下载)。建议在采购前向FAE确认板卡原理图与SoC数据手册的引脚复用表一致,避免后期因引脚冲突返工。
电源与时钟树:先量后接,分域验证
R-Car通常需要多路供电:核心电压(如0.8V/1.0V)、DDR电压(1.1V/1.35V)、IO电压(1.8V/3.3V)以及模拟电源。上电顺序错误可能导致SoC闩锁或启动失败。搭建时先用可编程电源按数据手册规定的顺序逐路上电,例如先1.8V IO,再1.1V DDR,最后0.8V核心,每路之间延时5~10ms,并用示波器观察上电斜率是否满足要求。
时钟树方面,R-Car依赖外部晶振(如16.66MHz或24MHz)经内部PLL倍频出CPU、DDR、外设时钟。验证时应在晶振输出端和PLL锁定指示引脚(如CLKOUT)上测量:晶振起振时间通常小于10ms,PLL锁定后CLKOUT应输出稳定频率。若系统无法启动,先确认晶振是否起振、PLL是否锁定,再排查复位信号释放时序。
调试接口:JTAG与TRACE的分工
JTAG用于边界扫描、寄存器读写和CPU停止/单步,是定位启动卡死、DDR初始化失败的首选手段。连接时需确认TCK频率(通常1~10MHz,长线缆需降频)、TMS/TDI/TDO上拉电阻以及nTRST复位信号。若JTAG无法识别SoC,先检查VTref参考电压是否与IO域一致,再确认SoC是否已退出复位。
TRACE(如ETM指令跟踪、STM系统跟踪)用于观察程序执行流和总线访问,适合分析偶发死锁、中断延迟和性能瓶颈。TRACE需要专用高速接口(如HSSTP或并行Trace Port),布线时注意差分对等长和阻抗匹配。实际搭建中,建议先用JTAG确认SoC可停可跑,再接入TRACE抓取启动阶段的指令流,两者配合能快速区分“没跑起来”和“跑飞了”。
串口与网络:启动日志与文件传输
SCIF串口是R-Car最基础的观测通道。典型配置为115200-8N1,无流控。上电后若串口无输出,先确认SoC启动模式跳线是否正确、串口线TX/RX是否交叉、波特率是否匹配。正常启动时,U-Boot会打印DRAM容量、启动介质和加载地址,这些信息是判断启动链路是否完整的第一手依据。
网络用于TFTP加载内核、NFS挂载根文件系统以及后续自动化测试。配置时确保开发板与主机在同一网段,例如主机192.168.1.100/24,开发板192.168.1.50/24。在U-Boot中设置:
setenv ipaddr 192.168.1.50
setenv serverip 192.168.1.100
setenv gatewayip 192.168.1.1
setenv bootcmd 'tftp 0x48000000 Image; tftp 0x49000000 r8a7795-salvator-x.dtb; booti 0x48000000 - 0x49000000'
saveenv
若TFTP超时,先用ping确认链路,再检查防火墙和tftp服务根目录权限。NFS挂载失败常见原因是版本不匹配,可在内核启动参数中显式指定nfsvers=3。
环境自检与版本管理
环境搭建完成后,按以下顺序自检:电源各路电压与纹波、晶振起振与PLL锁定、JTAG识别IDCODE、串口打印U-Boot版本、网络ping通、TFTP加载成功、内核启动到登录提示符。任一步失败即停止后续步骤,避免误判。
版本管理同样关键。建议记录:SoC型号与硅版本、板卡版本、U-Boot/内核/根文件系统版本、JTAG工具版本、电源与时钟配置参数。可用一张环境记录表固定字段,例如:
| 项目 | 示例值 | 记录方式 |
|---|---|---|
| SoC型号/硅版本 | R-Car H3 ES3.0 | 芯片丝印+寄存器读取 |
| 板卡版本 | Salvator-X Rev.B | 板卡丝印 |
| U-Boot版本 | 2020.10 | 串口启动日志 |
| 内核版本 | 5.10.y | uname -a |
| JTAG工具 | Lauterbach TRACE32 | 版本号+脚本 |
| 电源配置 | 1.8V/1.1V/0.8V | 电源面板截图 |