Dziś natchnąłem się na kilka stronek opisujących zagadnienie Free Hardware. W wolnym tłumaczeniu otwarty sprzęt jak wiadomo jest tworzony od wielu lat. Jest słynący projekt otwartej karty graficznej. Sporo jest w sieci projektów sprzętowych do realizacji robotów. Również istnieją projekty otwartych systemów wbudowanych.
Spoglądając z punktu widzenia programisty, który potrafi czytać dokumentację i API danej implementacji programowej jest to genialne rozwiązanie. Chcąc na przykład zrobić sobie przenośny i niezależny klient sieci Jabber z wyświetlaczem LCD podpinany do dostępnego gniazda sieciowego lub wyszukującego sieci WiFi lub Bluetooth wystarczy wyszukać dostępny open hardware, który oferuje obsługę protokołów bazowych oraz interfejsów dla peryferiów i zaimplementować protokół klienta sieci Jabber :-)
Okazuje się, że nie wspominam o abstrakcjach, bo istnieje już kilka możliwych rozwiązań, np:
- Free Arduino - prosty system wbudowany + Free Hardware (oparty o mikrokontroler ATMega 16)
- Nut/OS - średniej klasy system operacyjny + Free Hardware (oparty o mikrokontroler AVR ATMega 132)
- OpenCore - Free Hardware jako układy FDGA, w które w języku VHDL wpisuje się implementacje rdzeni mikroprocesora zyskując spore jednostki obliczeniowe
- Java tiny - Free Hardware z procesorami z zaimplementowaną wbudowaną wirtualną maszyną JVM, które wykonują przenośne programy napisane w języku JAVA
Kilka przykładów a widać rozmaitość rozwiązań i dowolność w implementacji. Jedynym warunkiem jest znajomość jakiegoś języka programowania ANSI C, C++, Python Java, ew. VHDL. oraz czas na zapoznanie się z dokumentacją do wymaganego stopnia podstawowego kodowania na wybraną platformę.
Temat niby niewiele znaczący, lecz okazuje się, że już w sektorze tunerów satelitarnych DVB od kilku lat istnieją architektury, które oferują z punktu widzenia użytkownika oglądanie telewizji cyfrowej, słuchanie radia, przeglądanie stron internetowych a z punktu widzenia systemu wbudowanego są to kolejne przykłady sprzętu, który może stać się otwarty :-) Ten przykład nie dotyczy na dzień dzisiejszy Free Hardware, chociaż wiele osób chciałoby sobie zrobić własny uniwersalny tuner DVB. Przeszkód żadnych nie ma, bo jak pamiętam ostatnio zapis prawny dotyczący dekodowania strumieni satelitarnych na własny użytek - wyłączając cele komercyjne - zezwala nam na zabawę, o ile nie kończy się targiem i handlowaniem takimi rozwiązaniami. Powracając do wątku o DVB wspomnę tylko, że tuner cyfrowy posiada całkiem spory procesor bazowy, dość ciekawy numeryczny kilka kodeków do strumieni MPEG oraz dźwięku, kontroler tunera satelitarnego, czytnik kart chipowych, dość sporo pamięci RAM i Flash oraz wiele innych peryferiów, które pozwalają podczas programowania takiego urządzenia dobrze poszaleć :-) i zrobić sobie jakiś prosty skaner częstotliwości z prezentacją radaru na ekranie ... a co tam, jak szaleć to konkretnie :)
Inny dość pokaźny zestaw tematyczny w nawiązaniu do Open Hardware to otwarte sieci czujników Wireless Sensor Network.
Zestawienie projektów opencore potwierdza dodatkowo zainteresowanie tematyką Free Hardware.
Kolejnym przykładem będą zabawki, jakie możemy stworzyć w oparciu o otwarty sprzęt oraz bardzo popularny temat otwartego sprzętu dla telefonów komórkowych t.j. OpenMoko
A tak kształtuje się zarys architektury Open Moko:
Pozostawiam Wam tymczasem kilka linków, które doprowadzą Was do ciekawych tematycznych stron:
SquidBee bezprzewodowy czujnik - Open Hardware and Source
Wiki na temat otwartego sprzętu
OpenServo - otwarty sterownik serwomechanzmu
Ethernut 1.3 Hardware
Opencores - otwarte architektury
SUN OpenSPARC CMT (Chip Multithreading) technology
Nut/OS Development on Debian Sarge
Ethernut Unix Emulation Installation
Wireless Sensor Network
How to Build an Open Source MIDI Keyboard