piątek, 14 maja 2010 @ 18:54
Do kategorii: Elektronika, GNU/Linux, Komputer
Na ogół w systemach wbudowanych potrzebujemy dostępu do GPIO przynajmniej w jednym celu — do migania diodami, sygnalizującymi stan pracy urządzenia. W gruncie rzeczy błyskanie LED-em jest zresztą pierwszym i podstawowym zadaniem większości urządzeń…
Niestety, opisując proces kompilacji Linuksa dla MMneta1002 zapomniałem o zapewnieniu dostępu do GPIO. Sterowanie pinami na potrzeby migania diodą, załączania przekaźnika czy sprawdzania stanu przełącznika jest jednak bardzo proste — wymaga tylko włączenia odpowiednich opcji w konfiguracji jądra i wykonywania operacji na plikach reprezentujących poszczególne piny. Dodatkowo mamy możliwość automatycznej obsługi LED-ów przez jądro w celu sygnalizacji np. dostępu do nośników danych.
Czytaj dalszą część wpisu »
środa, 24 marca 2010 @ 15:11
Do kategorii: Elektronika, GNU/Linux, Komputer
Dziś kontynuuję wątek Linuksa na ARM-ie, a konkretnie na płycie ewaluacyjnej MMnet1002. W projekcie, nad którym pracuję potrzebuję aplikacji webowej, która umożliwi zarządzanie harmonogramami zadań. Ponieważ mam bardzo dobre doświadczenia z frameworkiem Django, postanowiłem zaryzykować i uruchomić go na wspomnianej płycie. Ryzyko wynika z faktu, że Python, w którym jest napisane Django, to język interpretowany i można mieć poważne obawy, czy 200MHz-owy mikrokontroler z 64MB RAM-u da sobie radę z tym zadaniem.
Buildroot, z którego korzystam ma w paczkach jedynie Pythona w wersji 2.4. Pomyślałem, że byłoby dobrze mieć nieco świeższą wersję, więc postanowiłem zmodyfikować patche i skompilować wersję 2.6. Nie było to łatwe zadanie, ale łącząc oryginalne patche Buildroota z tym, co udało mi się wygooglować otrzymałem działające rozwiązanie.
Czytaj dalszą część wpisu »
wtorek, 16 marca 2010 @ 19:54
Do kategorii: Elektronika, GNU/Linux, Komputer
Płyta ewaluacyjna MMnet1002 firmy Propox jest świetną zabawką dla miłośników Linuksa zainteresowanych jego wykorzystaniem w systemach wbudowanych. Od kilku tygodni eksperymentuję z tą platformą i próbuję zbudować własnego Linuksa z użyciem narzędzi takich jak Buildroot. Płyta jest podobna do atmelowskiej AT91SAM9260-EK, jednak występują pewne różnice, które sprawiają, że nie sposób wykorzystać bez zmian pliki konfiguracyjne przewidziane dla AT91SAM9260-EK. Dotyczy to w szczególności MMneta z pamięcią NANDFlash — 1GiB pamięci nieulotnej to świetna sprawa, ale podstawową i najbardziej popularną konfiguracją jest procesor połączony z pamięcią DataFlash, słusznie należy więc oczekiwać, że czeka nas trochę programistycznej gimnastyki. Nie obędzie się też bez patchowania źródeł, ale w zamian otrzymamy system operacyjny, nad którego każdą częścią będziemy jako-tako panowali i nie będziemy skazani tylko na dostarczaną przez Propox binarną wersję dystrybucji OpenWRT.
Poniższy tutorial nie jest zbyt szczegółowy, zakładam, że Czytelnik pracuje na Linuksie i umie się nim posłużyć w podstawowym zakresie, a także, że zapoznał się z dokumentacją rzeczonej płyty ewaluacyjnej i umie posługiwać się programatorem SAM-BA.
Czytaj dalszą część wpisu »
czwartek, 11 marca 2010 @ 23:14
Do kategorii: GNU/Linux, Komputer
SELinux to nakładka na linuksowe jądro, kontrolująca przydzielanie zasobów dla różnych aplikacji. Początkujący administratorzy systemów redhatopodobnych, jak CentOS czy Fedora niejednokrotnie stają przed poważnym problemem: jak uporać się z restrykcyjną polityką SELinuksa, który niczym Hubert Urbański w „Milionerach” będzie się dwieście razy pytał, czy „ostatecznie i definitywnie” pozwolić Apache’owi na dostęp do takiego czy innego katalogu?
Czytaj dalszą część wpisu »
środa, 10 marca 2010 @ 22:17
Do kategorii: Elektronika, GNU/Linux, Komputer
Nie tylko crackerzy i miłośnicy inżynierii wstecznej potrzebują czasem zajrzeć do jakiejś binarki. Niejeden elektronik potwierdzi, że dobrze jest mieć możliwość odczytu czy nawet edycji tzw. „wsadów”, a sam nieraz podglądałem pliki wykonywalne, by sprawdzić, z jakich bibliotek korzystają, w szczególności, gdy programu nie dawało się uruchomić i nie było mowy o skorzystaniu z lsof.
Na ogół używałem do tego po prostu mojego ulubionego Vima i to w zwykłym trybie tekstowym. Uruchomienie trybu heksadecymalnego, zwłaszcza z możliwością edycji wymaga zaklęć tak długich i bezecnych, że do dziś boję się je wpisywać.
Zmuszony jednak przez los postanowiłem wyposażyć się w jakiś porządny edytor heksadecymalny, najlepiej działający w X-ach, żeby mieć pełną wygodę użytkowania.
Czytaj dalszą część wpisu »
piątek, 5 marca 2010 @ 22:21
Do kategorii: Elektronika, GNU/Linux, Komputer
Ostatnio dużo pracuję na porcie szeregowym RS-232, przez który obsługuję także linuksową powłokę. Niezbędny jest do tego emulator terminala szeregowego. Dotychczas korzystałem przede wszystkim z programu GTKTerm, znacznie rzadziej z CuteCom. Na dłuższą metę w GTKTermie doskwierają dwie niedogodności. Po pierwsze na moim systemie lubi on wstawiać od czasu puste linie, jest to jednak tylko pewien wizualny mankament. Po drugie GTKTerm nie radzi sobie z edycją już wydrukowanej linii tekstu, przez co przeglądanie historii poleceń powłoki owocuje ciągłym zadrukowywaniem ekranu, nie mówiąc już o różnej maści paskach postępu, które błyskawicznie zapełniają dostępną historię ekranu; w tych warunkach na vi w ogóle nie da się pracować. Po trzecie — aplikacja ma bardzo krótką historię ekranu, przez co zwykłego dmesg-a trudno obejrzeć w całości.
CuteCom w ogóle jest nieporozumieniem: nie obsługuje kolorów, wejście działa w trybie liniowym a nie znakowym, a jego log potrafi zapchać RAM, zwłaszcza jeżeli będzie monitorował port, na którym działa programator ISP (co ma miejsce w ATmedze128). W pewnych zastosowaniach mógłby się sprawdzić, ale na pewno nie jest to wygodny emulator terminala.
Oczywiście, oprócz tych dwóch programów, znałem też Minicoma, ale zawsze miałem go za program bardzo nieprzyjazny użytkownikowi i nadający się tylko do współpracy z modemami. Okazuje się jednak, że bardzo prosto jest zmusić go do pracy w roli pełnoprawnego terminala szeregowego. To tylko kwestia dodania kilku opcji w wierszu poleceń:
$ minicom -m -o -w -c on
lub krócej:
$ minicom -mowc on
Czytaj dalszą część wpisu »
czwartek, 4 marca 2010 @ 16:04
Do kategorii: Elektronika
Eksperymentując z bootloaderami i jądrami Linuksa na AT91SAM9260 zablokowałem sobie w pewnym momencie moduł MMnet1002. Mikrokontroler programowany jest przez atmelowski interfejs ISP o nazwie SAM-BA (SAM Boot Assistant), który jest bardzo wygodny, bo nie wymaga żadnego sprzętowego programatora — wystarczy podłączyć się przez USB do ARM-a i użyć oprogramowania dostarczonego przez Atmela.
Niestety, nie jest tak, że tryb programowania włącza podanie odpowiedniego stanu na jakiś pin i restart mikrokontrolera. SAM-BA znajduje się na samym końcu sekwencji startowej i jest uruchamiana tylko wtedy, gdy nie uda się wczytać programu z pamięci DataFlash i NANDFlash. Wprawdzie na płytce MMnet1002 znajduje się zworka SAMBA podłączona do pinu PC15 (NWAIT), której założenie w połączeniu z dwukrotnym restartem wprowadza system w stan programowania, ale ta tajemnicza metoda nie zawsze skutkuje. W szczególności, gdy doprowadzimy system do takiego stanu, że będzie w stanie wczytać z pamięci wadliwy program, utkniemy w miejsu — algorytm startowy stwierdzi, że program wczytano i nie ma potrzeby uruchamiania SAM-B-y, nawet gdy program będzie błędny. W efekcie na konsoli DBGU zobaczymy tylko smutne:
RomBOOT
>
Czytaj dalszą część wpisu »
środa, 20 stycznia 2010 @ 19:25
Do kategorii: Elektronika
Jakiś czas temu przedstawiałem prosty układ elektroniczny pełniący rolę JTAG-a dla mikrokontrolerów ATmega. Był to znaleziony w Sieci klon firmowego JTAGICE, który to klon mimo prostej budowy znakomicie pełni swoją rolę. Jedyną istotną jego wadą jest sterowanie przez port szeregowy RS-232. Port ten jest już rzadkością w komputerach, co wymusza stosowanie przejściówek USB<–>RS-232. Z mojego doświadczenia wynika, że przejściówki takie często sprawiają wiele kłopotów, dlatego doszedłem do wniosku, że czas ulepszyć JTAG-a, a przy okazji dorobić się wreszcie czegoś konkretnego w miejsce poprzedniej prowizorki.
Tak naprawdę nie czekało mnie wiele pracy — musiałem tylko dodać do układu jakąś przejściówkę USB<–>RS-232 i zaprojektować płytkę, najlepiej pod elementy SMD. W roli konwertera postanowiłem wykorzystać układ scalony firmy FTDI — FT232RL. Kosztuje on wprawdzie kilkanaście złotych, ale ma wbudowany zegar i do działania nie potrzebuje prawie żadnych elementów zewnętrznych.
Czytaj dalszą część wpisu »
czwartek, 24 września 2009 @ 18:40
Do kategorii: GNU/Linux, Komputer
AWStats to narzędzie do analizy logów serwera WWW (a także FTP i e-mail, ale to mnie akurat nie interesowało), udostępniające bogate statystyki w całkiem przejrzystej, graficznej formie. Korzystam z Debiana w gałęzi stabilnej, który udostępnia AWStats w swoim repozytorium, liczyłem zatem, że wystarczy zainstalować paczkę i wszystko pójdzie z górki. Okazało się, że instalacja z paczki i tak kończy się ręczną konfiguracją, i to włącznie z wprowadzaniem poprawek w automatycznym (?) konfiguratorze. Dlatego w końcu postanowiłem wszystko zrobić sam. Cały proces jest trochę skomplikowany, ale warto spróbować.
Czytaj dalszą część wpisu »
środa, 19 sierpnia 2009 @ 15:00
Do kategorii: GNU/Linux, Komputer, Lifehacking
W ramach wakacyjnego sezonu ogórkowego chcę przedstawić narzędzie, które sprawia, że mimo zafascynowania LaTeX-em, wciąż chętnie sięgam po Writera z pakietu OpenOffice.org. Narzędziem tym jest LanguageTool. Zapewne nie wszyscy wiedzą, że poza kontrolowaniem ortografii, Writer może też sprawdzać reguły gramatyczne i wyłapywać błędy językowe.
Czytaj dalszą część wpisu »