SDCC PICs selber hinzufügen

#4604651
Lesenswert?

Hallo Forumnutzer,


aktuell versuche ich gerade den Einstieg in die PIC-Welt zu wagen. Ich 
hatte schon zufälligerweise 10 PIC16F54IOs hier liegen und wollte damit 
rumexperimentieren.

Wenn ich allerdings für diesen mit dem sdcc Version 3.3.0 unter Linux 
mit folgender Befehlszeile kompilieren möchte
1
sdcc -mpic14 -p16f54 -o out.hex main.c
sagt er mir, dass dieser nicht unterstützt wird.

Gibt es eine Möglichkeit, den PIC16F54 sdcc bekannt zu machen (über 
Konfigurationsdateien o.ä.)?
Unter /usr/share/sdcc/include/pic14/ unter Linux gibt es ja die 
pic14devices.txt. Kann man dort PICs hinzufügen?

Natürlich kann ich auch andere PIC-C-Compiler verwenden. Hatte es jetzt 
erstmal nur mit sdcc versucht.

Ich freue mich auf die Antworten!


Mit freundlichen Grüßen
PHBU


P.S.: Der Compiler sollte den o.g. PIC16F54-I/O sowie den PIC16F747-I/P 
unterstützen.
#4605506
Lesenswert?

Hallo rufus,


habe sdcc geupdated auf 3.6.0. Der PIC16F747 würde jetzt funktioniert. 
Beim anderen muss ich mich nochmal später erkundigen.

Habe allerdings jetzt ein neues Anfängerproblem...

Ich habe folgenden simplen C-Code:
1
#include<stdint.h>
2

3
/// globale Variablen/Konstanten
4

5
void main(void){
6
  /// Initialisierungen
7
  
8
  while(1){
9
    /// Hauptprogramm
10
    
11
  }
12
}

Wenn ich das ganze mit folgendem Befehl kompiliere
1
/opt/sdcc-3.6.0-rc1/bin/sdcc --opt-code-size -I "/opt/sdcc-3.6.0-rc1/share/sdcc/include" --use-non-free -mpic14 -p16f747 -o out main.c

erhalte ich folgende HEX-Datei:
1
:020000040000FA
2
:1000000000008A110328D330FE000030FF0080304A
3
:100010008A110000B2208A11000083120313A1008C
4
:100020007F08A000D530A2000030A3008312031384
5
:100030002008A4002108A500FF30A007031CA1038D
6
:100040002408250403199B2804302207A400A501D5
7
:10005000A50D2308A5072408FE002508FF00803011
8
:100060008A110000B2208A11000083120313A70036
9
:100070007F08A6002208FE002308FF0080308A11B6
10
:100080000000B2208A11000083120313A900A5000A
11
:100090007F08A800A40002302207A400A501A50D36
12
:1000A0002308A5072408FE002508FF0080308A11D8
13
:1000B0000000B2208A11000083120313A500AB00D8
14
:1000C0007F08A400AA00831203132608AA002708A9
15
:1000D000AB00FF30A607031CA7032A082B04031953
16
:1000E00094282808FE002908FF0080308A110000AB
17
:1000F0009F208A11000083120313AA002408831290
18
:1001000003138400831383120313251883172A080B
19
:1001100083120313800083120313A80A0319A90A88
20
:10012000A40A0319A50A6328063083120313A20741
21
:100130000318A30A16288A110000DB280800003AD9
22
:100140000319A628803A0319AD2800347E088400DC
23
:1001500083137F188317000808007F088A007E0831
24
:1001600082000800003A0319BA28803A0319C4280B
25
:10017000FF0100347E08840083137F188317000872
26
:10018000FF00840A000808008A110000AD20FD006D
27
:10019000FE0FFF03FF0A8A110000AD20FC007D085E
28
:1001A000FF007C08080001340034DD3400342C34B6
29
:0C01B000003401340034DB280800003467
30
:00000001FF

Diese ist 1,3 kB groß. Ich glaube nicht, dass das stimmen kann. Ein 
Programm, dass nichts macht kann doch niemals so viel Speicher im µC 
verwenden!?

Was mache ich falsch?

Freue mich auf Antworten!


Mit freundlichen Grüßen
PHBU
Gast #4605661
Lesenswert?

Ich hatte mal nen Kollegen, der angesichts eines winzigen PIC's im SOT23 
mit 256 Programmschritten sagte "Ich sehe keinen Grund, diesen PIC 
nicht in C zu programmieren".

So ähnlich sieht es hier wohl aus: 512 Programmschritte und 25 Byte RAM 
für nen PIC16F54 - soweit ich mich erinnere. Da kann ich nur eines 
sagen: wer so ein Teil nicht in Assembler programmiert und stattdessen 
partout C benutzen will, dem ist nicht zu helfen.

W.S.

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