mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik umgehen der 256 Byte Grenze C18


Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
MPLAP 7.60, C18 Compiler, PIC 18F4550
Wie kann ich bei einem Array die 256 Byte Grenze umgehen?
Gruß Siegfried

Autor: Der Micha (steinadler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du Lädst einfaach einen crack von einschlägigen seiten?

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Was meinst du mit crack herunterladen?
Gruß Siegfried

Autor: Der Micha (steinadler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Der Micha (steinadler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Micha,
Habe die Zeile übersehen.
STACK SIZE=0x100 RAM=gpr3
Gruß Siegfried

Autor: Der Micha (steinadler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siegfried Saueressig wrote:
> Hallo Micha,
> Habe die Zeile übersehen.
> STACK SIZE=0x100 RAM=gpr3
> Gruß Siegfried

Dachte ich mir schon ;-)
Gehts denn wenigstens?

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Micha,
soweit alles in Ordnung.
Danke vielmals.
Gruß Siegfried

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.