Initialization time become longer with D-cache&I-cache enabled 5746C

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

Initialization time become longer with D-cache&I-cache enabled 5746C

1,589 次查看
ChrisMCU
Contributor II

hi

for reduced CPU, I've turned D-cahce&I-cache on in startup code, but I find that the initialization become longer than before, is there any operation takes much time when cache is enabled?

Do I have any solution for it?

thanks!

标记 (2)
0 项奖励
回复
7 回复数

1,581 次查看
davidtosenovjan
NXP TechSupport
NXP TechSupport

Hi, I guess it'll be rather issue with I-cache than D-cache. After POR cache content is invalid, by first code execution the code is being loaded to the cache by bursts, what could cause initial delay (in dependence of the code, with linear code you should see no impact) plus initialization of cache itself (invalidation takes some cycles). On the other hand during runtime having enabled caches greatly increase execution performance.

But if there is some difference in execution time I would not expect much. Do you have some numbers?

You may consider enabling of I-cache in the main application. Another point is whether you are configuring PLL clocks before MCU init, this may significantly increase initialization time.

0 项奖励
回复

1,578 次查看
ChrisMCU
Contributor II

Hi,

very appreciate for your reply.

As you said, caches can greatly increase execution performance after been enabled.

that's a good idea to enable cache in the main function, shall D-cache be enabled in main function either?

0 项奖励
回复

1,557 次查看
davidtosenovjan
NXP TechSupport
NXP TechSupport

I think in the case of D-cache it shouldn't matter as main portion of data accesses during MCU initialization are SRAM writes (initializing ECC). And these should take same amount of time as on this device used core supports only write-through mode an so SRAM init writes takes same amount of time with cache enabled or disabled.

However still there is a time for D-cache initialization itself (cache invalidation takes 134 CPU cycles).

0 项奖励
回复

1,543 次查看
ChrisMCU
Contributor II

I've tried to move this handler to main function, and it works. Thanks a lot.

but I'm still working on why D-cache cannot be enabled in startup code. Finally, I find D-cache may influence flash data readout. when D-cache was enabled, the E-EEPROM data readout time increased a lot.

I will set SMPU to avoid Data consistence, but I don't know which area shall I set, NVM area or SRAM?

0 项奖励
回复

1,537 次查看
davidtosenovjan
NXP TechSupport
NXP TechSupport

Please clarify your last sentence, I haven't understand what you want to do. Dont you rather to set cache inhibited attribute for EEPROM address space by CMPU?

0 项奖励
回复

1,532 次查看
ChrisMCU
Contributor II

Sorry for my poor English.

Yes, I want to set CI attribute for EEPROM address, but I'm not sure is this right or not.

0 项奖励
回复

1,511 次查看
davidtosenovjan
NXP TechSupport
NXP TechSupport

OK, CI attribute is needed to configure by CMPU.

 

You may use following tool:

https://community.nxp.com/t5/MPC5xxx-Knowledge-Base/Core-MPU-configurator/ta-p/1100529

0 项奖励
回复