Hallo, in anlehnung an meinen Beitrag vor einigen Tagen zum AMD NET186 Board (was keiner zu kennen schien) habe ich noch eine frage. Nach vielen Stunden suchen bin ich im Webarchiv in einer version von 2002 der AMD seite doch auf die Dateien gestoßen die ich brauche. Ein programmierbeispiel habe ich angehängt. Um folgendes geht es auch in meiner Frage. Der speicher ist wie folgt auf geteilt: 0h-7ffff -> RAM; 80000h - FFFFFh -> ROM (Flash). Die serielle schnittstelle nimmt die *.hex dateien (mittels MAKEHEX aus exe erstellt) entgegen und bringt sie an ihren Adressen im speicher unter. In der Main file steht: ** For this version of the program, I will choose to put SRAM at ** 80000h, and modify UMCS to move start of flash to C0000h. THis is ** because E86MON puts it's stack at the top of DRAM at 7ffffh, and moving ** DRAM down would crash E86MON. ** Note that if this code is saved in Flash by an E86MON download, it will ** be saved at 80000h. When E86MON runs it, it moves the code to DRAM first. ** Then the code will make the lower part of Flash not available. So ** a reset must be pressed after running the code to regain access to the ** lower part of Flash. ICh kann aber nirgendwo im Programmcode irgendwas entdecken das das verursachen könnte (außer tonnenweise defines die ich nicht durchblicke). Auch in den batchdateien nichts zu finden. Kann mir bitte jemand erklären wie man dafür sorgt das ein C programm an eine bestimmte stelle im Speicher geschrieben wird? In ASM gäbe es die ORG direktive. Gibt es sowas ähnliches auch in C? Aber bei einer EXE macht das ja eigentlich überhaupt keinen sinn oder? mfg. Sebastian
> Kann mir bitte jemand erklären wie man dafür sorgt das ein C > programm an eine bestimmte stelle im Speicher geschrieben wird? > In ASM gäbe es die ORG direktive. Gibt es sowas ähnliches auch in C? In C uebernimmt dein Linker die Zuordnung. Da kannst du irgendwo festlegen wo ein bestimmtes Segment im Speicher liegen soll. Und in deinem Programm kann man dann mit Herstellereigenen Anweisungen festlegen welches Segment er gerade benutzen soll. Mit anderen Worten Handbuch zu deinem Compiler lesen. :-) Olaf
Danke. Ich hatte ebenfalls den Linker im verdacht. Der Autor hat VC++ (glaube version 6 benutzt) Zitat aus der Batchdatei zum herstellen: link /NOD /NOI /STACK:5120 /ONERROR:NOEXE main + pcndrv + pnpappn + tipleds ,ethrdemo,ethrdemo,c:\msvc\lib\oldnames.lib + c:\msvc\lib\llibce.lib,; ICh sehe hier nur Stack:5120. Ich weiß zwar nicht was es bewirkt aber nach einer Startadresse für das programm klingt es irgendwie nicht. Ansonnsten konnte ich im CODE nichts entdecken. Was allerdings daran liegen kann das ich nicht weiß wonach ich suchen muss. HAst du vielleicht einen tipp. Gibts noch die msdn zu vc von vor 10 jahren ;). Sebastian
Bei VC++ kann man Anweisungen an den Linker mit #pragma-Anweisungen in den Quelltext einfügen: http://support.microsoft.com/kb/153901 Vielleicht hilft es als Stichwort zur Suche.
Ja den tipp mit pragma find ich gut (kannte ich noch garnicht). Habe alle dateien durchsucht, nichts derartiges zu finden. gibt es noch eine andere möglichkeit im quelltext das festzulegen?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.