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:
- http://support.code-red-tech.com/CodeRedWiki/RDB1768cmsisExampleProjects
- http://aur.archlinux.org/packages.php?ID=21385
- http://dfu-util.gnumonks.org/
- https://wiki.archlinux.org/index.php/Arch_User_Repository









Maj 3rd, 2012 08:46
Kawał dobrej roboty :) Dziękuje i pozdrawiam
Styczeń 28th, 2013 09:08
Zamierzam zastosować w/w schemat do LPC 1114. Jakim napięciem zasilasz LM324 5V, cz 3,3V ?