• 471查看
  • 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)

快速发帖

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

本版积分规则

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

GMT+8, 1-2-2025 12:46 , Processed in 0.234512 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.