Wykorzystanie modułu Freescale Kwikstik do programowania

Transkrypt

Wykorzystanie modułu Freescale Kwikstik do programowania
Wykorzystanie modułu Freescale Kwikstik do programowania
mikrokontrolerów z rodziny Kinetis.
(Jan Kędzierski, 2014)
Do wzrostu popularności 32-bitowych mikrokontrolerów z rdzeniem ARM przyczyniły się głównie ich
uniwersalność, stosunek możliwości do ceny, wydajność i energooszczędność. Układy te nie rzadko są
wyposażane w bogaty zestaw peryferii, zarówno tych do zastosowań multimedialnych (wbudowane
fizyczne interfejsy oraz kodeki audio i wideo,…), jak i przemysłowych (sterowanie napędami, interfejsy
pomiarowe,…). Układy te można stosować nawet w najprostszych aplikacjach jak obsługa interfejsów
użytkownika, sterowanie zaworami, pomiar temperatury, a także w bardzo skomplikowanej aparaturze
medycznej czy systemach sterowania procesami produkcyjnymi. Bogata oferta układów z rdzeniem
ARM powoduje, że możemy bardzo precyzyjnie dobrać układ do konkretnego zastosowania. Co więcej,
niemal każdy z nich możemy programować przy użyciu tych samych narzędzi programistycznych. Jest
to niezwykle korzystne i pozwala oszczędzić na zakupie wielu licencji dedykowanych wybranej rodzinie
mikrokontrolerów. Ponadto, zaimplementowanie w układach modułu JTAG/SWD spowodowało, że
możliwe było opracowanie wspólnego (przynajmniej od strony sprzętowej) dla wszystkich układów
interfejsu do programowania i debuggowania.
Niestety koszt takiego urządzenia często sięga nawet 1000zł, a są to obecnie najprostsze i
najtańsze rozwiązania. Ich producenci celowo ograniczają możliwość programowania układów jednej
firmy (np. ST-Link programuje wyłącznie układy z rodziny STM32) lub ograniczają ich wykorzystanie
tylko w jednym środowisku programistycznym (ULINK2 współpracuje tylko ze środowiskiem
µVision).
Jednym z najciekawszych produktów jest J-Link (fot. 1 z lewej), interfejs JTAG/SWD o uznanej
w świecie renomie. Oferowany jest w cenie ok. 1000-1500 PLN, obsługuje olbrzymią liczbę układów z
rodzin: ARM7/9/11, Cortex-A5/A8/A9, Cortex-M0/M1/M3/M4, Cortex-R4, RX610, RX621, RX62N,
RX62T, RX630, RX631, RX63N i współpracuje z większością popularnych środowisk
programistycznych (więcej o interfejsie można znaleźć w [1, 2, 3, 4]).
Fot. 1 Interfejs J-Link firmy Segger (z lewej), interfejs J-Link EDU firmy Segger (z prawej).
Cena za wyżej wspomniany produkt do wielu zastosowań amatorskich może wydawać się zbyt
wysoka. Dlatego firma Segger udostępniła interfejs z tzw. licencją EDU. Interfejs ten, posiada takie
same właściwości jak jego standardowa wersja, ale jest sprzedawany jedynie osobom prywatnym,
instytucjom o działalności non-profit i może być wykorzystywany jedynie do projektów
niekomercyjnych. Cena takiego urządzenia wynosi ok. 220-280 PLN.
W przypadku układów firmy Freescale z rodziny Kinetis można posłużyć się atrakcyjnym
modułem Kinetis Kwikstik [5, 6]. Zastosowano w nim szybki mikrokontroler z rodziny K40 oraz bogate
wyposażenie (złącze USB, LCD 306 segmentów, slot kart SD, port podczerwieni, mikrofon, gniazdo
audio,…). Co więcej, na płytce znajduje się interfejs J-Link firmy Segger, dzięki czemu zestaw może
współpracować z wieloma popularnymi środowiskami programistycznymi (m.in. Keil uVision, IAR
Workbench). Interfejs ten jest obsługiwany także przez środowisko programistyczne CodeWarrior firmy
Freescale, które producent oferuje w bezpłatnej wersji Special Edition z ograniczeniem do 128 kB
objętości pliku wynikowego. Za pomocą zintegrowanego J-Linka można programować pamięć Flash
mikrokontrolera i monitorować oraz debugować jego pracę, a co najważniejsze także zastosować go do
pracy z zewnętrznymi mikrokontrolerami z rodziny Kinetis. Cena zestawu wynosi ok 160 PLN, ale
można go również nabyć w promocyjnej cenie 99 PLN (jest to oferta okresowa).
Fot. 2 Zestaw Kinetis Kwikstik.
Moduł Kwikstik zawiera nie przylutowane złącze typu 9pinowego (patrz rys. z prawej). Aby móc je wykorzystać do
programowania zewnętrznych układów, należy na płytce wyprowadzić
odpowiednie połączenia. Zabieg ten można dokonać w dogodny sposób,
np. poprzez wlutowanie złącza lub przylutowanie przewodu z wtyczką
na końcu. Druga opcja jest wygodna jeśli chcemy w dalszym ciągu korzystać z ochronnej osłony
silikonowej. W przypadku złącza niezbędne będzie wykonanie otworu w osłonie. W pierwszej
kolejności należy odszukać pola lutownicze, które znajdują się z tyłu modułu i oznaczono je jako J8 JTAG Connector (patrz fot. 3).
9
1
2
Fot. 3 Widok tylnej części modułu Kwikstik.
Należy zwrócić uwagę na kolejność linii, ta z numerem pierwszym znajduje się w prawym
górnym rogu. Warto rozważyć wyprowadzenie złącza BDM lub dodanie, np. zworki resetującej
interfejs (patrz fot. 4). Przylutowaną taśmę dobrze jest zabezpieczyć klejem. Naturalnie w trakcie
programowania układów zewnętrznych przełącznik SW1 (On/Off Switch) powinien być w pozycji OFF.
Fot. 4 Sposoby wyprowadzenia złącza JTAG na module Kinetis Kwikstik.
Tworząc nowy projekt w środowisku CodeWarrior 10.x [7, 8] można posłużyć się kreatorem,
w trakcie którego będziemy mieli możliwość wyboru debuggera znajdującego się na module Kwikstik.
W tym celu wybieramy menu File, następnie New i klikamy na Bareboard Project. Pojawi się okno
kreatora, w którym wpisujemy nazwę projektu oraz tworzymy nową ścieżkę przestrzeni roboczej.
Następnie postępujemy wg poniższych instrukcji:




