blog.garaż.net

12 październik 2013

LPC800-MAX + LPCXpresso + Linux

Podczas pierwszych zabaw z tą małą płytką napotkałem kilka problemów, które udało się w końcu rozwiązać. Żeby nie przepadło opublikuje je tutaj. Patrząc po ilości osób, które skorzystały z promocji i przyznały się do tego na fanpage'u Mikrokontrolerów, na pewno znajdzie się kilka osób, którym może się to przydać.

[LPC800-MAX] (http://www.flickr.com/photos/minevrpl/10224440994/ "LPC800-MAX by minevrpl, on Flickr" )

Po pierwsze, nie aktualizujcie oprogramowania wbudowanego pod Linuksem jeśli nie macie pod ręką maszyny z Windowsem. Bardzo prawdopodobne, że skończy się to wgraniem firmware'u w niewłaściwe miejsce i operacje będzie trzeba powtórzyć na systemie, który inaczej obsługuje pamięci flash tego typu lub pobawić się dd i wgrać ręcznie obraz na urządzenie, z odpowiednim offsetem, pomijając sterownik systemu plików.

Jeśli LPCXpresso nie wykrywa urządzenia, i kończy się to komunikatem:

Unable to open probe index 1. RedlinkAPI: Probe not open

i uruchamiacie pakiet na 64-bitowym systemie operacyjnym, to prawdopodobnie brakuje dowiązania symbolicznego do biblioteki współdzielonej udev. Utworzenie dowiązania symbolicznego rozwiązuje problem:

ln -s /lib/libudev.so.1 /lib/libudev.so.0

Od tej chwili sprzętowy układ do debugowania powinien zacząć być widoczny na liście przy próbie uruchomienia aplikacji.

LPC Emulator

Jeśli po poprzednim kroku, przy próbie uruchomienia aplikacji dostaniecie błąd:

Error in final launch sequence Error: Unable to open probe index 1. RedlinkAPI: Probe not open Redlink Server will be restarted. Please restart your debug session. Error: Unable to open probe index 1. RedlinkAPI: Probe not open Redlink Server will be restarted. Please restart your debug session.

To jest już z górki. Pakiet LPCXpresso podczas instalacji dodaje reguły dla udeva w pliku /etc/udev/rules.d/85-code-red.rules. Niestety reguły nie działają dla płytki LPC800-MAX gdyż producent zapomniał dopisać ID urządzenia do reguł, co skutkuje zablokowaniem dostępu do „gołego" urządzenia użytkownikom innym niż root. Problem rozwiązuje dodanie linijki:

KERNEL=="hidraw*", ATTRS{idVendor}=="0d28", ATTRS{idProduct}=="0204", MODE="0666"

Po tej zmianie restartujemy demona udev aby ponownie przetworzył reguły. Dla pewności możecie sprawdzić czy podane przeze mnie identyfikatory producenta i produktu zgadzają się dla waszego egzemplarza poprzez wydanie komendy lsusb i odszukanie informacji o płytce:

# lsubs
[...]
Bus 002 Device 008: ID 0d28:0204 NXP LPC1768
[...]

I tyle jeśli chodzi o problemy jakie napotkałem podczas próby uruchomienia pierwszego przykładu na płytce z użyciem LPCXpresso.

Sama płytka wydaje się być bardzo ciekawą alternatywą dla Arduino (co prawda z IDE nie skorzystamy, ale wyjścia są kompatybilne z Arduino UNO). Znaczącym minusem może wydawać się zamknięta platforma i narzędzia, ale czy będzie to rzeczywiście w czymkolwiek przeszkadzało, jeszcze się przekonam -- jest niby LPCOpen ale z tego co zrozumiałem jest to zestaw otwartych bibliotek, system RTOS i przykładów ale nadal jest potrzebny toolchain np. z LPCXpresso.

Comments !