PIC18Fxxxx: einzelnen Funktioncode wo anders in den Speicher ablegen

Gast #1125150
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
#1125191
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren