Forum: Mikrocontroller und Digitale Elektronik Probleme: PIC 16f627 C Programmierung mit SDCC


von Armin (Gast)


Lesenswert?

Hallo,
ich habe ein Problem mit dem PIC 16f627 und SDCC.
Ich wollte heute versuchen ein Programm zu Kompilieren welches dann auf 
dem 16f627 läuft.
Das Beispiel Programm habe ich von 
http://www.micahcarrick.com/04-25-2005/pic-c-programming-linux.html 
genommen welches ja die Kompilierung in C ermöglichen soll.

SDCC deswegen da es OpenSource ist und uneingeschränkt im vergleich zu 
anderen lösungen nutzbar ist und auch unter Linux verfügbar ist.

Auch wenn die anleitung des Kompilierens für Linux ist so sollte der 
Programmcode ja auch unter Windows Kompiliert werden können

Wie bin ich vorgegangen ?
-Code genomen in eine Datei reinkopiert und diese mit endung c versehen. 
(auch aus der tar.gz datei)
-Die Datei nach c:\programme\sdcc\bin kopiert
-Über die Komandozeile in das Verzeichniss c.\programme\sdcc\bin geganen
-Dort den Befehl
--------------------------------------------
(Eigene Datei erstellt und den Code reinkopiert)
C:\Programme\SDCC\bin>sdcc --debug -mpic14 -p16f627 test.c

test.c:22: syntax error: token -> '0x3FFB' ; column 7

############################################
(Die c Datei aus der Tar.gz genommen)
C:\Programme\SDCC\bin>sdcc --debug -mpic14 -p16f627 toggle_led.c
Der Befehl "gpasm" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

C:\Programme\SDCC\bin>
------------------------------------------------

Nun Stehe ich da mit meinem Kurzen Hemd und weiss nicht weiter. Hat von 
euch evt jemand einen Rat ?

Gruss Armin

von holger (Gast)


Lesenswert?

>Der Befehl "gpasm" ist entweder falsch geschrieben oder
>konnte nicht gefunden werden.

Du musst die gputils auch noch installieren.

von Armin (Gast)


Lesenswert?

Hallo Holger,
danke für die schnelle antwort.

Ich habe nun das gputils installiert.
Dann habe ich das gpasm in den Gleichen Ordner kopiert. Damit blieb dann 
die Fehlermeldung das das Programm unbekannt ist aus.

Jedoch erhielt ich nun die Meldung
C:\Programme\SDCC\bin>sdcc --debug -mpic14 -p16f627 toggle_led.c
toggle_led.asm:12:Error [179] Unable to open file "p16f627.inc" - No 
such file or directory


Ich habe dann die Headerdatei p16f627 von den gputils ebenfals in den 
gleichen Ordner kopiert und erneut den Befehl eingegeben.

C:\PROGRA~1\SDCC\bin>sdcc --debug -mpic14 -p16f627 toggle_led.c
error: linker script not specified

Jetzt will er irgendwas von einem Linker ?

Gruss Armin

von Info (Gast)


Lesenswert?

Ich weiß, das sind alte Fragen.

Armin schrieb:
> test.c:22: syntax error: token -> '0x3FFB' ; column 7

Die Initialisierung mit einer Adresse per "at" heisst nun 
(sdcc-snapshot-i586-mingw32msvc-20131123-8897) offenbar "__at".

Armin schrieb:
> Jetzt will er irgendwas von einem Linker ?

sdcc ruft auch gleich den Linker aus GPUTILS auf. Ich nehme an, wenn da 
was mit der Installation nicht ganz stimmt (Pfade), braucht er eine 
zusätzliche Angabe. Evtl. kommt die normalerweise auch aus einem 
Makefile? Man kann aber dem Linker das Skript angeben, über den Umweg 
sdcc, z.B.:
1
sdcc-snapshot-i586-mingw32msvc-20131123-8897\sdcc\bin>sdcc --use-non-free -mpic14 -p16f684 -V main.c -Wl -s16f684_g.lkr

Zur Warnung
1
main.asm:1215:Message[312] Page or Bank selection not needed for this device.  No code generated.
gibt es zwar einen Bugreport, aber keine Lösung. Anscheinend kann man es 
ignorieren?

von YOYOkoko (Gast)


Lesenswert?

try step by step
e.g.
CC=C:\SDCC\SDCC\bin\sdcc.exe
AS=C:\gputils\bin\gpasm.exe
LN=C:\gputils\bin\gplink.exe
FAMILY=pic14
PROC=16f84
SRC=main.c

bystep:
  # compile only
  $(CC) -c  $(OPTS) -m$(FAMILY) -p$(PROC)  $(SRC)
  $(AS) -o main.o -c main.asm
  $(LN) -C -I"C:\SDCC\bin\..\lib\pic14" 
-I"C:\SDCC\bin\..\non-free\lib\pic14" -s16f84_g.lkr -w -r -o main main.o 
libsdcc.lib pic16f84.lib

von YOYOkoko (Gast)


Lesenswert?

OPTS=--use-non-free --no-extended-instructions --out-fmt-ihx

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