www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC18Fxxxx: einzelnen Funktioncode wo anders in den Speicher ablegen


Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich beschäftige mich zur Zeit mit der Programmierung eines PIC18F4520 in 
C unter dem Microchip PICmicro C Compiler (CCS C Compiler).

Der PIC hat einen FlashSpeicher von 32kByte und damit einen Adressraum 
von 0x0000 - 0x7FFF.

Mir geht es jetzt im speziellen darum, den Haupt-Programmcode am Anfang 
zu legen (etwa ab 0x0000) und den Code einer einzelnen Funktion 
"crc32()" ganz ans Ende im Speicher zu platzieren. (etwa 0x7fff - 
crc32_code_length)

Ist so etwas generell möglich? Ich bin der Meinung, dass das unter 
Umständen klappen könnte mit der ORG-Anweisung. Ich mache mir nur sorgen 
um die genaue Berechnung der Sprungadressen. Der PC soll eben nicht im 
Nirwana  verzweigen. Das geht vermutlich mit Setzung geschickter LABEL 
im Programmcode

Vor allem würde mich intzeressieren, wie dazu ein korrekter Programmcode 
ausschaut unter C evtl. auch in Assembler...

Etwa so?

#org 0x0000
main()
{
   crc32()
}


#org 0x7fff-0x600      // wenn 0x600 für den CRC-Programmcode 
ausreicht...
crc32()
{
}


Ich brauche wirklich dringend Hilfe zu dem Thema...
Vielen Dank schon einmal für eure Unterstützung.

Sven

Autor: Proggel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso möchtetest Du das denn machen?

Denk auch bitte daran, daß Dein MPLAB zum Debuggen noch ein wenig 
Speicher benötigt. Unter dem Stichwort Limitations findest Du alle Infos 
dazu.

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann würde ich mal sagen, du schaust dir das CSS-Manual auf der Seite 
117 an
(#org ...). Das muss genau das sein, was du suchst

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven Scholz wrote:
> Ist so etwas generell möglich? Ich bin der Meinung, dass das unter
> Umständen klappen könnte mit der ORG-Anweisung.

Wenn der PIC-Compiler ein ORG erlaubt, dann ist er die absolute 
Ausnahme.
Compiler reagieren sehr allergisch, wenn man ihnen ins Handwerk pfuschen 
will.
Um Code an eine bestimmte Stelle zu plazieren, muß man das dem Linker 
sagen.
Wie das geht, sollte in Deinem Manual stehen.


Peter

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.