Sida 1 av 5

SDCC och pic18

Postat: 10 september 2018, 21:04:23
av Rick81
Trots att jag professionellt jobbar med STs 32 bitare så är det ändå nåt speciellt att koppla upp en gammal PIC med tinybootloader på ett kopplingsdäck till PC via USB Uart och styra lite elektronik, framförallt nu när jag lyckats få frugan intresserad av hobbyprojekt (ja det går faktiskt!).

Håller med styra 8 RCservo via mjukvaruPWM men retar mig på att XC8 kompilatorn i free mode injicerar en massa instruktioner för att man ska uppgradera till betalversion för 995$ (lär ju inte hända).

Så testade med SDCC och gputils och porta koden från XC8 var relativt enkelt,...dessvärre funkar inte den kompilerade koden när den laddats in så undrar om nån på forumet lyckats få SDCC lira med pic18 och vad jag kan ha missat.

Re: SDCC och pic18

Postat: 10 september 2018, 21:22:05
av lillahuset
Det verkar vara "work in progress". Fråga på SDCCs forum: https://sourceforge.net/p/sdcc/discussion/

Re: SDCC och pic18

Postat: 10 september 2018, 21:50:35
av TomasL
Håller med styra 8 RCservo via mjukvaruPWM men retar mig på att XC8 kompilatorn i free mode injicerar en massa instruktioner för att man ska uppgradera till betalversion för 995$ (lär ju inte hända).
Kör XC32, fria versionen, och har int sett något konstigt.
Du får nog precisera dig lite bättre.
Vad är det som stoppas in, och vad är det som inte funkar.

Re: SDCC och pic18

Postat: 10 september 2018, 21:51:36
av Klas-Kenny
Du måste ju inte köpa hela XC8, går fint att prenumerera månadsvis om du bara behöver betalvariant tillfälligt.

Re: SDCC och pic18

Postat: 11 september 2018, 01:09:28
av baron3d
Genererade från CodeBlocks och SDCC en hex-fil och jämförde med en hex-fil från C18.

Detta saknades i filen fån SDCC:

Kod: Markera allt

:0600000062EF01F01200A6
:0600080004EF04F01200F9
:060018000CEF04F01200E1
:02002A000000D4
:04002C000101820E3E
Är ingen expert med är detta inte "fuses" som saknas.

Re: SDCC och pic18

Postat: 11 september 2018, 07:21:08
av Rick81
TomasL: Du kan inte jämför med XC32 för MIPSarkitektur som är baserad på GCC med XC8, det är ju två helt olika kompilatorer.

Här är ett av de exempel som finns på nätet om xc8:
https://www.t4f.org/articles/optimizati ... -pro-mode/


Baron3d: ja det stämmer att fuses eller configuratiinbits ska defineras i SDCC ckod. Men jag kör tinybootloader för programladdning och då är dessa satta vid inladdning av bootloader.

Vilken gputils kör du? När jag körde 1.5.1 fick jag skumt fel på rad 190 nånstans så jag laddadr ned en fixad variant.

Re: SDCC och pic18

Postat: 11 september 2018, 17:12:32
av baron3d
Har laddat ner "sdcc-3.6.0-x64"

https://sourceforge.net/projects/sdcc/files/

Re: SDCC och pic18

Postat: 11 september 2018, 17:40:43
av TomasL
Rick81 skrev:TomasL: Du kan inte jämför med XC32 för MIPSarkitektur som är baserad på GCC med XC8, det är ju två helt olika .
Spelar ingen roll licenserna är ungefär samma, dvs optimering saknas i den fria versionen. Dock lägger naturligtvis inte kompilatorn till en massa extra som du påstår.

Re: SDCC och pic18

Postat: 11 september 2018, 17:50:35
av baron3d
Jo, XC8 gör det.

Re: SDCC och pic18

Postat: 11 september 2018, 17:55:00
av TomasL
Vad läggs till?

Re: SDCC och pic18

Postat: 11 september 2018, 18:34:10
av Rick81
Kolla länken vad XC8 lägger till

Re: SDCC och pic18

Postat: 12 september 2018, 12:37:21
av Rick81
Det var SBS (Skit Bakom Spakarna) som orsakade problemet.

Hade gjort en miss vid portning av uartkoden.

Ska bli intressant att testa SDCC lite mer då den dessutom har optimering.

Re: SDCC och pic18

Postat: 12 september 2018, 14:03:19
av baron3d
Det skall bli spännande att följa. Jag har inte kommit i gång än.
Vad som drev mig i riktning mot SDCC var också optimeringen.
Har idéer om PLC ladder programmering.

Re: SDCC och pic18

Postat: 12 september 2018, 22:29:35
av Rick81
För de som vill testa SDCC körde har jag installerat SDCC för windows på
https://sourceforge.net/projects/sdcc/files/

För gputils 1.5.1 fick jag detta fel
Assertion failed!

Program: C:\PROGRA~2\gputils\bin\gplink.exe
File: gpcofflink.c, Line 190

Expression: sym != NULL


Men finns fixad version på
https://sourceforge.net/projects/gputil ... e/download

I mplab X laddade jag ned SDCC plugin via IDE.

Portning från XC8 till SDCC är princip bara lägga till struct med samma namn som register i datablad .bit
Ex
swdten =1; // xc8, aktivera soft watchdog
wdtcon.swdten=1; // SDCC aktivera soft watchdog

Re: SDCC och pic18

Postat: 13 september 2018, 00:50:34
av TomasL
Rick81 skrev:Kolla länken vad XC8 lägger till
Nja, XC8 lägger nog inte till nånting, utan snarare tar inte bort det som bildas vid en standard kompilering, de instruktionerna kan ses som platshållare som kanske kan behövas, senare.
De tas bort vid optimeringen (som inte finns i den fria XC8an)

Testa en en enkel "if()" i den fria versionen och betalversionen utan optimering påslagen, så brukar det genereras 3 eller flera "goto" i rad.
Slår man på optimeringen i betalversionen försvinner dessa.

Så det handlar mer om att gratisversionen saknar optimering och uppstädning, inte att extra kod läggs till.