Migracje pomiędzy miniaturowymi mikrokontrolerami z rodziny HCS08, część 1
Współczesne projekty wymagają dużej elastyczności, dając w zamian lepszą funkcjonalność i wydajność, redukcję zapotrzebowania na energię oraz dużo większą złożoność. Nierzadko tuż po ukończeniu jednej wersji produktu pfojawiają się pomysły na ulepszenia, które trzeba będzie zaimplementować w następnej. W wielu przypadkach wybrany początkowo mikrokontroler nie daje sobie rady z wymaganiami, które stawiają nowe pomysły i trzeba wybierać miedzy pożądaną funkcjonalnością a kosztami wymiany sprzętu.
Kolejna część artykułu jest dostępna tu. |
Przenośność jest ważnym czynnikiem, który trzeba wziąć pod uwagę na samym początku projektowania. Najlepszym sposobem przyspieszenia prac nad nowym projektem jest powtórne użycie wyników i doświadczeń uzyskanych przy pracy nad wcześniejszymi rozwiązaniami. Celem powinno być znalezienie najlepszego sposobu implementacji algorytmu, który daje możliwość przeniesienia go na inny mikrokontroler. Zwykle narzędzia programistyczne, takie jak kompilator czy generator kodu dyktują przebieg fazy pisania oprogramowania, podczas gdy kompatybilność sprzętowa jest czymś, co „dobrze byłoby mieć”. Mikrokontrolery są często zmieniane wraz z wprowadzeniem na rynek nowej generacji układów. Zmienia się liczba wyprowadzeń i peryferia do nich przypisane. W takim przypadku nie da się użyć tej samej konfiguracji sprzętu do testowania nowych projektów i każdy nowy produkt wymaga nowego hardware’u.
Możliwość łatwego przeniesienia projektu z jednej platformy sprzętowej na inną skraca czas projektowania, testowania i produkcji. Wdrożona przez firmę Freescale strategia Controller Continuum Strategy zapewnia, że nowe urządzenia jej produkcji będą kompatybilne jeśli chodzi o układ pinów i funkcje do nich przypisane z istniejącymi mikrokontrolerami, co pozwala na powtórne wykorzystanie platform sprzętowych i daje możliwość łatwego wykorzystywania nowych peryferiów i poszerzania funkcjonalności lub upraszczania projektów, co z kolei skutkuje obniżeniem cen produktów. Planowanie migracji między różnymi mikrokontrolerami jest łatwiejsze przy prostszych, 8-bitowych, 8-pinowych układach (low-end microcontrollers) z małą ilością kodu (do 8 kB pamięci programu), gdyż liczba wyprowadzeń ogranicza liczbę peryferiów używanych w projekcie. Przy poprawnym projektowaniu migracja, zarówno software’u, jak i sprzętu jest znacznie uproszczona.
Kompatybilność wśród mikrokontrolerów low-end
Gdy projektanci szukają mikrokontrolerów do mniej wymagających zastosowań, często natrafiają na brak kompatybilności układów w konkretnych rodzinach. Sprawia to, że zmiana mikrokontrolera bez ingerencji w sprzęt i oprogramowanie staje się uciążliwa.
Przeprojektowywanie sprzętowe lub programowe urządzenia pociąga też za sobą konieczność opracowania i przeprowadzenia nowego zestawu testów, co jest zazwyczaj czasochłonne i kosztowne. Szybka migracja między różnymi mikrokontrolerami wymaga by układy były kompatybilne jeśli chodzi o układ pinów oraz wykorzystywały te same narzędzia projektowe, takie jak: programatory sprzętowe, debuggery i narzędzia programistyczne.
Mikrokontrolery low-end
Rodzina mikrokontrolerów S08 jest zorientowana na zapewnianie wysokiej efektywności do zastosowań low-end przy zachowaniu oszczędności w poborze energii. Mikrokontroler MC9S08QG8, należący do tej rodziny, wyposażony jest w liczne peryferia w 8- i 16-pinowych obudowach.
Architektura S08 pozwala na pisanie oprogramowania w całości w języku C, gdyż jest na to przygotowana od strony obsługi stosu oraz wyposażona w instrukcje zoptymalizowane pod kątem działań na danych i tablicach.
Mikrokontrolery tej rodziny są wyposażone w Background Debug Controller – jednoliniowy interfejs debuggingowy, który stanowi też wygodne narzędzie programowania wbudowanej pamięci flash i innych pamięci nieulotnych. BDC jest też podstawowym debuggerem w trakcie pisania programów, pozwala na nieinwazyjny dostęp do danych w pamięci i zapewnia typowe operacje, takie jak: modyfikacja rejestrów mikrokontrolera, breakpointy oraz śledzenie wykonywania pojedynczych instrukcji.
W rodzinie S08 (oraz RS08), magistrale: adresowa i danych nie są wyprowadzone na wyprowadzenia mikrokontrolera. Debugowanie jest dokonywane poprzez komendy podawane na pin BDC. Moduł debuggera zapewnia metody wyzwalania magistral, podawania na nie informacji i zapisu informacji z magistral tak, by można było zrekonstruować działanie mikrokontrolera cykl po cyklu bez konieczności sięgania bezpośrednio do linii danych i adresowych.
Na rysunku 1 pokazano schemat blokowy mikrokontrolerów MC9S08QG8\4. Są to najbardziej zaawansowane i najlepiej wyposażone spośród mikrokontrolerów omawianych w niniejszym opracowaniu. Są one dostępne w obudowach 8- i 16-pinowych.
Rys. 1. Schemat blokowy MC9S08QG8