0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RA Overwrite模式在FSP中的支持

瑞萨MCU小百科 来源:瑞萨MCU小百科 2024-06-13 10:52 次阅读

前面介绍了MCUboot的基础知识,您可通过上方链接回顾,本章将着重介绍其中的Overwrite模式,以及在FSP中如何配置、如Flash怎样划分、安全校验的方式等。本文以RA6M4 1M Code Flash产品为例,使用Flat mode(不启用TrustZone)说明Overwrite模式进行升级时的注意事项。

首先回顾一下Overwrite模式升级的流程。

3786f072-27a8-11ef-91d2-92fbcf53809c.png

MCUboot Overwrite模式解

从代码框架来看,整体划分为三部分,Bootloader,Primary Slot(保存了低版本的User Application v1.0)和Secondary Slot(保存了待更新的高版本User Application v2.0)。

初始状态下,芯片中烧录了Bootloader和Primary Slot,代码从Bootloader处启动,跳转至Primary Slot中的User Application v1.0。在User Application v1.0运行过程中,接收来自外部的更高版本Firmware v2.0,并烧写到Secondary Slot中,烧写完成后,执行软件复位Software reset,代码重新从Bootloader开始运行。此时Bootloader判断Secondary Slot中代码的版本(v2.0高于v1.0),检查其完整性等等,校验通过后,将Primary Slot擦除,并将Secondary Slot中的内容拷贝到Primary Slot中。之后跳转至Primary Slot中的新代码v2.0执行。比较升级操作的初始状态和终止状态,发现Primary Slot中运行的代码从低版本的v1.0变为高版本的v2.0。

在e² studio中进行开发时,Bootloader和User Application为相互独立的Project,但位于同一个Workspace中。先Build Bootloader Project,然后Build位于Primary Slot的User Application Project,由于Bootloader规定了对于整个存储空间的划分,同时包含了对User Application Image进行签名/验签所用的密钥,因此Application Project会依据Bootloader build输出的Bootloader Data File代替原有的Linker Script File(链接脚本文件)进行link,并利用Bootloader包含的密钥进行Image映像文件的处理。

1新建Bootloader并配置MCUboot参数

由于Bootloader是整个系统的关键,因此我们第一步创建Bootloader Project并配置一些关键选项如Flash Layout和加密算法等。

对于Bootloader Project,可以在e² studio中新建并命名。在FSP的Stack选项卡下,点击New Stack → Bootloader → MCUboot,即可将该功能添加进来。

379c8ac2-27a8-11ef-91d2-92fbcf53809c.png

FSP中添加MCUboot

添加MCUboot之后,由于它依赖一些底层驱动,如Flash,Crypto等,因此会在初始界面提示错误,按照提示信息逐个修复即可,此处不详细展开。

37b809fa-27a8-11ef-91d2-92fbcf53809c.png

FSP中MCUboot

将所有的错误修正后,配置MCUboot的关键属性。

37c33442-27a8-11ef-91d2-92fbcf53809c.png

FSP中MCUboot General属性

展开Common选项下的General属性,对于几个可配置的关键选项,说明如下:

升级模式Upgrade Mode,可以从Overwrite、Swap和Direct XIP中选择,此次选择Overwrite Only。该选项是决定Bootloader大小的关键性因素,Overwrite模式最小,Swap模式最大。

Validate Primary Image,建议设定为Enabled,除非资源非常紧张,开启这部分功能带来的代码量增加不过几十字节而已。

Downgrade Prevention(Overwrite Only),假如设定为Disabled,则每次Secondary Slot中有新的Image,都会拷贝到Primary Slot中(安全校验通过的前提下)。假如设定为Enabled,则Bootloader会检查Secondary Slot中存储的Image版本,高于Primary Slot中Image版本的情况下才会拷贝。可根据实际需要选择。

37dfdf02-27a8-11ef-91d2-92fbcf53809c.png

FSP中MCUboot Signing and Encryption Options属性

展开Common选项下的Signing and Encryption Options属性,对于几个可配置的关键选项,说明如下:

签名类型Signature Type,规定了对于Application Image进行签名所用的方式,可从None,ECDSA P-256,RSA 2048,RSA 3072四项中任选其一。假如使能签名,则代码量最小的是ECDSA P-256

Encryption Scheme,根据对于Application Image是否加密进行设定。默认是Disabled,假如使能,则可以从ECIES-P256和RSA-OAEP (RSA 2048 only)中任选其一。Encryption Enabled情况下,Bootloader代码量会明显增加

