打印
[通用 MCU]

Tc3xx_SOTA&Overlay

[复制链接]
356|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-6-13 17:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
开发中,经常遇到初学者把SOTA和Overlay两个功能搞混淆,因此随便总结总结,有不对的地方大家指出来

1、功能对比



2、SOTA功能描述
核心逻辑:使能SWAP功能,使两块不同的物理区域可以映射到相同逻辑地址

以TC39x为例,该芯片有两种Address map方式:

(1)Standard Address map



(2)Alternate address map



标准地址映射,A0000000-A0BFFFFF 对应物理BANK 为(PF0、1)(简称A)、(PF2、3)(简称B)

备用地址映射,A0000000-A0BFFFFF 对应物理BANK 为(PF2、3)(B)、(PF0、1)(A)



以上述为例,用户使用A000 0000 - A05F FFFF作为工程的运行区(不关心实际对应哪一块物理BANK),用A060 0000 - A0BF FFFF作为OTA升级的程序刷写区;

当需要OTA升级时,将代码写到程序刷写区后,检查当前地址映射模式,配置寄存器切换到另一种地址模式,MCU重启后刷写区对应的物理bank会映射到运行区,开始运行新的程序;后续OTA升级以此类推。

3、Overlay功能描述
核心逻辑:通过配置Overlay寄存器,CPU访问Flash地址,但实际重定向访问RAM中内容



应用场景举例:在汽车制动中,假设制动力大小与制动踏板的数学模型

Y = aX+b

其中,Y是制动力,X是制动踏板开度,a、b为模型系数;

通常情况下,a、b是作为常量存储在Flash

现在标定工程师开发过程中,想要在某个固定制动踏板位置下,修改a、b参数来调节制动力大小,

如果是修改flash,从时间和安全角度是不现实的。

因此需要把a、b的值拷贝到RAM,通过访问修改ram中a、b值来达到上述目的。

Overlay功能举例说明:

假设想把PFlash0(0x8000 1000)(128byte)重定向到CPU0DSPR(0x70011000)

定义一个常量,存储在PF中,如下



定义一个变量,存储在RAM中,如下



Overlay是针对CPU的,由于debug是走bypass,因此如果直接去memory看overlay flash值,必定还是原flash的值。

需要一个中间变量来承接,定为Test_Algo_Update



开启overlay功能,要达到的目的为:通过cpu0去读取被重定向flash里的值,实际读到的应该是RAM中的值



————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/djkeyzx/article/details/129681335

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1931

主题

15650

帖子

12

粉丝