Hallo,
ich wende mich in meiner Verzweiflung mal an euch.
Erstmal großes Lob an das Forum, es hat mir schon mehr als oft genug
geholfen.
Bei meinem folgenden Problem komme ich jedoch nicht wirklich weiter.
Ich habe mir ein Board mit dem UC3C0256C geätzt der mit zwei 8M x 8 bit
x 4 Banks SDRAM verbunden ist.
Der erste geht von EBI-D[0:7] auf DQ[0:7] sowie EBI-A[0] auf DQM.
Der zweite geht von EBI-D[8:15] auf DQ[0:7] sowie EBI-NWE1 auf DQM.
Laut Datenblatt wird der Rest gleich verbunden sprich alles schön und
gut.
Wenn ich mir nun einen uint8_t Pointer auf AVR32_EBI_CS1_0_ADDRESS lege,
kann ich nur jedes vierte Byte schreiben. Das selbe passiert bei einem
Pointer auf AVR32_EBI_CS1_1_ADDRESS.
Lege ich mir einen uint32_t Pointer auf eines der zwei Adressen, kann
ich lediglich werte bis 255 (4. Byte) schreiben.
Beide Adressen lassen sich zur selben Zeit mit verschiedenen werten
beschreiben was mir sagt das beide ansprechbar sein müssten.
Ich steige durch die Logik aktuell nicht durch und hoffe dass mir hier
geholfen werden kann.
Sollte ich etwas vergessen haben, bitte ich vielmals um Entschuldigung.
MfG Markus
Update:
Es scheint ein Problem bei der Initialisierung zu sein.
Habe es mittlerweile soweit das wenn ich mit einem uint8_t Pointer
folgendes in den SDRAM schreiben will:
1 | SDRAM[0] = 1;
|
2 | SDRAM[1] = 2;
|
3 | SDRAM[2] = 3;
|
4 | SDRAM[3] = 4;
|
Steht am Ende folgendes drin:
1 | SDRAM[0]: 2
|
2 | SDRAM[1]: 2
|
3 | SDRAM[2]: 4
|
4 | SDRAM[3]: 4
|
Schreibe ich das erste oder dritte Byte ist alles ok, schreibe ich
jedoch das zweite, trägt er dieses auch mit beim ersten ein. Schreibe
ich dann das vierte, wird dieses auch bei dem dritten gesetzt.
Nun habe ich testhalber die Daten rückwärts geschrieben und siehe da es
geht.
Hat irgendeiner einen Ansatz wie das zu Stande kommen kann?
Update 2:
Erledigt, läuft.