hallo, MPLAP 7.60, C18 Compiler, PIC 18F4550 Wie kann ich bei einem Array die 256 Byte Grenze umgehen? Gruß Siegfried
Siegfried Saueressig wrote: > hallo, > MPLAP 7.60, C18 Compiler, PIC 18F4550 > Wie kann ich bei einem Array die 256 Byte Grenze umgehen? > Gruß Siegfried Hallo Siegfried, Du musst hierfür das Linker-Skript anpassen. Da drin ist der RAM in Bereiche á 256 Byte aufgeteilt. Da musst du einfach einen Bereich entsprechend vergrößern und dein Array dann mit .i-/.udata dorthin plazieren.
Hallo Micha, meinst du das Linker-Skript des 18F4550? Habe mal den Code beigefügt. Was und wo wird geändert? // $Id: 18f4550.lkr,v 1.3 2004/08/23 18:08:22 curtiss Exp $ // File: 18f4550.lkr // Sample linker script for the PIC18F4550 processor LIBPATH . FILES c018i.o FILES clib.lib FILES p18f4550.lib CODEPAGE NAME=vectors START=0x0 END=0x29 PROTECTED CODEPAGE NAME=page START=0x2A END=0x7FFF CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED ACCESSBANK NAME=accessram START=0x0 END=0x5F DATABANK NAME=gpr0 START=0x60 END=0xFF DATABANK NAME=gpr1 START=0x100 END=0x1FF DATABANK NAME=gpr2 START=0x200 END=0x2FF DATABANK NAME=gpr3 START=0x300 END=0x3FF DATABANK NAME=usb4 START=0x400 END=0x4FF PROTECTED DATABANK NAME=usb5 START=0x500 END=0x5FF PROTECTED DATABANK NAME=usb6 START=0x600 END=0x6FF PROTECTED DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED SECTION NAME=CONFIG ROM=config STACK SIZE=0x100 RAM=gpr3 Gruß Siegfried
Gast
#952050
Du Lädst einfaach einen crack von einschlägigen seiten?
Hallo, Was meinst du mit crack herunterladen? Gruß Siegfried
Siegfried Saueressig wrote: > Hallo Micha, > meinst du das Linker-Skript des 18F4550? Habe mal den Code beigefügt. > Was und wo wird geändert? > Gruß Siegfried Das hier z.B.: DATABANK NAME=gpr1 START=0x100 END=0x1FF in DATABANK NAME=gpr1 START=0x100 END=0x2FF die nächste Zeile löschst du einfach. Dann kannst du dein Array mit 512 Bytes anlegen
Hallo Micha, Danke für die schnelle Info. Beispiel: Aus diesen 3 Zeilen könnte ich eine machen. DATABANK NAME=gpr1 START=0x100 END=0x1FF DATABANK NAME=gpr2 START=0x200 END=0x2FF DATABANK NAME=gpr3 START=0x300 END=0x3FF in DATABANK NAME=gpr1 START=0x100 END=0x3FF Dann habe ich 768 Bytes Habe ich das richtig verstanden? Gruß Siegfried
Siegfried Saueressig wrote: > Hallo Micha, > Danke für die schnelle Info. > > Beispiel: Aus diesen 3 Zeilen könnte ich eine machen. > > DATABANK NAME=gpr1 START=0x100 END=0x1FF > DATABANK NAME=gpr2 START=0x200 END=0x2FF > DATABANK NAME=gpr3 START=0x300 END=0x3FF > > in > > DATABANK NAME=gpr1 START=0x100 END=0x3FF > > Dann habe ich 768 Bytes > > Habe ich das richtig verstanden? > > Gruß Siegfried Richtig verstanden hast du es schon. Allerdings wird die grp3 vom Stack verwendet (s. letzte Zeile). Ich würde eher grp0:grp2 nehmen. Macht 670 Byte´. Aus: DATABANK NAME=gpr0 START=0x60 END=0xFF DATABANK NAME=gpr1 START=0x100 END=0x1FF DATABANK NAME=gpr2 START=0x200 END=0x2FF Das hier: DATABANK NAME=gpr0 START=0x60 END=0x2FF
Hallo Micha, Habe die Zeile übersehen. STACK SIZE=0x100 RAM=gpr3 Gruß Siegfried
Siegfried Saueressig wrote: > Hallo Micha, > Habe die Zeile übersehen. > STACK SIZE=0x100 RAM=gpr3 > Gruß Siegfried Dachte ich mir schon ;-) Gehts denn wenigstens?
Hallo Micha, soweit alles in Ordnung. Danke vielmals. Gruß Siegfried
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.