kwi 29 2012

LPCXpresso wgrywanie programu do pamięci procesora

Category: LPC1768,LPCXpressoAdam Taciak @ 18:37

Nim przedstawię sposób wgrywania samego programu do pamięci procesora (który w zasadzie jest trywialny), wyjaśnię najpierw jak przygotować nie tyle środowisko co samą płykę, aby możliwe było przesłanie do niej danych. Lecz na samym początku, wyjaśnię skąd pobrać przykładowe programy i jak zaimportować je do środowiska.

Pobranie przykładowych programów

W sieci dostępne są dwa oficjalne zestawy przykładowych projektów. Jeden z nich przygotowany został przez firmę Embedded Artists i w pełni obrazuje wykorzystanie urządzeń dostępnych na płytce bazowej LPCXpresso Base Board. Drugi zestaw został przygotowany przez firmę code_red, nie jest w pełni kompatybilny z płytkami ewaluacyjnymi firmy Embedded Artists, lecz znajdują się w nim cenne przykłady obrazujące korzystanie z USB.

[Liniki wkrótece]

Import projektów do środowiska LPCXpresso

Import przykładowych projektów do środowiska, jest bardzo łatwy. Po uruchomieniu środowiska, należy z obiektu Quickstart Panel wybrać opcję Import project(s).

W nowym oknie należy kliknąć w przycisk Browse i zlokalizować archiwum z projektami które wcześniej pobraliśmy z sieci, a następnie kliknąć w przycisk Next.

W kolejnym oknie wyświetlona zostanie lista wszystkich dostepnych projektów w pliku archiwum. Istnieje w tym miejscu możliwość zrezygnowania z importu któregoś z nich przez odznaczenie ich na liście. Ostatnim krokiem jest kliknięcie w przycisk Finish.

Gotowe. W środowisku LPCXpresso widoczne będą wszystkie zaimportowane projekty.

Instalacj dfu-util

dfu-util jest programem implementującym po stronie hosta USB protokół DFU (Device Firmware Upgrade). Pozwala na pobieranie bądź wysyłanie firmware do urządzeń przez USB. Z racji tego, iż do prawodłowego działania debugera umieszczonego na płytce LPC1768 konieczne jest wgranie firmware przed rozpoczęciem pracy, konieczne jest również zainstalowanie tego narzędzia w naszym systemie. Program dfu-util niestety nie znalazł się w oficjalnym repozytorium Arch’a, jest jednak dostępny w AUR.

W zasadzie wraz z instalacją środowiska LPCXpresso, została również zainstalowany dfu-util, jednak jest to wersja 32 bitowa. O ile samą aplikację można teoretycznie uruchomić (gdyż system posiada zestaw bibliotek 32 bitowych), o tyle konieczna jest 32 biblioteka dla korzystania z portów USB, a jej instalacja okazała się dość kłopotliwa. Próbując uruchomić 32 bitowe dfu-util, wyświetlony zostanie następujący komunikat:

./dfu-util: error while loading shared libraries: libusb-0.1.so.4: cannot open shared object file: No such file or directory

W tym przypadku zdecydowanie mniej kłopotliwe jest instalowanie nowej, 64 bitowej wersji tej aplikacji prosto z AUR. (Jeżeli nie wiesz jak korzystać z Arch User Repository – AUR, sprawdź oficjalny poradnik lub jedną z wielu stron dostępnych w sieci).

Uruchamianie…

Przejdźmy teraz do uruchomienia płytki. W pierwszej kolejności przypomnę co trzeba podłączyć do komputera, aby możliwe było rozpoczęcie programowania.

Podłączenie

Płytka bazowa LPCXpresso Base Board posiada wbudowane 2 porty USB. Port 1 używany jest jako główne źródło zasilania, w zasadzie aby zasilać płytkę, można podłączyć dowolny port USB, jednak zalecany jest właśnie port 1. Port 1 służy również jako port UART3. Porty 3/4 używane są jako porty USB do zastosowań użytkownika przy czym port 3 może być używany tylko jako użądzenie (Device), port 4 jako Host. Gniazdo 5 jest oczywiście gniazem eternetu.

Płytka ewaluacyjna z mikrokotrolerem, LPC1768, również posiada port USB (port 2). Port ten słuzy do programowania oraz debugowania procesora.

Aby możliwe było rozpoczęcie pracy z zestawem ewaluacyjnym, powinniśmy podłączyć do komputera port 1 oraz port 2.

Wykrywanie zestawu przez komputer

Po podłączeniu obu portów USB do komputera, polecenie lsusb wyświetli następujące informacje na temat zestawu:

Bus 005 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Bus 002 Device 003: ID 0471:df55 Philips (or NXP) LPCXpresso LPC-Link

Pierwsza linijka dotyczy portu który jest na płytce bazowej, druga dotyczy płytki z mikrokontrolerem. Jeżeli probowalibyśmy teraz wgrać program do pamięci procesora, środowiska LPCXpresso zwróci komunikat iż nie może odnaleźć żadnej płytki.

//obrazek + komunikat bledu

Problem stanowi tutaj brak firmware w module LPC-Link. Niezgodny jest ProductID oraz VendroID (0471:df55).

Wczytywanie firmware do zestawu ewaluacyjnego

Aby załadować firmware do modułu LPC-Link, należy w pierwszej kolejności przejść do katalogu bin w którym zainstalowane zostało środowisko LPCXpresso, a następnie wydanie następujących poleceń:

Wczytanie firmware do modułu LPC-Link, polecenie:

dfu-util -d 0x471:0xdf55 -c 0 -t 2048 -R -D LPCXpressoWIN.enc
[root@astaroth bin]# dfu-util -d 0x471:0xdf55 -c 0 -t 2048 -R -D LPCXpressoWIN.enc
dfu-util 0.6

Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2012 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY

Filter on vendor = 0x0471 product = 0xdf55
Opening DFU capable USB device... ID 0471:df55
Deducing device DFU version from functional descriptor length
Run-time device DFU version 0100
Claiming USB DFU Runtime Interface...
Determining device status: state = dfuIDLE, status = 0
WARNING: Runtime device already in DFU state ?!?
Found Runtime: [0471:df55] devnum=0, cfg=1, intf=0, alt=0, name="UNDEFINED"
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
Deducing device DFU version from functional descriptor length
DFU mode device DFU version 0100
No valid DFU suffix signature
Warning: File has no DFU suffix
bytes_per_hash=604
Copying data from PC to DFU device
Starting download: [##################################################] finished!
state(8) = dfuMANIFEST-WAIT-RESET, status(0) = No error condition is present
Done!
can't detach
Resetting USB to switch back to runtime mode
[root@astaroth bin]#

W tym momencie powinien zmienić się identyfikator modułu LPC-Link, należy raz jeszcze wywołać polecenie lsusb:

Bus 005 Device 006: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Bus 002 Device 013: ID 1fc9:0009 NXP Semiconductors

Tak też się stało, urządzenie zmieniło swój identyfikator z 0471:df55 na 1fc9:9000.

Teraz można sprawdzić czy oprogramowanie środowiska LPCXpresso będzie widzieć emulator naszego układu, w tym celu wydajemy polecenie:

./crt_emu_cm3_nxp -info-emu -wire=winusb
[root@astaroth bin]# ./crt_emu_cm3_nxp -info-emu -wire=winusb
Ni: LPCXpresso Debug Driver v4.0 (Mar 25 2012 14:25:27)
1 Emulators available:
0. LPCLINK_1_1    LPC-Link Driver LINUX32 v1.1 (Code Red - LPCXpresso)

[root@astaroth bin]#

Jak widać, emulator został znaleziony. Możliwe jest jeszcze wyświetlenie informacji o samym układzie, w tym celu należy wywłać polecenie:

./crt_emu_cm3_nxp -info-target -pLPC1768 -wire=winusb -4

(Zrezygnowałem z zamieszczenie wyników polecenie, gdyż są dość długie, log dostępny jest tutaj).

Kompilacja i debugowanie

Środowisko jest już praktycznie gotowe do pracy. System został przygotowany do uruchomienia środowiska, IDE LPCXpresso może połączyć się z modułem LPC-Link, a projekty zostały zaimportowane do środowiska. Pozostaje nam jeszcze tylko sprwadzić czy uda się wgrać przykładowy projekty do pamięci procesora. Sprawdźmy to!

Po pierwsze należy uruchomić środowisko, wydając polecenie

/usr/local/lpcxpresso_4.2.2_238/lpcxpresso/lpcxpresso

(Oczywiście ścieżka może się nieco różnić, w zależności od zaisntalowanej wersji środowiska). Następnie z menu w którym znajduje się lista projektów w obszarze roboczym (workspace) należy kliknąć w projekt demo.

Po wybraniu projektu, w dolnej części panelu w elemencie Quickstart Panel dostępne będą nowe opcje (staną się aktywne). Build kompiluje projekt, Clean czyści projekt, a Debug oczywiście rozpoczyna proces debugowania. Aby wczytać nasz pierwszy projekt do pamięci procesora, należy skorzystać właśnie z tej ostatniej opcji. Kliknięcie w przycisk Debug spowoduje skompilowanie projektu, przesłanie go do pamięci procesora i uruchomienie go. Program zostanie jednak zatrzymany na pierwszej linijce programu.

Aby wznowić działanie programu, należy kliknąć w ikonkę Resume (żółty prostokąt z zielonym trójkątem) lub naciśnięcie przycisku F8 na klawiaturze.

Jeżeli program zostanie poprawnie wznowiony, płytka bazowa powinna „odżyć”.

Uwagi końcowe

Jeżeli uruchomienie aplikacji crt_emu_cm3_nxp nie będzie możliwe z powodów brakującej biblioteki libusb, konieczna jest instalacja biblioteki lib32-libusb której opis zamieściełem również na moim blogu.

Źródła:

 

2 Responses to “LPCXpresso wgrywanie programu do pamięci procesora”

  1. avatar hexen2k says:

    Kawał dobrej roboty :) Dziękuje i pozdrawiam

  2. avatar Badman says:

    Zamierzam zastosować w/w schemat do LPC 1114. Jakim napięciem zasilasz LM324 5V, cz 3,3V ?

Leave a Reply