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

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

3天内不再提示

OTA的swap Bank AB升级方案

jf_EksNQtU6 来源:ZOTECK 2023-08-19 14:41 次阅读

“ 本文通过从芯片手册,寄存器到代码实现来梳理ota的bank AB升级方案, 举例芯片 aurix Tc397”

01—内存先行

首先要评估flash够不够,如果flash都不够,就无从SWAP机制可谈。

正常情况下,我们的芯片有6块flash可以用。如下图

3b666608-3dae-11ee-ac96-dac502259ad0.png

在激活OTA配置的时候,内存映射发生了变化。如下图

3baec92a-3dae-11ee-ac96-dac502259ad0.png

从这两张图可以看出来,如果打开OTA配置的话,我们实际上可以用的flash 只有7M. 当然如果是别的芯片可用的flash会更少。这点是一开始就需要评估好的。否则芯片提供的机制无法满足需求。

02—配置初始化流程

这里先放一张图,芯片手册提供的标准流程,后面会对每一个步骤进行解析

3bdc01b0-3dae-11ee-ac96-dac502259ad0.png

03—运行时流程

这里也先放一张图,芯片手册提供的标准流程,后面会对每一个步骤进行解析

3c02d074-3dae-11ee-ac96-dac502259ad0.png

04—软件实现

从这里开始我们要对第二三两章的图进行一一实现。

一般来说是什么样的流程呢,简单的来说。下图

3c31c08c-3dae-11ee-ac96-dac502259ad0.png

05—读取当前bank

当配置完SOTA之后,下一次上电,MCU会做什么呢。会首先读取UCB里面的SOTA配置信息。发现了SOTA被配置上了。则要做下面两件事

因为地址重映射了,访问路径变了,什么意思呢?答:访问自己的pflash路径变了。直达的路线不给访问了,都需要走上面的总线。所以读写自己pflash速度可能会变慢。

3c56bb1c-3dae-11ee-ac96-dac502259ad0.png

通过下面寄存器自动写入。

3c84c804-3dae-11ee-ac96-dac502259ad0.png

/** rief CPUx Flash Configuration Register 4 */
typedef struct _Ifx_CPU_FLASHCON4_Bits
{
    Ifx_Strict_32Bit DDIS:1;          /**< rief [0:0] Disable direct LPB access (rw) */
    Ifx_Strict_32Bit reserved_1:31;    /**< rief [31:1] internal Reserved */
} Ifx_CPU_FLASHCON4_Bits;

把当前的bank信息写入寄存器,没错就是下面的寄存器。所以我们可以通过这个寄存器来获取当前所在的bank.

3ca21328-3dae-11ee-ac96-dac502259ad0.png

SCU_SWAPCTRL.B.ADDRCFG

到这里第一步读取当前的bank已经清楚了,并且也清楚什么时候这个寄存器被赋值的。

下一步根据当前的bank来选择刷写的地址。我们配置mcal的flashload都知道这个函数。

06—根据当前bank来刷写固件

FlsLoader_ReturnType FlsLoader_Write(const FlsLoader_AddressType TargetAddress,
                                     const FlsLoader_LengthType Length,
                                     const uint8* const SourceAddressPtr)

这里面其中一个形参就是mcu的具体地址。

在使用SOTA时候,这个地址是需要注意的。也就是最上面我们给出的两张图。如果你下一次需要运行在BankB 那么这次刷写的地址需要有个offset. 好吧,把上面图复制下来仔细说一下。

3baec92a-3dae-11ee-ac96-dac502259ad0.png

就是这里当我们下一次需要运行在Bank B 我们的hex/s19文件本身的地址是不需要变化的。假设我们的hex地址开始是0x80001000 那么 这个就需要被刷写到0x80601000这个地址。当我们把地址明确了之后,就和普通的bootloader 刷写程序一样。等待刷写流程走完后。到了我们下一步,配置SOTA 和 写入 SOTA。这里为什么提了一下写入呢。因为这个写SOTA有点特殊,因为这个配置信息是存在UCB里面的UCB_SWAP_ORIG/COPY
。这个位置是可能会把板子搞坏的位置。

07—配置SOTA

最开始的流程图在这里就用上了。我们这里先不考虑HSM的情况,这块容易死机。

3cf6c594-3dae-11ee-ac96-dac502259ad0.png

首先根据这个图,直到第一步是要擦除掉现在已经有的UCB。除非是第一次。否则都需要先擦除一遍。

但是这里要先注意一下SOTA的状态,是否enable. 通过下面寄存器进行配置。具体可以看一下手册解释。

3d2b4e5e-3dae-11ee-ac96-dac502259ad0.png

接上面,擦除方式呢?这里属于Dflash的位置,用Dflash最原始的办法就可以了。

擦除完之后就要根据当前的bank来选择写入的配置字。其实就是写入UCB里面。和上面擦除一样。这里属于dflash, 写的方式可以使用dmu.具体写的内容就是下面的两个位置。根据上面的参数即可。

