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命令的第一部分。

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

    关注

    460

    文章

    52616

    浏览量

    442712
  • FlaSh
    +关注

    关注

    10

    文章

    1683

    浏览量

    152198
  • FSP
    FSP
    +关注

    关注

    0

    文章

    45

    浏览量

    7460

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA-Eco-RA4M2开发板评测】RA-Eco-RA4M2 移植FreeRTOS

    基本参数配置 然后就是选择安全策略,尽管RA4M2支持 TrustZone,但这里暂时不选。 Figure 2?4 选择是否支持 TrustZone 接下来选择RTOS的支持
    发表于 05-03 23:24

    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

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

      RA2E1 MCU 组评估套件 FPB-RA2E1实施各种连接器,允许访问 RA2E1 MCU、板载 E2 仿真器、用户开关、LED 上的所有引脚,以启动 RA2E1 MCU 并使
    的头像 发表于 04-25 10:10 ?2459次阅读
    使用<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 ?1315次阅读

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

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

    RA MCU CANFDFSP的配置详解

    瑞萨RA系列MCU产品,目前RA4E2、RA4T1、RA6E2、
    的头像 发表于 10-20 14:46 ?2148次阅读
    <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 ?1263次阅读
    使用瑞萨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 ?969次阅读
    使用<b class='flag-5'>FSP</b>配置<b class='flag-5'>RA</b>的CAN模块(上)

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

    使用FSP配置RA的CAN模块
    的头像 发表于 08-05 08:08 ?852次阅读
    使用<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 ?2053次阅读
    介绍MCUboot<b class='flag-5'>支持</b>的四种升级<b class='flag-5'>模式</b>(2)

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

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

    RA MCU CANFDFSP的配置详解

    RA MCU CANFDFSP的配置详解
    的头像 发表于 06-19 08:06 ?1074次阅读
    <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 ?966次阅读
    <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 ?1024次阅读
    <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)