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


von Sven Scholz (Gast)


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

von Proggel (Gast)


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.

von andi (Gast)


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

von Peter D. (peda)


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

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
Noch kein Account? Hier anmelden.