接下来配置Flash Layout

对于Flash Layout来说,由于升级模式已锁定Overwrite,在此基础上决定Bootloader的大小因素就只剩下校验算法的选择了。

由于Bootloader占据从0地址开始的空间,而RA6M4在低地址上的8个block大小均为8KB,因此我们将Bootloader大小设定为64KB,即0x10000。由于高地址上的Block大小为32KB,因此对于1MB code flash的RA6M4来说,可以将剩下的30个(37-8+1)Block等分,Primary Slot和Secondary Slot各占15 Blocks(0x78000字节)。

37f4e2da-27a8-11ef-91d2-92fbcf53809c.png

RA6M4线性模式下Code Flash地址空间

3867e802-27a8-11ef-91d2-92fbcf53809c.png

FSP中MCUboot Flash Layout设置

Bootloader Flash Area Size (Bytes):

设定为0x10000即可

Image 1 Header Size (Bytes):

前面的划分Primary Slot和Secondary Slot包含Header,对于Cortex-M33内核的产品,有中断向量表对齐的要求,因此我们建议将Header size统一设定为0x200,以支持Application的所有中断。

Image 1 Flash Area Size (Bytes):

根据前面的计算结果,填入0x78000 (15个32K block)

由于Scratch Area仅针对Swap模式有效,因此在Overwrite模式下设定为0即可。

至此,对于Bootloader的配置已经完成了。

接下来我们需要在hal_entry.c中增加对函数mcuboot_quick_setup()的调用。在e² studio界面下,Project Explorer中找到Developer Assistance找到Call Quick Setup,鼠标左键点选,保持左键按下的状态,拖动到hal_entry.c文件的hal_entry()函数定义之前。

388006f8-27a8-11ef-91d2-92fbcf53809c.png

利用Developer Assistant向源码中增加mcuboot_quick_setup定义

然后在hal_entry()入口处增加对函数mcuboot_quick_setup的调用。

389e4c62-27a8-11ef-91d2-92fbcf53809c.png

在hal_entry()入口处增加调用mcuboot_quick_setup

Build Project可以顺利完成,提示“0 errors, 0 warnings”。在Debug文件夹下确认包含同名的***.bld文件,用文本编辑器打开,检查内容。

38b2f5ae-27a8-11ef-91d2-92fbcf53809c.png

Bootloader Project Build生成的.bld文件

.bld文件是XML格式的,主要包含两部分:

第一部分是symbol,主要包含Bootloader对Flash Layout的设定,FLASH_IMAGE_START值为0x00010200,即位于Primary Slot的Application Project实际Link(链接)地址。FLASH_IMAGE_LENGTH值为0x00077E00,即Primary Slot大小(0x78000)减掉Header Size(0x200)。

第二部分是对Application Image进行签名所用到的Python命令,对于该命令来说,输入是Application Project Build生成的原始Binary(二进制)文件,输出是同名的签名后的文件,后缀是.bin.signed。同时传入的参数还有文件版本,签名所用的密钥等。由于RA6M4搭载了支持TrustZone的Cortex-M33内核,因此文件的结构包含了对TrustZone的支持。对于不启用TrustZone的应用场景,我们仅需关注Python命令的第一部分。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    452

    文章

    50117

    浏览量

    420318
  • FlaSh
    +关注

    关注

    10

    文章

    1613

    浏览量

    147628
  • FSP
    FSP
    +关注

    关注

    0

    文章

    34

    浏览量

    7098

原文标题:MCUboot系列(2-1)RA Overwrite模式在FSP中的支持

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RA系列使用FSP配置外设驱动相关资料介绍

    1、RA系列使用 FSP 配置外设驱动 MDK 添加用于启动FSP的自定义命令打开 MDK,选择 “Tools -> Custom
    发表于 07-14 10:53

    【瑞萨RA4系列开发板体验】基于Renesas FSP配置USART

    ● Smart card interface● Manchester interface● Extended Serial interfacekeil工程,打开FSP配置:之后跳出FSP
    发表于 12-08 21:08

    基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建

    、打开链接下载 FSP,请确认下载的 3.5.0 版本,从网盘下载可忽略此下载步骤。目前 RT-Thread CPK-RA6M4 的 BSP 支持的版本是 3.5.0。可以
    发表于 01-10 14:41

    使用RA2E1 MCU和FSP实现超低设计

      RA2E1 MCU 组评估套件 FPB-RA2E1实施各种连接器,允许访问 RA2E1 MCU、板载 E2 仿真器、用户开关、LED 上的所有引脚,以启动 RA2E1 MCU 并使
    的头像 发表于 04-25 10:10 2014次阅读
    使用<b class='flag-5'>RA</b>2E1 MCU和<b class='flag-5'>FSP</b>实现超低设计

    【视频教程】瑞萨RA单片机FSP开发(3)FSP架构-解释Blinky架构[上]

    干货分享 前篇回顾 【视频教程】瑞萨RA单片机FSP开发(1)环境搭建(带RASC) 【视频教程】瑞萨RA单片机FSP开发(2)快速上手DMEO 本次课程通过创建Blinky案例来解读
    的头像 发表于 12-06 12:15 833次阅读

    使用瑞萨e² studio FSP基于RA2E1定时器配置PWM输出

    瑞萨电子e² studio FSP 瑞萨电子灵活配置软件包(FSP)是一款增强型软件包,旨在为使用瑞萨电子RA系列ARM微控制器的嵌入式系统设计提供简单易用且可扩展的高质量软件。全新
    的头像 发表于 03-10 15:35 1262次阅读

    RA MCU CANFDFSP的配置详解

    瑞萨RA系列MCU产品,目前RA4E2、RA4T1、RA6E2、
    的头像 发表于 10-20 14:46 1215次阅读
    <b class='flag-5'>RA</b> MCU CANFD<b class='flag-5'>在</b><b class='flag-5'>FSP</b><b class='flag-5'>中</b>的配置详解

    使用瑞萨e² studio FSP基于RA2E1定时器配置PWM输出

    使用瑞萨e² studio FSP基于RA2E1定时器配置PWM输出
    的头像 发表于 08-01 00:13 630次阅读
    使用瑞萨e² studio <b class='flag-5'>FSP</b>基于<b class='flag-5'>RA</b>2E1定时器配置PWM输出

    使用FSP配置RA的CAN模块(上)

    使用FSP配置RA的CAN模块
    的头像 发表于 08-05 08:08 534次阅读
    使用<b class='flag-5'>FSP</b>配置<b class='flag-5'>RA</b>的CAN模块(上)

    使用FSP配置RA的CAN模块(下)

    使用FSP配置RA的CAN模块
    的头像 发表于 08-05 08:08 410次阅读
    使用<b class='flag-5'>FSP</b>配置<b class='flag-5'>RA</b>的CAN模块(下)

    介绍MCUboot支持的四种升级模式(2)

    介绍MCUboot支持的四种升级模式,分别是Overwrite、Swap、Direct XIP和加载到RAM执行。由于FSP
    的头像 发表于 06-13 10:56 713次阅读
    介绍MCUboot<b class='flag-5'>支持</b>的四种升级<b class='flag-5'>模式</b>(2)

    MCUboot Swap模式升级的流程和注意事项

    前面介绍了MCUboot的基础知识(请查看上方“简介以及RA FSP上的支持”文章),上次介绍了Overwrite
    的头像 发表于 06-13 16:01 627次阅读
    MCUboot Swap<b class='flag-5'>模式</b>升级的流程和注意事项

    RA MCU CANFDFSP的配置详解

    RA MCU CANFDFSP的配置详解
    的头像 发表于 06-19 08:06 406次阅读
    <b class='flag-5'>RA</b> MCU CANFD<b class='flag-5'>在</b><b class='flag-5'>FSP</b><b class='flag-5'>中</b>的配置详解

    RA Swap模式FSP支持(1)

    接下来我们需要在hal_entry.c增加对函数mcuboot_quick_setup()的调用。e2 studio界面下,Project Explorer中找到Developer
    的头像 发表于 08-22 10:27 366次阅读
    <b class='flag-5'>RA</b> Swap<b class='flag-5'>模式</b><b class='flag-5'>在</b><b class='flag-5'>FSP</b><b class='flag-5'>中</b>的<b class='flag-5'>支持</b>(1)

    RA Swap模式FSP支持(2)

    由于芯片上电后需要从0地址(具体地说是0004h地址处)的中断向量开始运行,因此,调试Application Project时需要下载Bootloader文件,我们Application Project的Debug Configuration添加相关部分。
    的头像 发表于 08-22 10:34 431次阅读
    <b class='flag-5'>RA</b> Swap<b class='flag-5'>模式</b><b class='flag-5'>在</b><b class='flag-5'>FSP</b><b class='flag-5'>中</b>的<b class='flag-5'>支持</b>(2)