Hallo Leute,
ich glaube jeder der hier klickt wird denken: "Das hatten wir doch nun
schon tausend mal..."
Ich habe auch schon gesucht und gemacht und alles was mir einfiel
getestet. Jedoch läuft folgendes nicht:
Ich habe für den Mega2560 mit knapp 100 Pins ein kleines Dev-Board
gebaut, was im Augenblick mit 18,432 Mhz läuft. Uart läuft schon prima.
Ich will mal wieder einen SRAM mit 64KB ansteuern, allerdings klappt das
nicht die Bohne.
Mein Ansatz ist folgender:
In der main wird als erstes
1 | XMCRA = 0x80; // External Memory Control Register A : 1000 0000
|
2 | XMCRB = 0x00; // External Memory Control Register B : 0000 0000
|
aufgerufen. Damit aktiviert sich das Externe Interface, was -oWunder-
auch tatsächlich passiert. Allerdings nur auf dem Oszi, wo ich z.B. ALE
und einige Daten- sowie Adressleitungen flackern sehe.
Zusätzlich habe ich in meinem Makefile folgendes stehen:
1 | EXTMEMOPTS = -Wl,--section-start,.data=0x802200,--defsym=__heap_end=0x80ffff
|
Der Mega2560 hat 8KB internen Speicher, weswegen ich meinen Heap
dahinter erst anfangen will. Dadurch liegen alle Variablen extern.
Um nun auf dem Speicher zuzugreifen, mache ich folgendes:
1 | u_char* data_buf = malloc(size * sizeof(uint8));
|
2 | int error = 0;
|
3 |
|
4 | if(!data_buf){
|
5 | printf("Memory size smaller than: %d\r\n", size);
|
6 | error = -1;
|
7 | }
|
Um jetzt zu testen, wieviel Speicher ich eigentlich habe, vergrößere ich
size interationsweise immer um einen Faktor, bis das
fehl schlägt. Dann weiß ich wie viel Speicher ich habe. Natürlich gebe
ich den Speicher immer wieder mit free frei, so dass es keine Probleme
geben sollte.
Laufen tut das allerdings nicht. Ich bekomme die abstrusesten Sachen zu
sehen... Ich habe den Code angehängt, vielleicht könnte da mal jemand
drüber schauen?
1 | Init Board
|
2 | Checking avilable memory...
|
3 | Memory size smaller than: 22758
|
4 | Testing Memory: 22757
|
5 | Memtest successful.
|
6 |
|
7 |
|
8 |
|
9 | Init Board
|
10 | Checking avilable memory...
|
11 | Memory size smaller than: -24578
|
12 | Testing Memory: -24579
|
13 | Memtest successful.
|
14 |
|
15 | Init Board
|
16 | Checking avilable memory...
|
17 | Memory size smaller than: -24594
|
18 | Testing Memory: -24595
|
19 | Memtest successful.
|
Gruß
Timo