3d40a3bc-3dae-11ee-ac96-dac502259ad0.png

具体数值呢?就是上面提到的0xAA 或者是0x55。下面的confirm呢?这里是固定的数据。

3d608f60-3dae-11ee-ac96-dac502259ad0.png

到了这里就到了流程的尾部。

3d7d5884-3dae-11ee-ac96-dac502259ad0.png

系统reset, reset之后 启动过程芯片会自动通过ucb的配置,来切换到另一个bank.

审核编辑:汤梓红

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

    关注

    455

    文章

    50812

    浏览量

    423532
  • FlaSh
    +关注

    关注

    10

    文章

    1635

    浏览量

    148012
  • 内存
    +关注

    关注

    8

    文章

    3025

    浏览量

    74041
  • SWAP
    +关注

    关注

    0

    文章

    51

    浏览量

    12823
  • OTA
    OTA
    +关注

    关注

    7

    文章

    580

    浏览量

    35216

原文标题:OTA-swap Bank AB

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    分享一个基于flash-swap,实现升级的freescale资料

    分享一个基于flash-swap,实现升级的freescale资料
    发表于 12-19 17:01

    OTA固件升级教程

    机智云的OTA服务主要提供以下功能:OTA通知服务,即离线升级。当设备的固件程序有新版本发布,OTA 通知服务会推送升级通知到设备。
    发表于 03-01 18:31

    RK3399平台Android镜像-OTA 本地升级OTA远程升级

    平台android镜像版本升级的两种方式OTA 本地升级OTA远程升级以及OTA
    发表于 08-11 10:00

    嵌入式OTA升级实现原理是什么

    目录一、简介1.1 概念1.2 优点1.3 实现原理二、MCU OTA升级2.1 制作升级包2.2 下载升级包2.3 验签升级包2.4 更新
    发表于 12-14 07:24

    什么是在线OTA升级

    什么是在线OTA升级- OTA是Over-the-Air的简写,空中下载技术的意思。- OTA在线升级在日常消费电子产品中很常见,比如手机,
    发表于 12-22 07:44

    设备OTA空中升级原理是什么

    1.背景没有完美的软件,因为设计缺陷、业务需求更新,软件始终都在不断升级完善。新软件如何替换正在运行的旧软件就是本文关注的重点,尤其是针对电子产品,设备空中升级OTA,受限于硬件资源,需要选择
    发表于 01-19 07:44

    RT-thread实现U盘升级的一种OTA方案

    我前面介绍过RT-thread的一种OTA方案,可以通过串口或者网络进行远程升级,那今天在原来的这套方案的基础上做一些修改,实现U盘升级。相
    发表于 01-20 06:17

    OTA升级方法

    简介OTA升级是嵌入式设备几乎都有的一项功能。对于简单的设备来说,例如单片机设备,OTA升级需要将新的固件刷写到FLASH上即可;对于高级一点的Linux设备来说,更加复杂,首先需要对
    发表于 01-25 08:12

    如何升级OTA

    如何升级OTA
    发表于 02-14 06:27

    如何实现OpenHarmony的OTA升级

    OTA简介随着设备系统日新月异,用户如何及时获取系统的更新,体验新版本带来的新的体验,以及提升系统的稳定性和安全性成为了每个厂商都面临的严峻问题。OTA(Over the Air)提供对设备远程升级
    发表于 02-07 10:29

    AB swap不支持启用cache的应用吗?

    AB swap不支持启用cache的应用吗?Hse切换分区函数(AB swap)时,发现只要打开Dcache,接口函数就无法运行。如果我关闭 Dcache,它将运行
    发表于 03-20 06:20

    在线升级 | 物联网中的OTA升级原理

    从最新的固件方式来看,可以分成以下几类 0 1 OTA升级 1.1  概念 OTA:Over-the-Air Technology,即空中下载技术。 OTA
    的头像 发表于 02-03 02:40 1377次阅读

    OTA是什么?OTA升级有何用?

    ota是什么?ota升级是什么意思?很多用智能手机的人应该都会知道 ota是什么 ,而对于一些刚入门的机友们,ROOT、刷机、越狱都比较熟悉,但OT
    的头像 发表于 03-15 14:36 8000次阅读

    在线升级 | 物联网中的OTA升级原理

    从最新的固件方式来看,可以分成以下几类01OTA升级1.1概念OTA:Over-the-AirTechnology,即空中下载技术。OTA升级
    的头像 发表于 02-02 09:59 1527次阅读
    在线<b class='flag-5'>升级</b> | 物联网中的<b class='flag-5'>OTA</b><b class='flag-5'>升级</b>原理

    详解蓝牙空中升级(BLE OTA)原理与步骤

    如何实现BLE OTA?什么叫DFU?如何通过UART实现固件升级?又如何通过USB实现固件升级?怎么保证升级的安全性?什么叫双区(dual ban
    的头像 发表于 07-10 09:36 5370次阅读
    详解蓝牙空中<b class='flag-5'>升级</b>(BLE <b class='flag-5'>OTA</b>)原理与步骤