3调试Application Project
由于芯片上电后需要从0地址(具体地说是0004h地址处)的中断向量开始运行,因此,调试Application Project时需要下载Bootloader文件,我们在Application Project的Debug Configuration中添加相关部分。
Application Project Debug Configuration Startup选项卡配置
增加对于Bootloader的加载,类型选项设定为Image and Symbols,这样调试状态下可以跟踪Bootloader中代码运行的状态。
同时,将Application Project对应的***.elf → Load type设定为Symbols only,仅下载标号。由于加载了Application Project对应的symbol,因此我们可以调试时检查代码的运行状态。但实际下载到code flash的内容是经过了Python脚本处理,增加了Header,TLV和Trailer等信息的***.bin.signed文件,因此可以通过Bootloader的安全校验。
按下Debug按钮,启动调试,此时可以发现PC停在Bootloader的reset向量处。
调试Application Project
点击Load Ancillary按钮,将Application Project Debug文件夹下的***.bin.signed下载到芯片上,注意选择地址为Primary Slot起始地址0x18000。
将1.0.0版本Image ***.bin.signed文件下载到Primary Slot的起始地址0x18000
在memory窗口检查当前Primary Slot中的内容,可以看到Image版本为1.0.0。
PC Primary Slot中存储了1.0.0版本的Image
点击Resume,可以发现PC指针停在Primary Slot的Application Project Reset向量处,此时PC指针地址0x00018ab8位于Primary Slot地址空间范围(0x18000~0x37FFF)。如下图所示。
之后在任意时刻暂停,通过PC指针的地址空间范围和对应的代码标号可以发现PC已经运行在Application Project中了。
PC指针运行在Primary Slot中
再次点击resume,则可以观察到代码运行在Primary Slot的Application Project中。
4升级并验证
由于升级方式是基于应用层面的实现,因此依赖客户的设计。如果需要展示,则建议参考下方链接Application Note中的内容,对应的示例代码包含了遵循XModem协议利用UART传输Image。
RA6 MCU Advanced Secure Bootloader Design using MCUboot and Code Flash Dualbank Mode
在调试状态下,可以通过将待更新的Image文件下载到Secondary Slot中,重启即可使得升级生效。
在Application Project上稍作修改,比如原始的Project在EK-RA4M3上使三个LED(红绿蓝)一起闪烁,而我们将代码更新为只有一个LED(蓝色)闪烁。同时,将Image Version从1.0.0更改为1.1.0,重新Build Project,确认Debug文件夹下的.bin.signed重新生成了。
现在将1.1.0版本的Image烧录到Secondary Slot中,点击Load Ancillary,选中***.bin.signed,目标地址选择0x48000。
将1.1.0版本Image下载到Secondary Slot中
下载成功后查看Memory中的内容,可以确认Secondary Slot存储了1.1.0版本的Image。
Secondary Slot保存了1.1.0版本的Image
按下Reset按钮,使得Bootloader运行,启动代码升级。
可以看到EK-RA4M3从三颗LED闪烁变为仅有一颗蓝色LED闪烁,表明升级成功。
升级完成后查看Primary Slot和Secondary Slot,发现两个Slot内容已经交换了。Primary Slot中保存了1.1.0版本的Image文件,而Secondary Slot中保存了1.0.0版本的Image文件,如下图所示。
Primary Slot保存了1.1.0版本的Image,Secondary Slot保存了1.0.0版本的Image
全部0条评论
快来发表一下你的评论吧 !