www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ORG anweisung in C


Autor: Sebastian (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.