eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaProgramowanie PIC-ówRe: Programowanie PIC-ów
  • Data: 2014-06-19 01:43:02
    Temat: Re: Programowanie PIC-ów
    Od: Marek <f...@f...com> szukaj wiadomości tego autora
    [ pokaż wszystkie 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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: