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.