This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

A TCM problem

Hi all

Here is a problem about the using of TCM.

I put two functions(they are just the same) of time-delay in the ITCM and the normal RAM, using the scatter file, and execute them one after another.

But at the end of func in ITCM, there is a PREFTECH abort(May it didn't execute fully at all).

During my boot.s, only ITCM bank0 was initialized:

MOV r9, #0x0

MCR p15, 0, r0, c9, c2, 0

LDR r0, =BASE_ITCM_BANK0    ;0xc20000

ORR r0, r0, #0x0D

MCR p15, 0, r0, c9, c1, 1

Here are the points that confused me:

1 why this prefetch abort happened ?

2 I wonder whether initialization of the ITCM_BANK0 is enough.

Sorry about my poor english T T, and thanks for your apply.

Parents
  • And also, it looks there is no that much difference between those two delays in time-consume.

    On ARM11 both the L1 caches and the TCMs are single cycle; I wouldn't expect much performance difference (there are scenarios where TCM can be slower than L1 cache). It's worth noting that the main purpose of TCM isn't performance, but predictability, which is necessary for some system routines in some real-time operating systems. 

    HTH,
    Pete

Reply
  • And also, it looks there is no that much difference between those two delays in time-consume.

    On ARM11 both the L1 caches and the TCMs are single cycle; I wouldn't expect much performance difference (there are scenarios where TCM can be slower than L1 cache). It's worth noting that the main purpose of TCM isn't performance, but predictability, which is necessary for some system routines in some real-time operating systems. 

    HTH,
    Pete

Children