基于Aurix的SOTA(A/B分区)实践指南

提示:本文基于Tasking+TC397讨论

1、SWAP实现的基本流程

基于Aurix的SOTA(Software over the Air)功能实现,主要实现如下4个步骤,如下所示:

在这里插入图片描述
(一)每个步骤实现注意事项

修改链接文件(*.lsl)

链接文件中A Group Banks/B Group Banks空间大小由芯片型号决定。比如:TC39X,A Group Banks/B Group Banks空间最大可用7M,TC38X,A Group Banks/B Group Banks最大可用4M。
TC397一共有6个Core,Core0Core3各分配1536Kbytes空间,Core4Core5各分配512Kbytes空间,具体链接文件修改如下。以TC397为例(不使能HSM),链接文件修改对比如下:
在这里插入图片描述
提示:本文选择Reset地址为0x80000000(对应NoCached地址0xA0000000)。

注意:链接器不能将编译后的可执行文件(二进制应用程序代码)放入B -Group Banks或NoSwap-Banks中。也就是说,不管编译A Group Banks还是B Group Banks,均使用上述修改后的链接文件。

  • 编译APP程序
    此步骤,相对容易理解,开发人员按照需求完成应用软件开发,生成需要下载的镜像文件(Image)。

  • 下载镜像文件
    将编译后的Image文件下载到PFlash,假设当前A Group Banks处于激活(Active)状态,只能将程序下载到非激活状态(Inactive)的B Group Banks,反之,亦然。

  • 使能SWAP
    当Image下载完成以后,设置需要激活的A/B Group Banks,之后使能SWAP功能。当程序进行System Reset或者Power On以后,启动固件时,会根据UCB中配置,对有效的A或者B Group Banks进行对应使能。
    其中,0x55表示standard address,也就是A Group Banks有效,此时A Group Banks物理内存会映射到0xA0000000开始的虚拟地址处;0xAA表示alternate address,也就是B Group Banks有效,此时B Group Banks物理内存会映射到0xA0000000开始的虚拟地址处。
    通过操作UCB23和UCB31,交替设置A/B Group Banks使能,如下所示:
    在这里插入图片描述

2、使用Lauterbach烧录Image

在开发阶段,大家可能使用Lauterbach下载Image A/Image B。当使用Lauterbach下载Image时,需要注意,Image B程序需要下载到0xA0600000起始的虚拟地址位置

当下载Image A程序时(将物理程序映射到虚拟地址0xA000000开始位置),.cmm脚本如下所示:
在这里插入图片描述
当下载Image B程序时(将物理程序映射到虚拟地址0xA060000开始位置),
.cmm脚本如下所示:
在这里插入图片描述
如上*.cmm文件中,使用了Lauterbach的脚本命令FLASH.CreateALIAS,具体格式(Format)如下:

FLASH.CreateALIAS <address_range> <alias_address>

举例:

FLASH.CreateALIAS 0x80000000--0x805FFFFF 0xA0600000

解释:将0x80000000起始的6MBytes地址空间重定向到0xA0600000起始的位置。

不管是Image A程序还是Image B程序程序,复位地址均从0xA0000000虚拟地址开始,调试器复位以后,程序也是复位到0xA0000000,因为Image A程序和Image B程序使用同一个链接文件,复位地址相同。复位如下所示:
在这里插入图片描述

3、验证程序所在Group Banks

本文在编译Image A和Image B时,对Image_Flag变量设置了不同值,一个0x55,一个0xAA,A/B Group Banks交替切换示意如下所示:
在这里插入图片描述
补充拓展:

在进行SOTA功能开发过程中,少不了的UCB的配置。有些时候,为了方便,会单独将UCB对应的*.hex文件独立出来烧录。为了加速UCB 对应*.hex文件的修改,且熟悉修改位置时,使用HexView修改相对来说可能更快捷,而且,使用HexView修改某个字节,对应行的Checksum自动计算完成,确保修改的*.hex文件有效。具体操作如下所示:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值