• 887查看
  • 0回复

[底层软件] Tricore——Swap移植及常见问题

[复制链接]


该用户从未签到

发表于 21-1-2024 11:08:47 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


01

工程问题

项目中,系统、标定同事常常会反馈板子软件使用miniwiggle刷写会失败,

Tricore——Swap移植及常见问题w1.jpg

其实是因为软件使用了AB分区,在一次OTA刷写后,mcu启动就会切换到B区,从而导致memtool刷写失败(此处小编有对软件做地址偏移为B区软件刷写并读取数据,虽然软件刷写进去了,但是工具依然提示失败)。

那么如果现场环境只能使用mentool刷写,要怎么解决问题呢?

Tricore——Swap移植及常见问题w2.jpg

咱们可以找Lucian帮...

咱们可以给软件刷写UCB的配置文件,将mcu再配置回A区,之后再刷写正常的工程软件即可。

01

SOTA介绍

SOTA,software over the Air。Aurix全系列除了Tc33*和TC33*ED外,全部支持sota功能。当功能启用时,可以向其中一个分区做读取和执行的指令。并同时对另一个分区刷写。

那么pflash具体是如何划分呢?在memmap章节中有介绍,以tc39*和tc36*为例:
Tricore——Swap移植及常见问题w3.jpg

Tricore——Swap移植及常见问题w4.jpg
tc39*会特殊一些,由于PF5与PF4的大小不一致,所以只能以1MB做SWAP,剩下的2MB需要被浪费掉。

Tricore——Swap移植及常见问题w5.jpg
在做刷写和擦除操作时,需要注意对地址的偏移。

此外,在使能了swap功能后,cpu对pflash的直接访问也被禁止了。
在芯片手册的3.1.4章节中,我们看到了详细的介绍:

1.在swap功能成功的配置后,寄存器CPUx_FLASHCON4.DDIS写1,禁止所有直接对pflash的取读,寄存器SRU_SWAPCTRL.ADDRCFG显示当前使能的区域;
Tricore——Swap移植及常见问题w6.jpg

Tricore——Swap移植及常见问题w7.jpg

对应调试器中寄存器的显示:

Tricore——Swap移植及常见问题w8.jpg
当使能swap之后:

Tricore——Swap移植及常见问题w9.jpg

03

SOTA配置

那么sota或者swap如何配置呢?类似于对pflash的刷写,咱们需要对UCB(uesr config block)区域做配置,从而在mcu上电后,cpu读取UCB区域的内容,再对相对应的寄存器做赋值,实现功能。

那么UCB区域必然和寄存器有一个映射关系,芯片手册涉及的主要寄存器配置如下:

Tricore——Swap移植及常见问题w10.jpg

关于PFLASH/DFLASH区域的擦除刷写换页等操作指令可以在6.5DMU章节找到描述和示例代码

Tricore——Swap移植及常见问题w11.jpg

而swap相关寄存器和UCB的配置映射可以在6.8章节找到对应。

Tricore——Swap移植及常见问题w12.jpg

咱们主要配置的区域为swap和otp。

UCB的基地址为

Tricore——Swap移植及常见问题w13.jpg

对应swap_orig的偏移如下:

Tricore——Swap移植及常见问题w14.jpg

而寄存器具体要写入的内容可以点击页码跳转去看:

Tricore——Swap移植及常见问题w15.jpg

Tricore——Swap移植及常见问题w16.jpg

Tricore——Swap移植及常见问题w17.jpg

Tricore——Swap移植及常见问题w18.jpg

这部分介绍的比较详细,在做手动切换分区时,可以刷写这部分内容对软件做地址偏移,示例hex如下;

Tricore——Swap移植及常见问题w19.jpg

1

swap初始化配置

Tricore——Swap移植及常见问题w20.jpg

当开始时,我们是默认在bankA且没有swap使能的,

Tricore——Swap移植及常见问题w21.jpg

将0x55和确认码0x57B5327F写入对应区域后,使能swap,此时板子就支持swap功能了。

2

分区切换

Tricore——Swap移植及常见问题w22.jpg

首先正常的对对应分区的pflash做擦除刷写,16个分区是什么意思呢?

在地址偏移的时候可能注意到了swap相关的配置地址偏移有x:

Tricore——Swap移植及常见问题w23.jpg

这里就是对应是否16个区域都写满了,如果写满了需要擦除之后再在0x4F002E00做分区配置,而这个分区的具体个数,可以在3.2.1.1寄存器SCU_STMEM1看到。

Tricore——Swap移植及常见问题w24.jpg

之后重启,板子即会根据当前active的分区执行对应的代码。

04

注意事项

需要注意的是,对dflash的擦除刷写需要严格按照芯片手册的提示或MCAL提供的代码去操作,否则板子就会锁死,再也没法连接调试工具了。(我锁了2块板子才完成调试,没敢告诉PM)


该用户从未签到

发表于 15-3-2025 10:23:00 | 显示全部楼层
针对上述帖子的问题,可以做出如下专业回复:

关于Tricore的Swap移植及常见问题,反馈中提到的miniwiggle刷写失败问题,原因在于软件使用了AB分区并在OTA刷写后,mcu自动切换到B区导致。若现场环境只能使用mentool刷写,建议配置软件刷写UCB的配置文件,将mcu重新配置到A区,然后进行正常的工程软件刷写。关于SOTA介绍,SOTA即软件更新技术,主要目的是实现在车辆生命周期内进行远程软件更新,优化系统性能并修复潜在问题。在实施SOTA时,要确保系统的安全性和稳定性,以及更新过程的可控性。针对具体的实施方法和细节,需要结合项目具体情况来定制解决方案。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 15-3-2025 10:23:00 | 显示全部楼层
针对所述问题,现场环境若只能使用mentool进行软件刷写,针对软件AB分区问题导致刷写失败的情况,建议采取以下专业解决方案:

我们可以尝试通过配置软件刷写UCB的配置文件来解决问题。具体操作是将MCU重新配置回A区,这样可以避免因为B区的占用导致的问题。具体的配置文件需要根据具体的硬件和软件环境进行定制和优化。在配置完成后,我们可以再次尝试使用mentool进行正常的工程软件刷写。同时,对于SOTA(Software Over-The-Air)的介绍,它是一种远程软件更新技术,能够实现车辆软件的远程无线升级。在汽车工程中,SOTA技术的应用对于保证车辆软件的持续更新和升级具有重要意义。在实施SOTA技术时,也需要考虑到软件版本管理、安全性验证等方面的问题。以上内容供参考,如需更多信息,建议请教专业人士。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 15-3-2025 10:23:00 | 显示全部楼层
针对上述问题,我们可以采取以下专业解决方案:

针对Tricore系统Swap移植过程中出现的刷写失败问题,主要原因在于软件使用了AB分区并在OTA刷写后切换到B区导致。若现场只能使用mentool进行刷写,我们可以采用配置UCB文件的方式,将mcu重新配置回A区。具体操作包括生成对应的UCB配置文件,并通过mentool进行刷写,使mcu回到A区,之后再进行正常的工程软件刷写。

至于SOTA(Software Over-The-Air)介绍,它主要是指通过远程无线方式实现软件的更新和升级。在汽车工程中,SOTA技术广泛应用于车辆远程升级和维护,能够提升车辆系统的性能和安全性。具体实现涉及版本控制、通信协议、升级策略等方面。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 21:40 , Processed in 0.374241 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.