RA4M3通过USB实现固件升级

描述

 

 

     

RA4M3通过USB实现固件升级

     

 

01

 

固件更新应用案例

(1)修复程序错误

(2)功能升级

 

02

 

首先必须规划好Bootloader和Application的空间分配。如下图所示,案例使用R7FA4M3AF3CFB,有1M的ROM。Bootloader从0x000000开始存储,结束地址为0x1FFFF,所占空间大小为0x20000;Application从0x20000开始存储,结束地址为0x000FFFFF,所占空间大小为0xE0000。

 

瑞萨

 

03

 

创建一个Bootloader工程,添加USB_HMSC、Flash、RTC和CRC等外设。其中USB添加主机大容量存储类(HMSC)驱动程序,它实现了USB HMSC接口,可从USB大容量存储设备中读取、写入和擦除数据。

 

瑞萨

 

04

 

使用RTC设置系统时间。

 

瑞萨

 

05

 

初始化flash驱动,然后在data flash中读取设备设置的log。

 

瑞萨

 

06

 

初始化USB驱动,等待USB设备插入,如果检测到有USB设备插入,将会根据文件"0:Put Image Here/update.txt"中的内容,找到相应的***.srec文件,并打开文件读写数据(将文件内容解析后烧写到Application对应的地址空间),读写完成后将文件名改为"0:Put Image Here/loaded.txt",表示已完成数据读写。

 

瑞萨

 

07

 

根据信息类型擦除data flash中的数据,擦除成功后写入新的设备设置参数。

 

瑞萨

 

08

 

在属性→设置中输出srec格式文件作为Bootloader烧录文件。

 

瑞萨

 

09

 

将Bootloader烧录到EK-RA4M3开发板上。首先,利用J-Flash Lite将RA4M3整片擦除,然后将ra4m3_hmsc_noRTOS.srec烧写到芯片中,由于此时app部分内容为空,红色LED闪烁(按下reset大概10秒后,红色LED闪烁)。

 

瑞萨

 

10

 

打开e2 studio新建Application工程,用来验证可以通过Bootloader成功升级Application,若成功升级,三颗LED灯会不停地闪烁。

 

瑞萨

 

11

 

打开memory_regions.ld文件,FLASH_LENGTH = 0x100000;更新为FLASH_LENGTH = 0xE0000;

 

由于Bootloader占用了0x20000大小,因此对于EK-RA4M3来说,仅剩下0x100000-0x20000=0xE0000大小可供Application使用。

 

瑞萨

 

12

 

Application工程生成srec格式文件,下图红框位置勾选 Section: -j .text & -j .data,使得application project仅生成code flash对应的内容。

 

瑞萨

 

13

 

准备一个U盘(FAT32格式),在里面建一个文件夹,命名为“Put Image Here”,将RA4M3_BLINKY.srec文件添加进去

 

瑞萨

 

14

 

update.txt文件里面添加RA4M3_BLINKY.srec

 

瑞萨

 

15

 

将U盘插入,开发板上电,当前运行的代码是Bootloader,由于此时尚未执行Application升级,因此LED2常亮,按下复位键,使得Bootloader重新运行,执行Application代码升级,可以看到LED灯按照RA4M3_BLINKY程序闪烁。将U盘插回电脑查看“Put Image Here”文件夹,可以看到update.txt变为loaded.txt,程序升级成功。

 

瑞萨

 

更多内容请识别下方二维码查看:

瑞萨

 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_77554879 2023-09-22
0 回复 举报
可以提供给源码学习吗 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分