全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 控制/MCU >

通过Boot swap实现瑞萨RL78/F24 MCU固件升级

时间:2025-02-26 09:25

人气:

作者:admin

标签: 闪存  瑞萨  程序  OTA 

导读:本文主要说明如何使用已有的程序更新flash中的固件。使用这种方法代码闪存分为两个区域:执行区域和临时区域。瑞萨flash驱动程序RL78 RFD Type02用于对flash进行重新编程并执行boot swapp...

Boot swap介绍

本文主要说明如何使用已有的程序更新flash中的固件。使用这种方法代码闪存分为两个区域:执行区域和临时区域。瑞萨flash驱动程序RL78 RFD Type02用于对flash进行重新编程并执行boot swapping。本次说明主要以RL78/F24为例展开boot swapping的说明。

RL78/F24介绍

RL78/F24新一代超低功耗汽车微控制器,非常适用于实现未来高可靠性的智能执行器和传感器,是低端车身ECU的理想之选。作为对现有RL78/F1x MCU的创新扩展,RL78/F24可满足未来市场的多种需求。RL78/F24具有更高的CPU性能、耐高温能力和更强的外设功能集,非常适合各种应用。

RL78/F2x系列产品按ISO 26262标准设计而成,支持高达ASIL B的功能安全(FuSa)。可支持高达EVITA-Light或更高的安全标准。AES加密模块可处理高达256位的密钥长度,并支持安全启动和身份验证功能。为了进一步提高BLDC(FOC)电机控制DC/DC控制系统的计算性能,RL78/F2x配备了独特的应用加速器IP,以减轻复杂的三角函数和其它计算处理所带来的负荷。

环境介绍

硬件

如前面所提到的,本文介绍以RL78/F24为主控,对应板子为RL78/F24(R7F124FPJ)Target Board。

1c71f6b8-f32e-11ef-9310-92fbcf53809c.png1ccb25bc-f32e-11ef-9310-92fbcf53809c.png

软件环境

CS+ for CC V8.12.00

Renesas CC-RL Compiler v1.14.00

Smart configurator for RL78 V1.11.0:

Board Support Packages.-v1.62(r_bsp)

Ports v1.5.0

Flash Driver RL78 Type02(Code flash,Extra Area,Common)v1.00

1ce0ab12-f32e-11ef-9310-92fbcf53809c.png

闪存空间分布和升级流程

前面介绍过,boot swap的工程有两个区域,分别是执行区域和临时区域。本次实验所选择的RL78/F24的flash大小为256K,其对应的起始和结束地址如下,如果选择其他大小的MCU,可以根据这个进行修改。

ROM大小 执行区域 临时区域
96KB 0x8000 –0xFFFF 0x10000 –0x17FFF
128KB 0x8000 –0x13FFF 0x14000 –0x1FFFF
192KB 0x8000 –0x1BFFF 0x1C000 –0x2FFFF
256KB 0x8000 –0x23FFF 0x24000 –0x3FFFF
384KB 0x8000 –0x33FFF 0x34000 –0x5FFFF
512KB 0x8000 –0x43FFF 0x44000 –0x7FFFF
768KB 0x8000 –0x63FFF 0x64000 –0xBFFFF

256KB闪存详细分布如下:

1cf9fbc6-f32e-11ef-9310-92fbcf53809c.png

升级流程

擦除Boot cluster1和临时区域。

往Boot cluster1和临时区域写入新的固件。

擦除执行区域。

把临时区域的内容拷贝到执行区域。

执行boot swap命令,交换新的boot区域程序到boot cluster0。

运行新的固件代码。

1d1f5056-f32e-11ef-9310-92fbcf53809c.png1d3f2a48-f32e-11ef-9310-92fbcf53809c.png1d5834ac-f32e-11ef-9310-92fbcf53809c.png

实现步骤

前面讲了整个升级的流程,接下来对具体的实现步骤进行说明。首先是创建一个包含Boot+APP1的原始工程。通过查看板子原理图可以知道,板子上有LED1和LED2可以用于升级成功的指示灯。Boot+APP1运行时,LED1闪烁,升级成功后LED2闪烁,说明新的Boot+APP2正在运行。需要在Smart configurator中添加引脚的配置,如下P66和P67设为out:

1d660712-f32e-11ef-9310-92fbcf53809c.png

升级需要用到UART,添加UART0,并做如下配置:

1d839318-f32e-11ef-9310-92fbcf53809c.png1da1ac4a-f32e-11ef-9310-92fbcf53809c.png

同时需要用到RFD type02,添加如下:

1db8e586-f32e-11ef-9310-92fbcf53809c.png

所有的外设驱动添加好后,需要对section进行修改,Flash section:

1ddb8d84-f32e-11ef-9310-92fbcf53809c.png

RAM section:

1deb88d8-f32e-11ef-9310-92fbcf53809c.png

添加完对应的section后,需要手动把对应的Flash section拷贝到RAM。方法如下,重复红框部分代码,一共拷贝5个section,分别为:RFD_CMN_f,RFD_CF_f,RFD_EX_f,SMP_CMN_f,SMP_CF_f。红色方框为拷贝RFD_CMN_f的示例,其他4个section都需要按照次方法进行拷贝。

1e037bb4-f32e-11ef-9310-92fbcf53809c.png

根据所选MCU改造r_cg_userdefine.h。

1e3ada28-f32e-11ef-9310-92fbcf53809c.png

改造APP,在userApplicationLoop里,可以选择LED1闪烁表示APP1运行,LED2表示升级后APP2运行。

1e631466-f32e-11ef-9310-92fbcf53809c.png

整体代码实现不再赘述,所有代码完成后,编译并烧录到RL78/F24。使用E2-Lite连接板子烧录和调试,串口工具用于传输升级文件:

1ea137c8-f32e-11ef-9310-92fbcf53809c.png

正常运行后,LED1闪烁。

接下来,制作一个新的APP2,用于升级。在userApplicationLoop()里面改变代码,让LED2闪烁。

1ebc56ca-f32e-11ef-9310-92fbcf53809c.png

用以下步骤生成APP2的.bin文件。在Hex Format->Hex file format中选择Binary file,空白区域填充为0xFF。

1ed549b4-f32e-11ef-9310-92fbcf53809c.png1eef2758-f32e-11ef-9310-92fbcf53809c.png

编译后会在相应文件夹下生成一个.bin文件。

断开E2-lite,连接串口工具,具体连接为P61 — TXD, P62 — RXD,EVDD — 3.3V,GND — GND。

运行BootSwapGUI.exe,选择256K,选择对应的COM,打开前面生成的bin文件。

1f04ad76-f32e-11ef-9310-92fbcf53809c.png

点击START,观察进度条,完成后,MCU会自动完成boot swap的动作,最后观察LED2,LED2开始闪烁,说明升级成功。在升级的过程中,LED1一直保持闪烁 ,说明这种方法在升级时不影响上一个版本的运行。

1f2592fc-f32e-11ef-9310-92fbcf53809c.png

总结

Boot swap是Renesas一种特殊的MCU固件升级方式。这种方式的优点是,在接收新的固件过程中,不需要中断当前APP的运行,这一点在很多应用中是至关重要的。另外,在一般的重新编程(升级)过程中,可能出现复位或者断电等外部因素,导致中断向量表、基本函数等数据损坏。任何一项数据损坏都可能会导致MCU无法正常启动。从boot swap的特点分析得知,boot swap可以很好地避免这种情况。因为任何时候都可以保证MCU有一个完整的boot cluster1和app1可以运行。所以另外一个重要的优点是,boot swap可以防止MCU升级失败导致“变砖”。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信