czwartek, 7 marca 2019

PIC32MM - Tutorial part 1 - START

Ponieważ widzę coraz większe zainteresowanie serią mikrokontrolerów 32-bitowych PIC32MM firmy Microchip a tutoriali jako takich brakuje. Postanowiłem wyjść na przeciw oczekiwaniom osób chcących poznać te bardzo sprytne mikrokontrolery i uporządkować jakoś wiedzę o nich. Stąd pomysł na tutoriale. Na początek kilka słów o serii. W portfolio Microchipa PIC32 mamy kilka serii MM, MX, MK, MZ.  Seria MM jest najmłodszą serią charakteryzuje się stosunkowo małą ilością błędów w siliconie stąd wniosek, że proces technologiczny został tutaj dopracowany. Seria MM posiada dwa podtypy GPL i GPM. Podtyp GPL posiada mniejsze obudowy ale jest wykastrowany z I2C. Podtyp GPM , którym my będziemy się zajmować występuje w obudowach 28, 48 i 64 pin i ma na pokładzie I2C.

Poniżej schemat blokowy co z grubsza mamy na pokładzie ale jest to tylko pogląd bo w szczegółach tego jest więcej. W linku poniżej artykułu znajdziemy więcej informacji.


Mikrokontrolery PIC32 oparte są o rdzenie MIPS. Ale jak się okazuje nie tylko Microchip wykorzystuje te rdzenie, zerknijmy na informację tutaj.
Co takiego szczególnego ma seria PIC32MM czym może wzbudzić nasze zainteresowanie. Wypunktuję kilka pierwszych z brzegu powodów ,które przychodzą mi do głowy :
  • wsparcie ze strony MCC (MPLAB Code Configurator), co daje nam możliwość bajecznie prostej konfiguracji peryferiów i wygenerowanie wysokiej jakości  kodu z którego możemy się uczyć również języka C.
  • bardzo dobrze przygotowany plik nagłówkowy opisujący rejestry. Dostęp do rejestrów jest bajecznie prosty.
  • łatwa dostępność i niski koszt,
  • niski próg wejścia w świat 32 bit,
  • mała ilość błędów w siliconie,
  • bardzo stabilny zegar wewnętrzny RC z niskim błędem, który popędzimy na 24 MHz, nie trzeba do każdego peryferium oddzielnie tak jak w ARM ustawiać zegara.
  • optymalizacja wydajności dla operacji 8-bitowych,
  • bardzo rozbudowane moduły czasowe MCCP i SCCP , które zasterują najbardziej wydumaną konfiguracją w urządzeniach takich jak np. silniki BLDC etc.
  • spora ilość pamięci jak na low entry , 256 kB FLASH i 32 kB RAM,
  • Configurable Logic Cells (CLC) w ilości 4 szt
  • Duża odporność na zakłócenia co jest cechą wszystkich PIC-ów. Dlatego po PIC-e chętnie sięga przemysł, który jest jednym z głównych odbiorców produktów Microchipa.
  • inne nie wymienione.

Podstawową zaletą  PIC32MM  jest to , że tutaj nie musimy uczyć się abstrakcyjnych bibliotek oderwanych od sprzętu typu HAL tak jak to jest w świecie ARM. Nie stajemy się tym samym niewolnikiem tych bibliotek, które oddalają nas od poznania mikrokontrolera i trzymają nas od aspektów sprzętowych na dystans. W PIC32MM programowanie oparte jest na jednym pliku nagłówkowym opisującym rejestry i jest to proste i efektywne podejście do programowania a przede wszystkim dające dużą satysfakcję. PIC32MM są proste w programowaniu i dlatego są idealnym ekosystemem 32-bitowym dla początkujących w tym świecie.


Tutorial dedykuję osobom zainteresowanym światem 32-bitowym i poszukującym w tym świecie swojego miejsca a szczególnie tym , którzy dotychczas mieli do czynienia tylko z mikrokontrolerami 8-bitowymi  takimi jak np. AVR. Z ekosystemu PIC32 możemy potem migrować do bardziej wymagającego ekosystemu ATSAM opartego o rdzeń ARM.

Ponieważ zakładam, że ludzie są z natury leniwi ,więc wolą korzystać z gotowych produktów niż polutować sobie moją propozycję płytki developerskiej , której projekt dostępny jest za darmo . Dlatego tutorial oprę o płytkę Microchipa z serii Curiosity . Będzie to dokładnie ten model co poniżej.

Płytkę nabędziemy najszybciej tutaj jeśli kupimy dwie to wejdziemy w pułap darmowej dostawy. Na pokładzie płytki znajdziemy PIC32MM0256GPM064.
Płytka wyposażona jest w kilka gadżetów takich jak LED RGB, przyciski, potencjometr i to co najistotniejsze dwa gniazda rozszerzeń do których podłączymy "milion" płytek serbskiej firmy Mikroelektronika.
Płytka jest bardzo solidnie zrobiona to nie jest nisko budżetowy "Nucleo'inowy tworek" ale kawał solidnej roboty "płytkarskiej". Od spodu płytki mamy solidne gumowe dystanse i nie porysujemy stołu. Płytki Microchipa można używać do celów komercyjnych , przynajmniej ja nie znalazłem tutaj ograniczeń w przeciwieństwie do popularnych u nas płytek np. dla STM32.
Na płytce znajduje się programator i debugger dla ciekawości oparty jest na 16-bitowym PIC24FJ.

