前言

对于MCU开发来说,bootloader是不可或缺的一环,尤其是对高性能MCU,在实际应用中经常需要进行固件更新。对RA家族mcu来说,MCUBOOT就是它们的bootloader,是一个已经被集成到FSP中的驱动,使用起来非常容易上手,MCUBOOT有多种固件更新方式,这次就以比较常用的“swap”模式为例,来实际演示下如何开发RA MCU的bootloader。

开发准备

本次使用到的开发板是瑞萨官方的EK-RA6M4,大伙如果是从事嵌入式开发的工程师或者在校大学生可以尝试去瑞萨官网申请开发板,还是有机会能申请到的,不过如果没有申请到也没有关系,野火也出了挺多瑞萨的板子,使用野火的板子也可以(官方的板子上有on-board jlink,可以直接连电脑debug,野火的板子好像还需要额外的jlink仿真器)

软件方面使用的是E2studio 2024-10版本配合FSP4.5.0(可以使用更高版本,可以兼容),软件都是免费的,可以上官网直接下载,没有任何限制,使用的编译器也是GCC,免费使用。

根据图中选择自己的PC系统既可。

具体使用到的硬件和软件如下:

硬件
  • 1 块 Renesas EK-RA6M4 开发板
  • 1 根 micro-B USB 数据线
软件
  • Renesas FSP v4.5.0 平台(包含以下组件):
    • e2 studio 2023-04
    • FSP v4.5.0
    • GCC ARM Embedded Toolchain 版本:10.3.1.20210824
  • Python v3.10.x(需安装 MCUboot 所需依赖)
  • 终端软件 “Tera Term”

项目简介

在本实验中,我们将创建 bootloader 和用户应用程序两个项目,以演示 MCUboot 的启动功能。下图展示了 Swap 升级模式下的启动流程。

初始状态下,MCU 闪存中已通过调试接口烧录了两个镜像(bootloader 和初始用户应用程序)。复位后,bootloader 启动,并从主槽(primary slot)加载初始用户应用程序。此时,用于下载新固件的通信端口打开。我们可以通过 USB 接口,使用 XMODEM 协议下载新固件。之后,可通过 Tera Term 控制应用程序,执行固件下载、查看闪存信息等操作。

操作步骤

1. 创建 Bootloader 项目

打开e2studio并创建一个新的RA工程,选择对应型号后进入FSP页面:

在FSP的stack页面,添加MCUBOOT stack:

对MCUBOOT进行配置,这里选择swap模式并使能固件验证:

选择固件签名方式:

设定bootloader和固件的flash地址和大小:

(参考下图)

之后选择加密模式,这里选择MbedTLS:

添加flash模块,并对其进行配置:

之后添加密钥:

最后记得返回FSP的BSP页面,设置stack和heap的大小:

都完成后点击FSP页面右上角的生成代码即可。

2. 创建初始用户应用程序项目

打开hal_entry.c,将FSP生成的MCUBOOT初始化代码拖入即可:

点击developer assisatance,然后将call quick setup拖拽到代码中:

4

之后在主函数中添加MCUBOOT启动代码:

void hal_entry(void)
{

/* TODO: add your own code here */

mcuboot_quick_setup();
......
之后右键工程,点击属性,对C++编译进行设置:
设置完成后点击编译,至此BOOTLOADER工程已经新建完毕。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