-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
.pl!news.nask.org.pl!news.unit0.net!usenet.blueworldhosting.com!feeder01.bluewo
rldhosting.com!peer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.
highwinds-media.com!nx01.iad01.newshosting.com!newshosting.com!newsfeed.neostra
da.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrad
a.pl.POSTED!not-for-mail
From: Marek <f...@f...com>
Newsgroups: pl.misc.elektronika
Subject: Re: Programowanie PIC-ów
Date: Thu, 19 Jun 2014 01:43:02 +0200
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
In-Reply-To: <lnsf4n$hke$1@portraits.wsisiz.edu.pl>
References: <lnsf4n$hke$1@portraits.wsisiz.edu.pl>
<lnsf4n$hke$1@portraits.wsisiz.edu.pl>
Message-ID: <a...@n...neostrada.pl>
User-Agent: Groundhog Newsreader for Android
Lines: 67
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 83.7.252.221
X-Trace: 1403134983 unt-rea-a-02.news.neostrada.pl 2148 83.7.252.221:49820
X-Complaints-To: a...@n...neostrada.pl
X-Received-Bytes: 3853
X-Received-Body-CRC: 1307790505
Xref: news-archive.icm.edu.pl pl.misc.elektronika:666640
[ ukryj nagłówki ]On Wed, 18 Jun 2014 18:35:31 +0200, Atlantis <m...@w...pl>
wrote:
> 1) Jak to jest z tymi toolchainami? Jest kilka różnych kompilatorów,
> które mogą współpracować z MPLAB. Są między nimi jakieś istotne
różnice,
> np. w składni języka C? A jeśli tak, to które rozwiązanie jest
> najbardziej "standardowe"?
Masz do wyboru 3:
C18 - "starszy" kompilator Microchipa dla środowiska MPLAB. Jest
dedykowanym kompilatorem do rodziny mcu oznaczonych symbolami pic18f*
(architektura PIC16).
XC8 - najnowszy kompilator Microchipa, następca C18.
SDCC - kompilator GNU mający wsparcie dla pic18f*, ale wygenerowany
kod nie jest tak optymalny jak C18 i XC8
Jest jeszcze HiTec , który został przejęty przez Microchip i na nim
powstał XC8.
> 2) Jest jakiś odpowiednik biblioteki pgmspace z AVR-ów,
pozwalającej na
> umieszczanie danych w pamięci programu? Jakie polecenia odpowiadają
np.
> PROGMEM albo PSTR("tekst")?
C18 wymaga odpowiedniego prefixu przed deklaracją stałych (np.
tablic), nie można mieszać wskaźników do rom z wskaźnikami do ram.
Ten problem wyeliminowano dopiero w XC8. Sdcc podobnie jak XC8 nie
"odróżnia" wskaźników rom/ram więc jest wygodniejszy, ale generuje
większy kod niż XC8/C18
> 3) Ograniczenia dotyczące stopnia optymalizacji kodu w darmowych
> wersjach kompilatorów mają jakieś znaczenie w praktyce, czy nie
trzeba
> się tym przejmować?
Z darmowych to pozostaje Ci tylko SDCC, ale generuje spuchnięty kod w
porównaniu z XC8/C18. Może być nawet 2x większy. Używałem dużo sdcc,
nie miałem problemów z stabilnością kodu natomiast przesiadłem się na
C18 ze względu na lepszą optumalizację pod względem wielkości kodu.
Podsumowując:
C18 stabilny kod, dobra optymalizacja pod względem wielkosci kodu
wynikowego, w miarę szybka kompilacja, działa pod wine, ma pewne
odstępstwa od standardów np: wskazniki ram/rom, domyślny brak
zerowania zmiennych przy inicjalizacji, domyślne ograniczenia
wielkosci zmiennych w ram do rozmiaru jednego banku tj. 255 bajtów
(można to ominąć łącząc banki w skrypcie linkera). Wspiera chyba
wszystkie 18f*
XC8 dobra optymalizacja pod wzgledem wielkości kodu, koszmarnie wolna
kompilacja w porównaniu do super szybkiego sdcc.
SDCC prosty kompilator, bardzo szybki w kompilacji, w miarę
trzymajacy się standardów, najnowsze mcu z seri 18f mogą nie być
wspierane (brak plików nagłówkowych definiujacych rejestry, ale można
zapożyczać je z C18 bo zachowano pewną kompatybilność w przestrzeni
nazw rejestrów z C18.
Do prostych projektów nada się SDCC, ale trzeba zwrócić uwagę na
wielkość kodu, bo jeśli w trakcie rozwoju softu może się okazać że
kod nie zmieści się w flash.
Jeśli chcesz korzystać z eth, to raczej polecam C18/XC8 bo pod nie
masz gotowe źródła stosu tcpip Microchipa.
--
Marek
Następne wpisy z tego wątku
- 19.06.14 01:44 Marek
- 20.06.14 11:57 Atlantis
- 21.06.14 01:24 Marek
- 21.06.14 10:45 Atlantis
- 21.06.14 12:21 Marek
- 21.06.14 13:55 Marek
- 21.06.14 18:12 Atlantis
- 21.06.14 19:23 Marek
- 22.06.14 00:12 Atlantis
- 22.06.14 01:28 Marek
- 23.06.14 08:07 Atlantis
- 23.06.14 08:30 Zbych
- 23.06.14 10:44 Marek
- 23.06.14 10:47 Zbych
- 23.06.14 11:10 Marek
Najnowsze wątki z tej grupy
- Ściąganie hasła frezem
- Koszyk okrągły, walec 3x AA, na duże paluszki R6
- Brak bolca ochronnego ładowarki oznacza pożar
- AMS spalony szybkim zasilaczem USB
- stalowe bezpieczniki
- Wyświtlacz ramki cyfrowej
- bateria na żądanie
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
Najnowsze wątki
- 2025-01-28 Ściąganie hasła frezem
- 2025-01-28 Rok 1973
- 2025-01-28 Warszawa => Programista Dynamics 365 CRM <=
- 2025-01-28 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-01-28 Warszawa => Młodszy Specjalista ds. wsparcia sprzedaży <=
- 2025-01-28 Poznań => iOS Developer (Swift) <=
- 2025-01-28 Poznań => Dyspozytor Międzynarodowy <=
- 2025-01-27 Białystok => System Architect (Java background) <=
- 2025-01-27 Warszawa => Programista Dynamics 365 CRM <=
- 2025-01-28 nr KW to jednak dana osobowa
- 2025-01-27 Lokalizacja telefonu
- 2025-01-27 OT musk
- 2025-01-27 Bydgoszcz => Specjalista ds. Sprzedaży (transport drogowy) <=
- 2025-01-27 Warszawa => Java Developer <=
- 2025-01-27 Warszawa => Data Engineer (Tech Lead) <=