Kurs programowania mikrokontrolerów Coldfire firmy Freescale – zaczynamy!

 

Słowem wstępu

Zastanawiałeś się kiedyś nad stworzeniem własnego robota? Nad zmajstrowaniem swojego własnego odtwarzacza mp3? Stacji pogodowej? A może nawet serwera mieszczącego się w Twojej dłoni? Kiedyś wszystkie tego typu twórcze zachcianki były dla normalnego zjadacza chleba niedostępne, wiązało się to z dużym kosztem sprzętu, słabą wiedzą (niedostępną na półlkach polskich księgarni), dodatkowo cała szarada w kwestii programowania mikrokontrolerów nie zachęcała do spoufalania się z nimi. W dzisiejszych czasach miniaturyzacja wymusza postęp w dziedzinie mikrokontrolerów, jako układów o wysokim stopniu scalenia/integracji. Dlatego też, mikrokontrolery szybko podbiły „serca” inżynierów i projektantów dzięki funkcjonalności, dużym możliwościom, dzięki małemu poborowi prądu oraz uniwersalnością i nie bez kozery szybko opanowały rynek elektroniczny odsyłając do lamusa proste układy logiczne i dając duże pole i zakres możliwości projektantom i inżynierom.

Systemy oparte o mikrokontrolery występują w większości w każdym nowym sprzęcie elektronicznym, począwszy od zabawek, telefonów aż do zaawansowanych sterowników maszyn przemysłowych.
W takim razie czym dokładnie jest ten mikrokontroler?  Jaka jest różnica między nim a mikroprocesorem?
Mikrokontroler to jednoukładowy system mikroprocesorowy, który do działania wymaga tylko doprowadzenia zasilania (najczęściej +3,3V). Główną różnicą odróżniającą go od mikroprocesora jest to, iż mikrokontroler dodatkowo wyposażony jest w dodatkowe peryferia. Podstawowymi perferiami, które zapewniają natychmiastową możliwość działania mikrokontrolera po przyłączeniu zasilania są:

  • pamięć RAM i ROM,
  • układ wejścia/wyjścia (GPIO),
  • układ sterujący.

Bez tych peryferiów jednostka arytmetyczno-logiczna (ALU) – reprezentowana przez mikroprocesor – jest bezużyteczna.

Dlaczego Freescale?

Wyobraź sobie taką hipotetyczną sytuację – stajesz przed wyborem kupna komputera, niby fajna sprawa – nowy komputer, nowe możliwości, nowe gry i jeszcze szybciej działający pakiet Office, ale gdy zaczynasz przeglądać oferty zastanawiasz się: „kupić części i samemu poskładać, czy może wybrać coś z oferty już złożonych modeli?”. Kupić gotowy produkt czy może trochę się namęczyć i złożyć sobie komputer tak, by w pełni nas zadowalał. Kolejną ważną rzeczą jest kwestia wyboru systemu operacyjnego. Mimo dość hermetyczno-monopolistycznego rynku mamy w sumie dwie możliwości albo system z rodziny Windows albo Linux (nie bacząc na to, że jest darmowy). Windows zapewni początkującym adeptom łatwy start z komputerem, natomiast początek z Linuxem będziemy niczym „droga do Eldorado” – wyboista i stepowa, później z drogi się robi płyta lotniska, na której możemy w pełni działać bez żadnych ograniczeń. Z wyborem mikrokontrolera nękają nas takie same pytania jak w ww. hipotetycznej sytuacji.

Każdy, kto chociaż raz miał do czynienia z mikrokontrolerami, wie, że wybór odpowiedniego mikrokontrolera to połowa sukcesu. Na rynku mamy wiele firm oferujących mikrokontrolery, różniące się architekturą (ARM, AVR itd.), możliwością przetwarzania (8, 16, 32 bitów) lub środowiskiem programistycznym. Na przykładzie przytoczonej sytuacji odpowiedzmy sobie na pytania:

  • „Kupić gotowy zestaw w postaci płyty testowej wyposażonej w większości we wszystkie potrzebne na start peryferia?”

    Na rynku dostępnych jest wiele adaptacji mikrokontrolerów, które zostały zaprezentowane jako płyty testowe z na stałe przymocowanymi peryferiami oraz w postaci płyt ewaluacyjnych (możliwość wymiany uC na inny, najczęściej ten samej firmy oraz możliwość elastycznego podłączania peryferii).

  • A co ze środowiskiem programistycznym (ŚP) będącym naszym systemem operacyjnym?

    Z wyborem środowiska nie jest już tak elastycznie. W większości, każdy mikrokontroler ma dedykowane środowisko programistyczne.  O ile w przypadku mikrokontrolerów ARM mamy dostępne darmowe biblioteki np. GNU ARM, które możemy sprzężyć ze środowiskiem Eclispe, to brzmi to tylko ładnie w opisie, w rzeczywistości należy posiadać sporą wiedzę by móc poprawnie je skonfigurować a nawet skompilować swój program (pisanie makefile też nie należy do łatwych czyności). Dlatego też przy wyborze mikrokontrolera przez początkujących należy brać pod uwagę rodzaj mikrokontrolera (wybór uzależniamy od złożoności projektu), a co za tym idzie rodzaj dostępnego środowiska programistycznego. Zwykle każda firma do swojego produktu dodaje ŚP, raz są to płatne platformy np. Keil czy IAR Embedded Workbench, które uważane są za kombajny gdyż mogą obsłużyć dość różne architektury, a innym razem nie gorsze i darmowe wersje środowisk np. dla AVR: AVR Studio, WinAVR, Bascom, MicroPascal czy też środowiska firmowe, dedykowane mikrokontrolerom określonej firmy np.: CodeWarior Fresscale) czy też środowisko własne dla mikrokontrolerów firmy Renesas.

Niniejszy kurs został oparty o 32-bitowy mikrokontroler ColdFire MCF51CN128 firmy Fresscale.  Głównym czynnikiem przemawiającym za jego wyborem jest stosunkowo niska cena w odniesieniu do jego możliwości, bardzo dobre środowisko programistyczne (CodeWarrior) oraz czytelna i intuicyjna dokumentacja. Wybór mikrokontrolera 32-bitowego nie jest może najlepszym wyborem na początek, w końcu operacje 32-bitowe pozwalają wykonywać obliczenia bardziej skomplikowane niż 8-bitowe, lecz naprawdę nie trzeba się o nic martwić, gdyż środowisko programistyczne jest na tyle przyjazne, że po pierwszym programie stwierdzisz, że programowanie to nie jest w cale taka trudna rzecz.

 

Na szczególną uwagę zasługuje Support techniczny (help desk) jaki zapewnia firma Fresscale swoim klientom!
Mamy możliwość zgłaszania błędów i problemów drogą e-mailową – odpowiedź gwarantowana do 48h, lub poprzez chat na żywo z pracownikiem! Polecam wszystkim!

PS. Oczywiście support obejmuje tylko jedyny słuszny język – angielski.

O autorze