No dobrze płytka już jest teraz przejdźmy do części software'owej. Aby programować PIC-e jakiekolwiek potrzebujemy dwóch elementów środowiska i kompilatora. Środowisko jest jedyne słuszne i nazywa się MPLABX-IDE, jest to bardzo przyjazne i intuicyjne środowisko w którym szybko się odnajdziemy. W sumie w/g mnie jeśli chodzi o intuicyjność to chyba najlepsze środowisko na rynku wśród wszystkich producentów amen.
Drugim elementem po instalacji MPLABX-IDE jest instalacja kompilatora. W naszym przypadku będzie to kompilator XC32. Programy te ściągniemy stąd :

MPLABX-IDE
XC32

Programy są darmowe również do użytku komercyjnego i na ten aspekt zwracam szczególną uwagę bo u niektórych producentów  np. w świecie ARM-a to nie jest oczywiste . Częstym utyskiwaniem ze strony np. malkontentów jest to, że darmowy kompilator nie ma optymalizacji kodu a nawet podstępnie rozpasa ten kod a wersja z optymalizacją kodu jest płatna w dziesiątkach tysięcy dolarów. I to ma zdaniem malkontentów być przyczyną aby PIC-ów nie tykać.

Uprzejmie informuję , że tak , kompilator w wersji z optymalizacją jest płatny. Wersja dozgonna w postaci klucza USB kosztuje tyle ( i nie są to bynajmniej dziesiątki tysiące dolarów) :

od proponowanej kwoty odejmijmy 50 % promocyjnego rabatu . Ale mimo wszystko to i tak drogo jak na hobbystę no i po co nam wersja dożywotnia skoro tak długo żyć nie będziemy :). Ale spoko, są jeszcze inne opcje jak np darmowa wersja na 60 dni, lub licencja miesięczna w kwocie ok 24 EUR. Jako hobbysta nigdy nie miałem potrzeby użycia kompilatora w wersji PRO, zasoby pamięci PIC32MM są na tyle duże , że to rozpasanie kodu jest aspektem pomijalnym w większości przypadków. Ale nawet gdyby taka potrzeba zaistniała to mamy wersje niskobudżetowe dostępu do optymalizacji kodu lub darmowe na 60 dni. W każdym momencie możemy sobie wygenerować w MPLABX-IDE porównanie ile zajmie miejsca w pamięci wersja programu bez optymalizacji a ile z optymalizacją.

Malkontenci punktujący Microchipa w 99 % wywodzą się  ze świata ARM. Co ciekawe punktując Microchipa za płatną wersję optymalizacji w kompilatorze nie zauważają, że w świecie ARM narzędzia i środowiska  potrafią być słono płatne . Weźmy pierwszy lepszy przykład np. flagowe środowisko ARM'a Keil w wersji darmowej mamy ograniczenie kodu do 32 kB. A licencja roczna tego programu to koszt 3800 USD :




Poza tym Microchip nie rozróżnia stosowania komercyjnego i niekomercyjnego tak jak to czyni konkurencja i to za równo w  programach jak i narzędziach i to jest ogromny plus dla tej firmy.
No dobrze koniec gadki szmatki , bierzemy się za konkrety.

INSTALACJA ŚRODOWISKA MPLABX-IDE W LINUX

Po ściągnięciu pliku z MPLABX-IDE należy go rozpakować. Ściągnięty plik znajdziemy w katalogu Pobrane. Ja w swoim Linuxie Mint 18.3 Cinnamon 64-bit klikam w nazwę pliku i proces rozpakowania robi się automatycznie. Rozpakowujemy do katalogu Pobrane , rozpakowany plik będzie wyglądał jak poniżej, :
MPLABX-v5.15-linux-installer.sh (5.15 to aktualny numer wersji)
Teraz musimy uruchomić konsolę Linuxową :

W konsoli wskazujemy katalog gdzie jest rozpakowany nasz plik  np. 
cd /home/wat/Pobrane/
Będąc w ścieżce katalogu Pobrane wpisujemy :
sudo chmod u+x MPLABX-v5.15-linux-installer.sh (nadajemy uprawnienia dla pliku). Podajemy hasło admina i enter.
Ostatnią czynnością będzie uruchomienie instalatora. W konsoli wpisujemy :
sudo ./MPLABX-v5.15-linux-installer.sh Podajemy hasło admina i enter.
I tyle ,instalacja rusza kilka razy trzeba kliknąć Next a na końcu Finish. Sam proces instalacji jest błyskawiczny przynajmniej w Linuxie.