Devices: wybieramy układ z rodziny Kinetis, który chcemy programować, np. K60FX512,
Connections: wybieramy Segger J-Link / J-Trace / SWO (SWD based)
Language and Build Tools Options
o Language: zostawiamy C,
o Floating Point: zostawiamy Hardware (-mfloat-abi=hard),
o ARM Build Tools: wybieramy, np. Freescale,
Rapid Aplication Development
o Rapid Aplication Development: wybieramy Processor Expert,
o Start with perspective designed for: wybieramy Hardware configuration.
Referencje:
1. J-Link / J-Trace User Guide, UM08001, SEGGER Microcontroller GmbH & Co. KG, 2013.
2. Strona producenta J-Link Segger, http://www.segger.com/jlink_base.html
3. Artykuł w portalu Mikrokontroler.pl, Programatory i debuggery firmy Segger (J-Link) przegląd możliwości, http://www.mikrokontroler.pl/content/programatory-i-debuggery-firmysegger-j-link-przeglad-mozliwo%C5%9Bci
4. Artykuł w portalu Mikrokontroler.pl, Obsługa interfejsu Segger J-Link w środowisku uVision
(ARM/Keil) http://www.mikrokontroler.pl/node/4950/
5. Kinetis KwikStik Development Tool, Cost-effective, all-in-one solution for Kinetis ARM®
Cortex™-M4 MCUs, Freescale
6. Strona z dokumentacją modułu Kinetis Kwikstik
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=KWIKSTIK-K40
7. CodeWarrior Development Studio for Microcontrollers V10.x Getting Started Guide,
Freescale Semiconductor, Inc. 2011.
8. CodeWarrior for Microcontrollers V10.x Processor Expert User Manual, Freescale
Semiconductor, Inc. 2011.