项目实战:基于瑞萨RA6M5构建多节点OTA升级-创建工程MCUBoot<二>

项目系统架构搭好了,咱们就开始动手实践吧!

实现固件升级需要用到UBoot引导加载程序,因此,首先我们先创建一个项目实现UBoot功能。

目录

一、新建项目配置

二、新增MCUBoot

三、配置MCUBoot属性

四、配置项目属性

五、编写启动函数

六、编译工程

七、编译问题解决

八、工程源码


一、新建项目配置

项目在e2 studio创建,创建过程不再详述啦!FSP版本不必纠结,基本上大同小异变化不是太大,推荐使用近期发行的版本。项目配置信息如下:

二、新增MCUBoot

添加模块:

三、配置MCUBoot属性

Downgrade Prevention(Overwrite Only):设置为Disabled,关闭是为了日后异常可以灵活处理,回退版本。

Signing and Encryption Options选项下的内容没有启用,固件需要加密打包的,就没有必要使用签名加密了。

配置g_flash0属性:

关闭掉Data Flash Programming Enable可以减少固件尺寸,在项目中也用不到data flash。

配置完成,点击生成项目内容:

四、配置项目属性

配置完成后,点击应用关闭。

五、编写启动函数

在hal_entry.c中编写函数mcuboot_quick_setup

cpp 复制代码
void mcuboot_quick_setup()
{
#ifdef MCUBOOT_USE_MBED_TLS

    /* Initialize mbedtls. */
    mbedtls_platform_context ctx = {0};
    assert(0 == mbedtls_platform_setup(&ctx));
#elif (defined(MCUBOOT_USE_TINYCRYPT) && defined(RM_MCUBOOT_PORT_USE_TINYCRYPT_ACCELERATION))

    /* Initialize TinyCrypt port. */
    assert(FSP_SUCCESS == RM_TINCYRYPT_PORT_Init());
#elif (defined(MCUBOOT_USE_USER_DEFINED_CRYPTO_STACK))

/* Initialize Custom Crypto (Protected Mode) driver. */
    assert(FSP_SUCCESS == R_SCE_Open(&sce_ctrl, &sce_cfg));
#endif

    /* (Optional, not required if --pad is used during signing) To check for updates, call boot_set_pending. */
    bool update = 0;
    if (update)
    {
        boot_set_pending(0);
    }

    /* Verify the boot image and get its location. */
    struct boot_rsp rsp;
    assert(0 == boot_go(&rsp));

    /* Enter the application. */
    RM_MCUBOOT_PORT_BootApp(&rsp);
}
/*******************************************************************************************************************//**
 * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
 * is called by main() when no RTOS is used.
 **********************************************************************************************************************/
void hal_entry(void)
{
    /* TODO: add your own code here */
    mcuboot_quick_setup();
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

六、编译工程

编译输出结果:

七、编译问题解决

使用FSP5.1编译会出现找不到头文件rm_tinycrypt_port_cfg.h,用来做加密配置的,咱也没用到,注释掉就行啦!

八、工程源码

RA6M5_MCUBoot工程源代码https://download.csdn.net/download/xtudj/90492983

相关推荐
方芯半导体13 分钟前
EtherCAT “通信 + 控制“ 的全国产化控制方案,ESC芯片(FCE1323)与国产MCU芯片功能板解析
xml·网络·单片机·嵌入式硬件·网络协议·机器人·自动化
三佛科技-1341638421236 分钟前
LP3716NCK 隔离型12V1A 12W茶炉板电源方案典型应用电路与设计关键
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
梵刹古音1 小时前
【C语言】 字符型变量
c语言·开发语言·嵌入式
羽获飞2 小时前
从零开始学嵌入式之STM32——5.GPIO外设
stm32·单片机·嵌入式硬件
望眼欲穿的程序猿3 小时前
串口通信---串口2定时器2
stm32·单片机·嵌入式硬件
望眼欲穿的程序猿3 小时前
STC/Ai8051U 中断列表
单片机·嵌入式硬件·stc
2401_859049083 小时前
lvgl移植到Linux踩坑
linux·运维·arm开发·elasticsearch·嵌入式·ubantu
国科安芯3 小时前
航空级PMSM驱动系统中MCU的故障诊断与容错控制策略研究
单片机·嵌入式硬件·安全·架构·制造·安全性测试
帅次4 小时前
系统分析师-信息物理系统分析与设计
stm32·单片机·嵌入式硬件·mcu·物联网·iot·rtdbs
澜莲Alice4 小时前
STM32 MPLAB X IDE 软件安装-玩转单片机-英文版沉浸式安装
stm32·单片机·嵌入式硬件