[U-Boot] ELF_RELOC causes strange I-cache issues

Heiko Schocher hs at denx.de
Thu Oct 21 12:50:01 CEST 2010


Hello Albert,

Albert ARIBAUD wrote:
> Le 21/10/2010 12:11, Reinhard Meyer a écrit :
>> Hello,
>>
>> observation here:
>>
>> ICACHE is always ON. No crash with "usb read 21000000 0 1000"
>> Sorry that I can't reproduce the problem here, not even with 10000
>> blocks.
>> (tried a few dozen times)
>> (ARM926EJS - AT91SAM9XE)
>> (based on TOT 3ed16071b006dbda65070a4143db74da469f6e30 of 35h ago)
>>
>> But with DCACHE ON, the USB Stick is not found - maybe a timing problem:
>>
>> TOP9000>  dc off
>> Data (writethrough) Cache is OFF
>> TOP9000>  usb reset
>> (Re)start USB...
>> USB:   scanning bus for devices... 2 USB Device(s) found
>>         scanning bus for storage devices... 1 Storage Device(s) found
>> TOP9000>  dc on
>> Data (writethrough) Cache is ON
>> TOP9000>  usb reset
>> (Re)start USB...
>> USB:   scanning bus for devices... ERROR: CTL:TIMEOUT
>> 2 USB Device(s) found
>>         scanning bus for storage devices... 0 Storage Device(s) found
>> TOP9000>
>>
>>
>> Reinhard
> 
> If the USB controller uses DMA, then the DCache issue probably has to do
> with making sure to flush the (relevant lines of) cache before
> memory-to-device DMAs and to invalidate the (again, relevant lines of)
> cache after device-to-memory DMAs.

Yep. I think if you want to use dcache here, you have to activate
CONFIG_EHCI_DCACHE and implement the flush_dcache_range(),
invalidate_dcache_range(), flush_invalidate() functions for
your plattform, if not implemented yet.

> And I suggest we move this dcache issue to its own discussion thread.

Yep.

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list