Login

Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

ARM websites use two types of cookie: (1) those that enable the site to function and perform as required; and (2) analytical cookies which anonymously track visitors only while using the site. If you are not happy with this use of these cookies please review our Privacy Policy to learn how they can be disabled. By disabling cookies some features of the site will not work.

ARM Community: Cache Invalidation in Cortex-A8 - ARM Community

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Cache Invalidation in Cortex-A8 Rate Topic: -----

#1 User is offline   TAK2064 

  • Member
  • Pip
  • Group: Members
  • Posts: 3
  • Joined: 31-January 10

Posted 02 April 2010 - 11:33 PM

Hi,

I am working on Cortex-A8 for my Application development.
Since OS I am using does not support MMU, I have created page table and configured MMU. I have configured the entire DDR as Cacheable (Write Through). The other region in the Memory space is defined as Non-cacheable.

For Invalidation I have followed Set / Way Method. The Other is MVA (Modified Virtual Address, I am not aware of Using it).

My Application has many DMA operations. So whenever a DMA occurs, I need to Invalidate the Cache. I am invalidating the entire Cache by Set/Way method.

But the invalidation of the entire cache consumes around 800uS, which can no where be compromised in my Application. Bcoz DMA may occur for even 32KB. But I will be invalidating the entire Cache; so eventually I will loose the Data in Cache and needs refiling again.

Im invalidating the Entire Cache, Since I don't know which Cache line (Block) would have been updated with this particular address (filled by DMA Data).

Is MVA a better process that I can follow to Invalidate the cache?? How can I use it to invalidate the Cache at a particular Address??
0

#2 User is offline   zerojin 

  • Member
  • Pip
  • Group: Members
  • Posts: 10
  • Joined: 19-November 08

Posted 03 April 2010 - 01:21 AM

View PostTAK2064, on Apr 3 2010, 08:33 AM, said:

Hi,

I am working on Cortex-A8 for my Application development.
Since OS I am using does not support MMU, I have created page table and configured MMU. I have configured the entire DDR as Cacheable (Write Through). The other region in the Memory space is defined as Non-cacheable.

For Invalidation I have followed Set / Way Method. The Other is MVA (Modified Virtual Address, I am not aware of Using it).

My Application has many DMA operations. So whenever a DMA occurs, I need to Invalidate the Cache. I am invalidating the entire Cache by Set/Way method.

But the invalidation of the entire cache consumes around 800uS, which can no where be compromised in my Application. Bcoz DMA may occur for even 32KB. But I will be invalidating the entire Cache; so eventually I will loose the Data in Cache and needs refiling again.

Im invalidating the Entire Cache, Since I don't know which Cache line (Block) would have been updated with this particular address (filled by DMA Data).

Is MVA a better process that I can follow to Invalidate the cache?? How can I use it to invalidate the Cache at a particular Address??


I don't know well OS.
If you want us DMA, you have to Non-cacheable area for DMA.
At the Linux, you could refer the dma-mapping.c (arch/arm/mm/dma-mapping.c)
0

#3 User is offline   TAK2064 

  • Member
  • Pip
  • Group: Members
  • Posts: 3
  • Joined: 31-January 10

Posted 03 April 2010 - 04:35 PM

View Postzerojin, on Apr 3 2010, 01:21 AM, said:

I don't know well OS.
If you want us DMA, you have to Non-cacheable area for DMA.
At the Linux, you could refer the dma-mapping.c (arch/arm/mm/dma-mapping.c)


Hi Zerojin,

Currently, I have tried with MVA invalidation to invalidate the Blocks after DMA.
But even this eventually adds up a delay.
Thanks for the Input. I will try the same at my end.
0

#4 User is offline   Raghavendra 

  • Member
  • Pip
  • Group: Members
  • Posts: 7
  • Joined: 28-April 09

Posted 05 April 2010 - 01:47 PM

View PostTAK2064, on Apr 3 2010, 06:03 AM, said:

Hi,

I am working on Cortex-A8 for my Application development.
Since OS I am using does not support MMU, I have created page table and configured MMU. I have configured the entire DDR as Cacheable (Write Through). The other region in the Memory space is defined as Non-cacheable.

For Invalidation I have followed Set / Way Method. The Other is MVA (Modified Virtual Address, I am not aware of Using it).

My Application has many DMA operations. So whenever a DMA occurs, I need to Invalidate the Cache. I am invalidating the entire Cache by Set/Way method.

But the invalidation of the entire cache consumes around 800uS, which can no where be compromised in my Application. Bcoz DMA may occur for even 32KB. But I will be invalidating the entire Cache; so eventually I will loose the Data in Cache and needs refiling again.

Im invalidating the Entire Cache, Since I don't know which Cache line (Block) would have been updated with this particular address (filled by DMA Data).

Is MVA a better process that I can follow to Invalidate the cache?? How can I use it to invalidate the Cache at a particular Address??



Hi,
I'm also working with CortexA8. I have a problem in enabling MMU. I don't know how to create Page table and configure MMU. Can you just tell me how you have created Page Table and configured MMU.

Thanks & Regards,
M.Raghavendra.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic