This is the mail archive of the ecos-bugs@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug 1001606] Enable the cache on Kinetis in RAM startup mode


Please do not reply to this email. Use the web interface provided at:
http://bugs.ecos.sourceware.org/show_bug.cgi?id=1001606

--- Comment #22 from Ilija Kocho <ilijak@siva.com.mk> 2012-10-07 18:23:57 BST ---
Created an attachment (id=1950)
 --> (http://bugs.ecos.sourceware.org/attachment.cgi?id=1950)
Round-robin bus arbitration for copy-back DDRAM 121007

There is a subtle behaviour (with RAM start-up) when ICACHE is disabled, DCACHE
is in copy-back mode. Cache purge or sync gets preempted by code execution.
Since the macros for cache syncing and purging contain spin-check of cache
status, a deadlock happens, because of perpetual access to DDRAM, that has
higher priority than the cache flushing.

When ICACHE is enabled there isn't a deadlock, because [after initial misses],
the instructions are fetched from ICACHE so code fetches don't compete for
DDRAM.

The attached code avoids deadlock by introducing round-robin arbitration in
case start-up type is RAM and DCACHE uses copy-back scheme. The patch only
affects Kinetis variant and is incremental to attachment 1948.

Ilija

-- 
Configure bugmail: http://bugs.ecos.sourceware.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]