Microblaze D-Cache Error

OP (Firma: xxx) #2254169
Lesenswert?
• ▲
▼
Moin,

ich habe folgendes Problem: In meinem Projekt möchte ich den D- und 
I-Cache des Microblaze einschalten. Diese sind auch in der Hardware 
verfügbar und besitzen jeweils 8kB. Beide besitzen den Selben 
Adressbereich von 0x1C00 0000 bis 0x1DFF FFFF.

Bevor ich diese in meinem Programm einschalte, führe ich einen 
Selbsttest durch. Hierzu rufe ich die folgenden Funktionen auf, welche 
von Xilinx zur Verfügung gestellt werden: Xil_TestICacheAll und 
Xil_TestDCacheAll. Beim Testen des D-Cache wird mit eine Fehlermeldung 
per printf ausgegeben:

Error: Invalidate dcache all not working

Leider habe ich hierzu keine Informationen finden können. Vielleicht hat 
ja von Euch jemand schon Erfahrung hiermit gemacht und kann mir sagen 
wie ich diesen Fehler beseitigen kann und was er genau aussagt. Man 
lernt ja gerne was dazu;-)

Besten Dank schon mal im Voraus.
OP (Firma: xxx) #2254276
Lesenswert?
• ▲
▼
Moin Duke,

also ich habe das mit den Adressen so verstanden, dass diese den Bereich 
angeben, welcher von den jeweiligen Caches adressiert werden können. Aus 
diesen Adressbereich können dann die Daten oder Instruktionen vom 
DDR-Speicher in den Cache geladen und bei einem Cache-Hit aus diesem 
ausgeführt werden.
In dem Reference Guide vom Microblaze steht nichts davon das diese 
getrennt sein müssen, oder ich habe es überlesen.
Trotzdem danke für die Antwort.
Gast #2254286
Lesenswert?
• ▲
▼
Tomi Tomsen schrieb:
> also ich habe das mit den Adressen so verstanden, dass diese den Bereich
> angeben, welcher von den jeweiligen Caches adressiert werden können.
Stimmt. Aber ich habe im Datenblatt das hier gefunden:
1
The MicroBlaze data cache can be configured from 64 bytes to 64 kB.
Und 0x1C00 0000 bis 0x1DFF FFFF sind 32 MByte...

Duke
Gast #2255118
Lesenswert?
• ▲
▼
Das eine ist die Grösse des Caches selbst, das andere der cachebare 
Bereich, das passt schon so.

Der Code zu dem Call ist zB. hier:
http://cdbae.hg.sourceforge.net/hgweb/cdbae/cdbae/file/tip/bsp/qnx_v2_00_a/src/common/xil_testcache.c

Wenn das auch "dein" Code ist, hat der Test aber schon einige Haken. Der 
Testbereich wird da im Heap definiert (static u32 Data[DATA_LENGTH]). 
Das Linkersetup muss das natürlich auch in den cachebaren Bereich legen 
und nicht ins BRAM. Interrupts könnten den Test auch stören, weil die 
nicht gesperrt werden.
OP (Firma: xxx) #2255178
Lesenswert?
• ▲
▼
Moin,

also erst einmal vielen Dank für die Antworten:-)

@Duke:

> The MicroBlaze data cache can be configured from 64 bytes to 64 kB.

Den Abschnitt hatte ich auch gelesen, soweit ich das Verstehe wird damit 
nur die Größe des Cache beschrieben, welche ich im EDK unter Option vom 
Microblaze einstellen kann, meine beiden Caches sind jeweils 8kB groß. 
Die waren aus einem Beispiel-Projekt so schon eingestellt. Ich habe nur 
den cachbaren Bereich verkleinert, da der andere Adressbereich als 
Framebuffer dient.

@ Georg:

Ich habe das genauso wie Du verstanden, die Adresse gibt den cachbaren 
Bereich an (bei 32bit ca. 4Gb, minus der Peripherie) und die Größe des 
Cache sagt nur aus wie viel Daten/Instruktionen vorgehalten werden 
können.
Bei dem Code handelt es sich genau um den welcher ausgeführt wird. Ich 
habe das Linkersetup geprüft, die Einstellungen sind so, dass die 
folgenden Daten im DDR-RAM leigen:

Code Sections, Data Sections, Heap und Stack

Mit der Größe des Heap und dem Stack hatte ich ein wenig rum gespielt, 
aber auch mit 100KB hatte ich Problem.

Mir stellt sich die Frage ob ich die Größe des Caches frei wählen kann, 
oder gibt es dort Einschränkungen die ich übersehen habe, außer dass die 
Grenze bei 64kB liegt.
Gast #2255380
Lesenswert?
• ▲
▼
Blöde Frage: Ich kenn den Cache nur vom EDK9.2, und da kann der MB-Cache 
gar kein write-back, sondern nur write-through. Damit wäre natürlich 
auch ein Invalidate hinfällig und damit der ganze Test.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren