瑞萨 RH850/F1KM-S4 是 RH850/F1x 系列中的一组单芯片微控制器,专为汽车车身电气应用而设计,其具有功耗低,内部闪存范围 3MB-4MB,封装 100-272 引脚不等。此外,所有产品都增加了 CAN FD 和以太网接口以及硬件安全模块,CPU 工作频率也提高到 240MHz。接下来将通过某汽车客户在实际应用中遇到的网关软件问题案例,为大家介绍瑞萨 RH850 启动时间加快解决方案。 问题描述 客户反馈 F1KM-S4 (R7F701649) 软件启动时间在 RAM 清零时,占用时间超长,从 MCU 上电到软件进入 main 函数约 65ms;终端客户设备启动后需在 200ms 以内加入到 CAN 网络中;客户尝试在 startup 启动文件中去除 RAM 清零动作,但设备在断开调试器后设备无法正常工作。下图为客户实测 MCU 启动波形:
问题排查及解决方案
一、利用客户代码使用 CS+ 调试实测,发现 MCU 由 RESET 到 main 函数时间为 68ms,基本与客户示波器波形时间一致。
二、分析 startup.850 文件,MCU 启动基本有如下图所示 7 个步骤,同时在启动步骤中也没有发现任何异常。
三、单步调试定位耗时代码,确定耗时在 RAM 清零部分。
四、查阅芯片手册对于 RAM 描述,发现 RAM 在读写是与 CPU 时钟有密切关系,如下图所示:
五、依据芯片手册描述,分析 startup 启动文件。从而在步骤 6 代码解析中发现跳转硬件初始化描述,并且检查在 __lowinit 函数中只对休眠保留 RAM 是否进行清零操作,并没有实际硬件初始化动作。由于 RAM 读写是与 CPU 时钟有关,且在启动步骤 1 到 6 并没有进行时钟初始化动作,故 CPU 时钟使用内部低速默认时钟,从而影响到 RAM 读写时间。
六、增加 __lowinit 初始化 CPU 时钟相关代码。
七、修改验证。修改后 RAM 清零时间约为 5.4ms,比原来快 10 倍左右。
总结 根据上述的客户案例问题解析,可以得出以下几点经验:
1. 根据手册 RAM 说明分析,RAM 读写时间是根据 CPU 时钟确定的;
2. RH850 带有 RAM ECC 功能,客户在做功能安全相关时需要进行 RAM ECC 检测,stratup 时必须将 RAM 清零防止 ECC 错误发生,故启动时需要将 RAM 清零不能去掉此部份代码;
3. 软件在 startup 启动阶段未加入 CPU 时钟初始化动作,导致 RAM 清零耗时过长;
4. 在 startup 阶段加入 CPU 时钟初始化,也符合 startup 中 lowinit 规则,此方式修改不影响软件其他功能。
本文主要介绍了瑞萨 RH850 启动时间加快解决方案,另外 RH850 U2A 系列 MCU,也可以参考此方案进行优化。
全部0条评论
快来发表一下你的评论吧 !