Hallo Leute,
ich stoße immer wieder auf diese Frage, da ich bisher erst einmal
geschaft habe SRAM an einen MEGA128 anzubinden. Damals war eine
zusätzliche Assember Datei notwendig, damit der externe Speicher zu
allererst initialisiert wird, bevor irgendwas anderes passiert.
Ich frage mich zum einen, ob das immernoch notwendig ist und zum anderen
ob es irgendwo ein Step-By-Step Tutorial gibt, das erklärt was genau zu
tun ist um einen bereits laut Datenblatt angebundenen und verlöteten
externen 64K Speicher an einen Mega128(0)/256(0) anzubinden.
Gruß und vielen Dank,
Timo
Bevor ich wieder stundenlang nach dem Problem suche, warum meine CPU
beim ersten benutzen einer Variable abraucht, wollte ich lieber fragen,
ob es ein Tutorual dazu gibt... :)
Hi
>Bevor ich wieder stundenlang nach dem Problem suche, warum meine CPU>beim ersten benutzen einer Variable abraucht, wollte ich lieber fragen,>ob es ein Tutorual dazu gibt... :)
Und was verstehst du von den, was im Datenblatt steht, sogar mit
Code-Beispiel, nicht?
MfG Spess
Timo Birnschein schrieb:
> Damals sollten die Register XMCRA und XMCRB bereits direkt zu Beginn> gesetzt werden.> ...> Ich würde aber gerne, dass folgendes ausreicht:
Nach "wollen" geht es aber nicht. Wann das External-Memory-Interface
initialisiert werden muss, hängt davon ab, für was du den externen
Speicher benutzen willst. Denn logischerweise muss es initialisiert
sein, bevor es zum ersten Mal benutzt wird. Eine Initialisierung in Main
ist nur dann nicht zu spät, wenn du keine der Standard-Sections in den
externen Speicher legst, sondern ihn komplett selbst verwaltest. Wenn du
aber z.B. die .data-Section dort platzierst, muss der
Interface-Initialisierungscode natürlich vor den Code, den der Compiler
für die Initialisierung von .data erzeugt.
Gut, dass es bei Mikroprozessorprogrammierung nicht ums "wollen" geht,
ist mir auch klar - dazu bin ich lang genug dabei.
Stefan, ich verstehe deine Aussage. Mir reicht es, wenn ich mit malloc()
während des laufenden Programms Speicher allokieren kann.
Dazu habe ich im Makefile folgendes einkommentiert:
Also wird mein Speicher nur für den heap verwendet. Reicht es in diesem
Fall aus das Speicherinterface in main() auf die von mir beschriebene
Art zu initialisieren, oder muss ich zusätzlich noch etwas beachten?
Gruß
Timo
Timo Birnschein schrieb:
> Also wird mein Speicher nur für den heap verwendet.
Meinst du? Kommt dir da das "--section-start,.data=0x802200" nicht
irgendwie verdächtig vor?
> Reicht es in diesem Fall aus das Speicherinterface in main() auf die von> mir beschriebene Art zu initialisieren
"diesem Fall" bezogen auf deine aktuellen Einstellungen: nein.
"diesem Fall" bezogen auf "nur Heap": ja.
Zugegen, sehr verdächtig. Ich finde lustig, das dies im ReferenzMakeFile
so drin steht - als Hilfe.... :(
Kann ich das einfach löschen und abändern zu
EXTMEMOPTS = -Wl,--section-start,--defsym=__heap_end=0x80ffff
oder wie muss die Zeile aussehen? Ich würde meinen, dass ich den Anfang
des Heap ebenfalls noch definieren muss und nicht nur das Ende.
Gruß und vielen Dank für den Hinweiß!
Timo Birnschein schrieb:
> Zugegen, sehr verdächtig. Ich finde lustig, das dies im ReferenzMakeFile> so drin steht - als Hilfe.... :(
Ich habe mal einen Bug-Report gemacht:
https://sourceforge.net/tracker/?func=detail&aid=2925185&group_id=68108&atid=520074> oder wie muss die Zeile aussehen? Ich würde meinen, dass ich den Anfang> des Heap ebenfalls noch definieren muss und nicht nur das Ende.