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