S32G274A-M7 DTCM and Cache interaction

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

S32G274A-M7 DTCM and Cache interaction

1,416 次查看
nakrachi
Contributor II

Hello,

I'm investigating a strange bug that makes some function calls on the M7 core to spike from ~3us to up to 2ms (according to the measurements using the tracing module)

I disabled Data Cache (for testing) and it seems to make the issue go away, which got me thinking this might be a cache coherency issue ?

After digging a little bit more I noticed that the DTCM is used as a stack for each of the M7 cores, and the MPU region for it was set as cacheable - bufferable , which I think should not be the case ? I disabled the cache in the MPU entry, when I did that I started getting alignment exceptions (all from DTCM).

My question is, why cache as an effect on DTCM even if they are not sharing the same bus ?

Why having the DTCM MPU region set as cache-on masks the unaligned access errors ?

Also is it okay to use the DTCM for the stack? as GCC generates unaligned access instructions to the TCM memory.  

Thank you

0 项奖励
回复
3 回复数

1,387 次查看
nakrachi
Contributor II

Hi Joey!

I am using the S32G2 in multi-core, the A53 are running Linux, and the M7 have a custom baremetal running on them. 

Unfortunately I cannot share the code, but I can try to explain in detail what I am noticing. 

The MPU entry for the DTCM was "mistakenly" set to cacheable, when I did set it to cacheable I started seeing unaligned access exceptions, after looking into the assembly, GCC was indeed generating unaligned word access on the DTCM (used as stack). 

I then added -mno-unaligned-access to my gcc options and now I can set the DTCM MPU region to uncacheable without generating any exceptions. 

It also seems to solve the bug I was after, trace data showed no spikes in function execution time. 

But I am still puzzled by the effect of cache on the DTCM, 

  • Why having the MPU region set to cacheable "masks" the unaligned access exceptions ?
  • Why disabling the cache, while keeping the MPU region as cacheable does not generate unaligned exceptions? and also as side effect, solve the execution time spikes? 
0 项奖励
回复

1,319 次查看
Joey_z
NXP Employee
NXP Employee

hi, nakrachi

Thank you for your reply.

I'm glad to hear that your problem has been solved. This issue should be caused by incompatibility between the MCU and MPU in setting the DTCM area.

BR

Joey

0 项奖励
回复

1,390 次查看
Joey_z
NXP Employee
NXP Employee

hi,nakrachi

Thank you for your question.

are you using the S32G2 on the multi-core? Do you use any demo and code for testing?

Could you share more information for us?

BR

Joey

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2136090%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ES32G274A-M7%20DTCM%20%E4%B8%8E%E9%AB%98%E9%80%9F%E7%BC%93%E5%AD%98%E4%B9%8B%E9%97%B4%E7%9A%84%E7%9B%B8%E4%BA%92%E4%BD%9C%E7%94%A8%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2136090%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3C%2FP%3E%3CP%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E8%B0%83%E6%9F%A5%E4%B8%80%E4%B8%AA%E5%A5%87%E6%80%AA%E7%9A%84%E9%94%99%E8%AF%AF%EF%BC%8C%E5%AE%83%E4%BD%BF%20M7%20%E5%86%85%E6%A0%B8%E4%B8%8A%E7%9A%84%E6%9F%90%E4%BA%9B%E5%87%BD%E6%95%B0%E8%B0%83%E7%94%A8%E4%BB%8E%20~3us%20%E6%BF%80%E5%A2%9E%E5%88%B0%E6%9C%80%E5%A4%9A%202ms%EF%BC%88%E6%A0%B9%E6%8D%AE%E4%BD%BF%E7%94%A8%E8%B7%9F%E8%B8%AA%E6%A8%A1%E5%9D%97%E8%BF%9B%E8%A1%8C%E7%9A%84%E6%B5%8B%E9%87%8F%EF%BC%89%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E7%A6%81%E7%94%A8%E4%BA%86%E6%95%B0%E6%8D%AE%E7%BC%93%E5%AD%98%EF%BC%88%E7%94%A8%E4%BA%8E%E6%B5%8B%E8%AF%95%EF%BC%89%EF%BC%8C%E4%BC%BC%E4%B9%8E%E4%BD%BF%E9%97%AE%E9%A2%98%E6%B6%88%E5%A4%B1%E4%BA%86%EF%BC%8C%E8%BF%99%E8%AE%A9%E6%88%91%E6%83%B3%E5%88%B0%E8%BF%99%E5%8F%AF%E8%83%BD%E6%98%AF%E7%BC%93%E5%AD%98%E4%B8%80%E8%87%B4%E6%80%A7%E9%97%AE%E9%A2%98%EF%BC%9F%3C%2FP%3E%3CP%3E%E5%9C%A8%E6%B7%B1%E5%85%A5%E7%A0%94%E7%A9%B6%E4%B9%8B%E5%90%8E%EF%BC%8C%E6%88%91%E6%B3%A8%E6%84%8F%E5%88%B0%20DTCM%20%E8%A2%AB%E7%94%A8%E4%BD%9C%E6%AF%8F%E4%B8%AA%20M7%20%E5%86%85%E6%A0%B8%E7%9A%84%E5%A0%86%E6%A0%88%EF%BC%8C%E8%80%8C%E5%85%B6%20MPU%20%E5%8C%BA%E5%9F%9F%E8%A2%AB%E8%AE%BE%E7%BD%AE%E4%B8%BA%E5%8F%AF%E7%BC%93%E5%AD%98-%E5%8F%AF%E7%BC%93%E5%86%B2%EF%BC%8C%E6%88%91%E8%AE%A4%E4%B8%BA%E6%83%85%E5%86%B5%E4%B8%8D%E5%BA%94%E8%AF%A5%E6%98%AF%E8%BF%99%E6%A0%B7%EF%BC%9F%E6%88%91%E7%A6%81%E7%94%A8%E4%BA%86%20MPU%20%E6%9D%A1%E7%9B%AE%E4%B8%AD%E7%9A%84%E7%BC%93%E5%AD%98%EF%BC%8C%E7%A6%81%E7%94%A8%E5%90%8E%E6%88%91%E5%BC%80%E5%A7%8B%E6%94%B6%E5%88%B0%E5%AF%B9%E9%BD%90%E5%BC%82%E5%B8%B8%EF%BC%88%E5%85%A8%E9%83%A8%E6%9D%A5%E8%87%AA%20DTCM%EF%BC%89%E3%80%82%3C%2FP%3E%3CP%3E%E6%88%91%E7%9A%84%E9%97%AE%E9%A2%98%E6%98%AF%EF%BC%8C%E5%8D%B3%E4%BD%BF%E5%AE%83%E4%BB%AC%E4%B8%8D%E5%85%B1%E4%BA%AB%E5%90%8C%E4%B8%80%E6%9D%A1%E6%80%BB%E7%BA%BF%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E7%BC%93%E5%AD%98%E4%BC%9A%E5%AF%B9%20DTCM%20%E4%BA%A7%E7%94%9F%E5%BD%B1%E5%93%8D%EF%BC%9F%3C%2FP%3E%3CP%3E%E4%B8%BA%E4%BB%80%E4%B9%88%E5%B0%86%20DTCM%20MPU%20%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%AB%98%E9%80%9F%E7%BC%93%E5%AD%98%E5%BC%80%E5%90%AF%E4%BC%9A%E6%8E%A9%E7%9B%96%E6%9C%AA%E5%AF%B9%E9%BD%90%E8%AE%BF%E9%97%AE%E9%94%99%E8%AF%AF%EF%BC%9F%3C%2FP%3E%3CP%3E%E5%8F%A6%E5%A4%96%EF%BC%8C%E5%A0%86%E6%A0%88%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20DTCM%20%E5%90%97%EF%BC%9F%E5%9B%A0%E4%B8%BA%20GCC%20%E4%BC%9A%E5%AF%B9%20TCM%20%E5%86%85%E5%AD%98%E7%94%9F%E6%88%90%E6%9C%AA%E5%AF%B9%E9%BD%90%E7%9A%84%E8%AE%BF%E9%97%AE%E6%8C%87%E4%BB%A4%E3%80%82%20%20%3C%2FP%3E%3CP%3E%E8%B0%A2%E8%B0%A2%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2137862%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32G274A-M7%20DTCM%20and%20Cache%20interaction%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2137862%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%97%A8%EF%BC%8C%3CSPAN%3E%E7%BA%B3%E5%85%8B%E6%8B%89%E5%A5%87%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%E6%84%9F%E8%B0%A2%E6%82%A8%E7%9A%84%E5%9B%9E%E5%A4%8D%E3%80%82%3C%2FP%3E%0A%3CP%3E%E5%BE%88%E9%AB%98%E5%85%B4%E5%90%AC%E5%88%B0%E4%BD%A0%E7%9A%84%E9%97%AE%E9%A2%98%E5%B7%B2%E7%BB%8F%E8%A7%A3%E5%86%B3%E3%80%82%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E5%BA%94%E8%AF%A5%E6%98%AF%20MCU%20%E5%92%8C%20MPU%20%E5%9C%A8%E8%AE%BE%E7%BD%AE%20DTCM%20%E5%8C%BA%E5%9F%9F%E6%97%B6%E4%B8%8D%E5%85%BC%E5%AE%B9%E9%80%A0%E6%88%90%E7%9A%84%E3%80%82%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E4%B9%94%E4%BC%8A%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2136537%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32G274A-M7%20DTCM%20and%20Cache%20interaction%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2136537%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%97%A8%EF%BC%8C%E4%B9%94%E4%BC%8A%EF%BC%81%3C%2FP%3E%3CP%3E%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%E5%A4%9A%E6%A0%B8%20S32G2%EF%BC%8CA53%20%E8%BF%90%E8%A1%8C%E7%9A%84%E6%98%AF%20Linux%EF%BC%8CM7%20%E4%B8%8A%E8%BF%90%E8%A1%8C%E7%9A%84%E6%98%AF%E5%AE%9A%E5%88%B6%E7%9A%84%E8%A3%B8%E6%9C%BA%E3%80%82%20%3C%2FP%3E%3CP%3E%E9%81%97%E6%86%BE%E7%9A%84%E6%98%AF%EF%BC%8C%E6%88%91%E6%97%A0%E6%B3%95%E5%85%B1%E4%BA%AB%E4%BB%A3%E7%A0%81%EF%BC%8C%E4%BD%86%E6%88%91%E5%8F%AF%E4%BB%A5%E5%B0%9D%E8%AF%95%E8%AF%A6%E7%BB%86%E8%A7%A3%E9%87%8A%E6%88%91%E6%B3%A8%E6%84%8F%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98%E3%80%82%20%3C%2FP%3E%3CP%3EDTCM%20%E7%9A%84%20MPU%20%E6%9D%A1%E7%9B%AE%E8%A2%AB%22%E9%94%99%E8%AF%AF%E5%9C%B0%22%20%E8%AE%BE%E7%BD%AE%E4%B8%BA%E5%8F%AF%E9%AB%98%E9%80%9F%E7%BC%93%E5%AD%98%EF%BC%8C%E5%BD%93%E6%88%91%E5%B0%86%E5%85%B6%E8%AE%BE%E7%BD%AE%E4%B8%BA%E5%8F%AF%E9%AB%98%E9%80%9F%E7%BC%93%E5%AD%98%E6%97%B6%EF%BC%8C%E6%88%91%E5%BC%80%E5%A7%8B%E7%9C%8B%E5%88%B0%E6%9C%AA%E5%AF%B9%E9%BD%90%E8%AE%BF%E9%97%AE%E5%BC%82%E5%B8%B8%EF%BC%8C%E5%9C%A8%E6%9F%A5%E7%9C%8B%E6%B1%87%E7%BC%96%E7%A8%8B%E5%BA%8F%E5%90%8E%EF%BC%8CGCC%20%E7%A1%AE%E5%AE%9E%E5%9C%A8%20DTCM%EF%BC%88%E7%94%A8%E4%BD%9C%E5%A0%86%E6%A0%88%EF%BC%89%E4%B8%8A%E4%BA%A7%E7%94%9F%E4%BA%86%E6%9C%AA%E5%AF%B9%E9%BD%90%E5%AD%97%E8%AE%BF%E9%97%AE%E3%80%82%20%3C%2FP%3E%3CP%3E%E7%84%B6%E5%90%8E%EF%BC%8C%E6%88%91%E5%9C%A8%20gcc%20%E9%80%89%E9%A1%B9%E4%B8%AD%E6%B7%BB%E5%8A%A0%E4%BA%86%3CEM%3E-mno-unaligned-access%20%3C%2FEM%3E%E9%80%89%E9%A1%B9%EF%BC%8C%E7%8E%B0%E5%9C%A8%E6%88%91%E5%8F%AF%E4%BB%A5%E5%B0%86%20DTCM%20MPU%20%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE%E4%B8%BA%E4%B8%8D%E5%8F%AF%E7%BC%93%E5%AD%98%EF%BC%8C%E8%80%8C%E4%B8%8D%E4%BC%9A%E4%BA%A7%E7%94%9F%E4%BB%BB%E4%BD%95%E5%BC%82%E5%B8%B8%E3%80%82%20%3C%2FP%3E%3CP%3E%E8%BF%99%E4%BC%BC%E4%B9%8E%E4%B9%9F%E8%A7%A3%E5%86%B3%E4%BA%86%E6%88%91%E6%83%B3%E8%A6%81%E8%A7%A3%E5%86%B3%E7%9A%84%E9%97%AE%E9%A2%98%EF%BC%8C%E8%B7%9F%E8%B8%AA%E6%95%B0%E6%8D%AE%E6%98%BE%E7%A4%BA%E5%87%BD%E6%95%B0%E6%89%A7%E8%A1%8C%E6%97%B6%E9%97%B4%E6%B2%A1%E6%9C%89%E5%B0%96%E5%B3%B0%E3%80%82%20%3C%2FP%3E%3CP%3E%E4%BD%86%E6%88%91%E4%BB%8D%E5%AF%B9%E7%BC%93%E5%AD%98%E5%AF%B9%20DTCM%20%E7%9A%84%E5%BD%B1%E5%93%8D%E6%84%9F%E5%88%B0%E5%9B%B0%E6%83%91%E3%80%81%20%3C%2FP%3E%3CUL%3E%3CLI%3E%E4%B8%BA%E4%BB%80%E4%B9%88%E5%B0%86%20MPU%20%E5%8C%BA%E5%9F%9F%E8%AE%BE%E7%BD%AE%E4%B8%BA%E5%8F%AF%E7%BC%93%E5%AD%98%22%E5%B1%8F%E8%94%BD%22%20%E6%9C%AA%E5%AF%B9%E9%BD%90%E8%AE%BF%E9%97%AE%E5%BC%82%E5%B8%B8%EF%BC%9F%3C%2FLI%3E%3CLI%3E%E4%B8%BA%E4%BB%80%E4%B9%88%E7%A6%81%E7%94%A8%E7%BC%93%E5%AD%98%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BF%9D%E6%8C%81%20MPU%20%E5%8C%BA%E5%9F%9F%E5%8F%AF%E7%BC%93%E5%AD%98%EF%BC%8C%E5%8D%B4%E4%B8%8D%E4%BC%9A%E4%BA%A7%E7%94%9F%E6%9C%AA%E5%AF%B9%E9%BD%90%E5%BC%82%E5%B8%B8%EF%BC%9F%20%3C%2FLI%3E%3C%2FUL%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2136512%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32G274A-M7%20DTCM%20and%20Cache%20interaction%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2136512%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E5%97%A8%3CSPAN%3E%EF%BC%8C%E7%BA%B3%E5%85%8B%E6%8B%89%E5%A5%87%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%E8%B0%A2%E8%B0%A2%E6%82%A8%E7%9A%84%E6%8F%90%E9%97%AE%E3%80%82%3C%2FP%3E%0A%3CP%3E%E6%82%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%E5%A4%9A%E6%A0%B8%20S32G2%20%E5%90%97%EF%BC%9F%E6%82%A8%E4%BD%BF%E7%94%A8%E4%BB%BB%E4%BD%95%E6%BC%94%E7%A4%BA%E5%92%8C%E4%BB%A3%E7%A0%81%E8%BF%9B%E8%A1%8C%E6%B5%8B%E8%AF%95%E5%90%97%EF%BC%9F%3C%2FP%3E%0A%3CP%3E%E6%82%A8%E8%83%BD%E4%B8%BA%E6%88%91%E4%BB%AC%E6%8F%90%E4%BE%9B%E6%9B%B4%E5%A4%9A%E4%BF%A1%E6%81%AF%E5%90%97%EF%BC%9F%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E4%B9%94%E4%BC%8A%3C%2FP%3E%3C%2FLINGO-BODY%3E