PIC16: Problem mit Code Page

#3977044
Lesenswert?

Beim Compilieren wird unter Used Program Space 88Dh (53.4%) angegeben.

Habe in einer Beschreibung des HEX Files folgendes gefunden:
:1000080009002C2083160313861283120313861605
0008 is the address and this time we have to divide it by 2. 0008 / 2 = 
0004h. So the data will be placed at 00000004h memory location.

Meine letzte Zeile ist:
:101DF000FD2E0F30CD000030CE00CB01CC0108000D
=> Adresse 0x0EF8, es hat somit noch Platz

Interessanterweise ist gegen Ende der Datei ein "Sprung" drin:
:100FF000A8002808A10029088A1193260800FF3FAD
:101CE000FF3F83120313A0000C1E742E20089900DE

Es scheint, dass der Compiler die Page1 von hintern auffüllt.
Wie kann ich das ändern? Denn so läuft mein Programm nicht, sobald ich 
über 50% Code Space komme.
Angehängte Dateien:
#3977139
Lesenswert?

Andi F. schrieb:
> Es scheint, dass der Compiler die Page1 von hintern auffüllt.
Substantive werden immer noch groß geschrieben ;-)

Der Compiler erzeugt doch Object Code (relocatable). So lange du keine 
absoluten Adressen verwendest, ist für die Adressierung der Linker 
zuständig, oder?

Man kann dem Linker eine absolute Adresse oder eine Sektion für jede 
Funktion mitteilen.
http://microchip.wikidot.com/faq:38

Andi F. schrieb:
> Denn so läuft mein Programm nicht, sobald ich über 50% Code Space komme.
Warum schaust du dir statt des kryptischen HEX Codes nicht das Assembler 
Listing an?
Was läuft denn nicht? Schon mal debuggt?
Gast #3977182
Lesenswert?

>Habe den Code in zwei .c-Files aufgeteilt.

Hmmm, ganz dumme Frage (und ganz schrägen Verdacht):
Hast du EIN Projekt oder ZWEI?
Oder anders gefragt: Hast du EIN oder ZWEI .HEX files ???

Du solltest 1 Projekt haben, dort sollte die beiden .c Datei zusammen 
enthalten sein und es sollte EINE .hex Datei entstehen.

Wie der Compiler (Linker) das standardmäßig aufteilt, ist 
"normalerweise" egal.

Gruss
#3977319
Lesenswert?

Habe ein Projekt mit zwei .c und ein .hex files.

Da ein Bootloader verwendet wird, sind die letzten 265 Adressen 
freigehalten, durch Aktivierung der ICD.
Ich habe gerade versucht, die Endadresse tiefer zu setzen - und nun geht 
es. Scheint, dass der Bootloader mehr als die angegebenen 265 braucht.

Komisch ist aber immer noch, dass die Page1 von ober her beschrieben 
wird und nicht ab 0x0800.

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