瑞萨单片机在线升级操作说明
说明:共有两个程序代码,上电复位运行 Bootload 程序,然后检查
EEPROM 里面是否置位,如果置位,则需要进行 APP 代码更新,
否则运行已有的 APP 代码。
一、使用瑞萨单片机 R5F2L357C 为例
该单片机 ROM 资源如下,
1、块 A-D 为数据闪存,未用。
2、默认 ROM 空间起始地址为 0x4000h
3、中断向量分为固定向量和可变向量,默认地址分别为:
固定向量 Fvector:0xFFD8-0xFFFF
可变向量 vector:0xFED8(至偏移 256 字节处)
工程文件中可查:
在 fvector.c 文件中
#pragma sectaddress
fvector,ROMDATA 0xFFD8
我们要修改的两个程序代码空间分配为
1、APP 用户程序代码编译出来有 35.4K 的空间 ,存放在块 2、块 3 和块 4,共 40K 的空间,
地址为 04000h-0DFFFh
2、Bootload 程序代码编译出来有 5.2K 的空间,存放在块 0 和块 1,共 8K 的空间,地址为
0E000h-0FFFFh。
二、Bootload 程序代码制作
1、修改 ROM 空间的起始地址,默认为 0x4000,改为 0xE000,如下所示。
编译完成后,可直接烧录该文件。
三、APP 用户代码制作(I_Collector_Update)
1、修改 APP 用户代码的固定向量和可变向量地址:
将 vector 地址由 0xFED8 改为 0x0DED8
在 fvector.c 文件中
#pragma sectaddress
#pragma sectaddress
重新编译下,可以看出,地址不超出 0x0e000,在块 2 范围内
fvector,ROMDATA 0xffd8 改为
fvector,ROMDATA 0xdfd8
将编译的 mot 文件用 FDT4.09 工具打开另存为.bin 文件,
用 UltraEdit 打开.bin 文件,将 0x4000-0xe000 地址以外的数据删除,保存。此文件为在线烧
录更新的文件。
这个文件可以用电脑串口发给单片机,单片机接收后 IAP,自动运行。
四、系统运行
1、上电后,系统从 bootload 程序地址为 0FFFCh 上电复位,检测 EEPROM 存储器是否置位,如置
位,则需要更新 APP 应用程序,否则从 APP 应用程序的复位地址 0DFFC 处执行。
2、上位机和单片机通信使用了 X-mode 协议。每个数据帧为 128 个字节。