公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
huskie
Level 2
Level 2
First like received 5 replies posted First solution authored

Hi:

 

我在使用TC397的过程中,需要定义一个较大的数组,但是在使用中通过attribute将数据定义到

.bss.bss_cpu0中,程序可以正常运行
huskie_0-1675237391673.png

 

但是将这个数组定义到LMU中,程序无法正常运行

huskie_1-1675237473749.png

 

请问,LMU在使用中有什么需要注意的吗?

 

谢谢

0 点赞
1 解答
Jeremy_Z
Moderator
Moderator
Moderator
1000 replies posted 250 sign-ins 100 likes received

Hi @huskie ,

是的,默认情况下,链接器会将代码和数据链接到支持缓存区域,但是为了核之间共享变量,需要引入一致性 处理机制,因此必须要确保关键变量不被缓存。

BR,

Jeremy

在原帖中查看解决方案

0 点赞
6 回复数
Jeremy_Z
Moderator
Moderator
Moderator
1000 replies posted 250 sign-ins 100 likes received

Hi @huskie ,

能否解释一下你上面所提到“不能正常工作”的具体现象吗,还有请分享一下复现问题的代码。

BR,

Jeremy

0 点赞
huskie
Level 2
Level 2
First like received 5 replies posted First solution authored

Hi:

在使用FreeRTOS SMP方式的时候,将heap池分配到LMU中,在MCU启动后,有几个核进入了TRAP

huskie_0-1675304014721.png

将heap池分配到.bss.bss_cpu0中则不会出现TRAP。

 

谢谢

 

0 点赞
huskie
Level 2
Level 2
First like received 5 replies posted First solution authored

这个问题是否和LMU的多核数据一致性有关?

在调试过程中

huskie_0-1675316993848.png

图中的xStart在core0的初始化阶段已经初始化了,但是core5在此处出现TRAP的时候这个xStart显示没有初始化,导致core5进入

IfxCpu_Trap_InternalProtection_Id_memoryProtectionNullAddress的TRAP。
 
谢谢
0 点赞
Jeremy_Z
Moderator
Moderator
Moderator
1000 replies posted 250 sign-ins 100 likes received

Hi @huskie ,

不管是Local DLMU还是Gloal LMU都是允许各Cores访问的,所以出现这个错误,你看看linker file是否设置正确。

第二点,FreeRTOS SMP内核是你自己移植的吗?从我的理解,AURIX MCU的Tricore是符合SMP架构的,更像NUMA架构,所以这个问题也有可能与FreeRTOS SMP内核有关。

BR,

Jeremy

0 点赞
huskie
Level 2
Level 2
First like received 5 replies posted First solution authored

hi:

 

调整lsl文件将LMU区域设置为非缓存模式,多核读/写没有问题,程序可以正常运行。

huskie_0-1675909378300.png

 

多核读/写LMU区域是否涉及cache操作相关的问题?

 

谢谢

0 点赞
Jeremy_Z
Moderator
Moderator
Moderator
1000 replies posted 250 sign-ins 100 likes received

Hi @huskie ,

是的,默认情况下,链接器会将代码和数据链接到支持缓存区域,但是为了核之间共享变量,需要引入一致性 处理机制,因此必须要确保关键变量不被缓存。

BR,

Jeremy

0 点赞