INSTALACJA KOMPILATORA XC32 W LINUX
Po ściągnięciu pliku z XC32 nie musimy go rozpakowywać. Plik wygląda jak poniżej : 
xc32-v2.15-full-install-linux-installer.run
i znajdziemy go w katalogu Pobrane. Aby go zainstalować wchodzimy do konsoli Linux :
W konsoli wskazujemy katalog gdzie jest rozpakowany nasz plik  np. 
cd /home/wat/Pobrane/
Będąc w ścieżce katalogu Pobrane wpisujemy :
sudo chmod u+x xc32-v2.15-full-install-linux-installer.run (nadajemy uprawnienia dla pliku). Podajemy hasło admina i enter.
Ostatnią czynnością będzie uruchomienie instalatora. W konsoli wpisujemy :
sudo ./xc32-v2.15-full-install-linux-installer.run Podajemy hasło admina i enter. Klikamy kilka razy Next a w jednym okienku zaznaczamy "ptaszka".
Mamy zainstalowane środowisko MPLABX-IDE i kompilator XC32. Czas zatem uruchomić to. Klikamy w ikonkę MPLABX-IDE , która nam się po instalacji pojawi na pulpicie.
Pierwszą czynnością po uruchomieniu środowiska będzie dołączenie pluginu MCC (MPLAB Code Configurator) za pomocą , którego będziemy mogli w wygodny sposób konfigurować nasz mikrokontroler.

Instalacja MPLAB® Code Configurator
- uruchom MPLABX IDE
- wejdź w zakładkę Tools/Plugins/Available Plugins
- zaznacz MPLAB Code Configurator i Install

Po instalacji pluginu pojawi nam się na belce środowiska ikonka MCC przypominająca odznakę policyjną. Główne okienko środowiska wygląda mniej więcej jak poniżej :


Okienko Start Page jest nam nie potrzebne do szczęścia i można je zamknąć na amen. Jak widzimy środowisko jest miłe dla oka, nie ma pierdyliona ikon jak np w  Eclipsowych środowiskach. Jest cacy miło i przyjemnie , czujemy się bezpiecznie i komfortowo :) Witaj w świecie Microchipa :)

Na tym zakończę Tutorial nr .1 , który jest wstępem do dalszego działania. Jak widać nie wymagało to jakiegoś szczególnego wysiłku w tym umysłowego. Instalacja w środowisku Windows zapewne jest jeszcze prostsza.

Pozdrawiam
picmajster.blog@gmail.com



Linki :

MPLABX-IDE
XC32
PIC32MM USB Curiosity Development Board
MPLABX-IDE - Get Started 

11 komentarzy:

  1. Nareszcie powrót do PIC32mm

    OdpowiedzUsuń
  2. Ja też się cieszę :) taki relaks wszystkim się przyda również i mnie :)

    OdpowiedzUsuń
  3. No Majstrze Ja Tez pochwalam .Nareszcie nasze ulubione Pikusie . A już myślałem że o nich zapomniałeś ;-)

    Walik

    OdpowiedzUsuń
  4. Nie tam zaraz zapomniałem :) ale żeby nie było tak sielankowo za karę za jakiś czas tutorial dla ATSAMD21 :)

    OdpowiedzUsuń
  5. Tak na marginesie można zgłaszać sugestie czego byście oczekiwali w takim Tutorialu dla PIC32MM. Na razie mam przygotowany odcinek 3 a potem będę dumał w jakim kierunku dalej :) A może ktoś by chciał współtworzyć Tutorial ? w ramach prac społecznych i szerzenia kultury technicznej w naszym narodzie. Jestem otwarty na sugestie i propozycje. Jeśli będę w stanie i propozycje nie będą wykraczały poza moją percepcję to je uwzględnię :)

    OdpowiedzUsuń
  6. Jak dla mnie przydał by się Tutorial do tego do czego został stworzony mikrokontroler z serii PIC32MM czyli oszczędzania energii i zastosowań w IOT

    OdpowiedzUsuń
  7. Oszczędzanie energii,bardzo dobra sugestia , postaram się prześwietlić ten temat. Tak na marginesie przypomniało mi się o nowym produkcie Microchipa, do zastosowań bateryjnych LDO https://www.microchip.com/wwwproducts/en/MCP1812

    OdpowiedzUsuń
  8. W DEBIAN 9 lub ubuntu 18.10 należy dodać architekturę 386 dla bibliotek 32 bit
    sudo dpkg --add-architecture i386
    sudo apt-get update
    a potem zainstalować
    http://microchipdeveloper.com/install:mplabx-lin64
    sudo apt-get install libc6:i386 libx11-6:i386 libxext6:i386 libstdc++6:i386 libexpat1:i386

    OdpowiedzUsuń
  9. cenna uwaga dziękuję , aczkolwiek w moim Linuxie Mint 18.3 64-bit to są zbędne kroki ,widocznie te biblioteki dla 32-bit ma już dopakowane w standardzie. Dzięki Witek

    OdpowiedzUsuń
  10. odnośnie bootloadera , Microchip ma do tego gotowy soft ale jeszcze się z nim nie zapoznałem :)
    https://www.microchip.com/SWLibraryWeb/product.aspx?product=Microchip%20Easy%20Bootloader

    OdpowiedzUsuń