Platformy embedded typu Open Hardware

| Technika

Komercyjny sukces Linuksa, Open Office czy Firefoksa zapewnił popularność idei otwartego oprogramowania oraz licencjom opartym na GNU. Projekty te zachwiały całym systemem patentów i pilnie strzeżonej technologii, wpłynęły również na szybki rozwój wielu dziedzin elektroniki konsumenckiej. Udostępnienie darmowych algorytmów, stosów protokołów lub sterowników zapewniło skuteczne testowanie i rozwijanie urządzeń.

Platformy embedded typu Open Hardware

Rys. 1. Arduino Uno z procesorem Atmega328

Jednocześnie możliwe stało się projektowanie i wdrażanie nowych produktów bez wielkich nakładów i ryzyka finansowego. Okazało się także, że dzięki darmowemu oprogramowaniu powstało wiele nowych firm zajmujących się wdrażaniem, szkoleniami oraz dopasowywaniem wolnych aplikacji do specyficznych wymagań klientów. Dzięki tak dużemu sukcesowi licencje GNU zaczęto wdrażać w wielu dziedzinach.

Ważnym dla inżynierów zjawiskiem jest powstawanie otwartych projektów urządzeń, które zawierają schemat, projekt PCB, wykaz elementów oraz oprogramowanie. Dziedzina ta rozwija się od dawna, za pierwsze przykłady takich projektów można uznać projekty publikowane w specjalistycznych czasopismach lub udostępniane schematy urządzeń AGD.

Jednak od niedawna zaczęły rozwijać się gotowe platformy, które można kupić w kilku produkowanych wersjach i dopasować do własnych potrzeb. Na rynku znajdziemy układy bazujące na prostych procesorach 8-bitowych, pozwalające na budowanie systemów sterowania i automatyki i bardzo wydajne platformy, pozwalające na budowanie systemów rejestracji i obróbki obrazów.

Arduino - uniwersalna 8-bitowa platforma

Pierwszym przykładem intensywnie rozwijającego się projektu Open Hardware jest platforma Arduino. Procesory rodziny ATMega są od dawna jednymi z najbardziej rozpowszechnionych i ulubionych układów wśród elektroników. Ten sukces wynika przede wszystkim z następujących cech:

  • zastosowania wbudowanej pamięci Flash i RAM, co znacznie ułatwiło projektowanie układów,
  • udostępnienia darmowego środowiska programistycznego AVR Studio,
  • łatwego programowania układów poprzez interfejs ISP,
  • rozwoju darmowego kompilatora (AVR-GCC) oraz biblioteki (AVRlibc),
  • niskiej ceny i łatwego dostępu do układów.

Rys. 2. Netduino z procesorem ARM7

Te właśnie cechy spopularyzowały układy ATMega wśród inżynierów elektroników, jednak z tych udogodnień można było korzystać, posiadając podstawowe programowanie. Barierę tę przełamał projekt Arduino - rozpowszechnienie gotowego schematu oraz projektu PCB umożliwiło wielu firmom produkcję gotowych układów, które mogą być wykorzystywane na wiele sposobów.

Dzięki powstaniu międzynarodowej grupy użytkowników, projekt Arduino zaczął przypominać rozwiązania firmy Lego, gdzie łącząc w różnych konfiguracjach dostępne moduły można zbudować własne specyficzne urządzenia. Założeniem projektantów Arduino było dalsze ułatwienie pracy z systemami wbudowanymi. Cel ten osiągnięto dzięki kilku zabiegom. Pierwszy wspomaga pisanie programu.

Arduino programuje się za pomocą specjalnego języka opartego o środowisko Wiring i przypominającego trochę języki C/C++. Pierwszy program można napisać, używając dwóch funkcji setup i loop. Drugi ułatwia pracę z platformą. Udostępniono darmowy i otwarty interfejs użytkownika. Został on napisany w języku Java i umożliwia zarówno pisanie programu, kompilację, zgrywanie programu na platformę, jak i późniejszą komunikację z układem.

Ostatni zabieg ułatwia wgrywanie oprogramowania. Systemy Arduino dostarczane są z zapisanym prostym bootoaderem. Dzięki temu można je bezpośrednio programować poprzez interfejs RS232, USB, a nawet Bluetooth. Oficjalna wersja Arduino obejmuje obecnie 12 wersji płyt bazowych różniących się głównie zastosowanym procesorem (od Atmega8 do Atmega1280). Procesory te różnią się głównie ilością pamięci Flash i RAM oraz liczbą wejść i wyjść.

Każdą z tych płyt można połączyć z zewnętrznymi modułami zwanymi shieldami. Układy te są opracowywane przez niezależne firmy (np. Sparkfun, Olimex czy Adafruit) i po wstępnej akceptacji trafiają na oficjalną listę http://shieldlist.org. Aktualnie na liście znajduje się ponad 200 układów, wśród których znajdziemy np. moduły bezprzewodowej komunikacji (GSM, Bluetooth, ZigBee, WiFi), Ethernet, USB Host, moduł z panelem dotykowym, sterownik silników itp.

Na stronach użytkowników systemu Arduino można znaleźć wiele gotowych projektów wraz z pełnym opisem. Udostępniono także wiele darmowych książek w formacie PDF, które pozwalają rozpocząć pracę z systemem zarówno początkującym, jak i doświadczonym inżynierom.

Netduino - programowanie ARM7 w C#

Rys. 3. Beagleboard

Poszukując otwartej platformy ze średniego segmentu, napotkamy pewne trudności. Zarówno projekt Arduino, jak i opisany niżej Beagleboard rozwijają się bardzo dynamicznie dzięki dużej grupie użytkowników. Pierwszy z nich wyróżnia niska cena i prosta budowa, drugi jest bardzo wydajny i umożliwia pracę z systemem Linux. Na bazie procesorów o możliwościach podobnych do rodziny ARM7, taktowanych częstotliwościami rzędu kilkudziesięciu MHz, powstało kilkanaście platform. Wśród nich na uwagę zasługują:

  • Projekt Maple opracowany w firmie Leaflaps zawierający 32-bitowy procesor STM ARM Cortex M3 taktowany zegarem 72 MHz oferujący 120KB pamięci Flash i 20KB RAM,
  • Układy referencyjne dla procesorów NXP produkowane przez firmę micro - Builder.eu. Jeden z przykładowych projektów bazuje na procesorze LPC1343 ARM Cortex M3 taktowanym zegarem 72 MHz zawierającym 32KB pamięci Flash i 8KB RAM
  • Netduino - projekt rozwijany jako odgałęzienie projektu Arduino bazuje na procesorze AtmeL AT91SAM7 taktowanym zegarem 48 MHz zawierającym 128KB pamięci Flash i 60KB RAM

Najciekawszą propozycją jest projekt Netduino. Jako jedyny jest sprzedawany w Polsce, a jego budowa zapewnia kompatybilność z modułami rozszerzającymi projektowanymi dla Arduino. Rozpoczynając pracę z tym urządzeniem, ściągamy z sieci trzy darmowe komponenty - Microsoft Visual C# Express 2010, w którym będziemy tworzyli oprogramowanie, Microsoft. NET Micro Framework v4.1 SDK - darmowy framework. NET oraz Netduino SDK v4.1 - środowisko i biblioteki dla Netduino.

Idea projektu opiera się na zastosowaniu darmowej platformy. NET w wersji dla urządzeń wbudowanych. Platforma ta kompilowana i uruchamiana jest w systemie docelowym. Skompilowana platforma wymaga 256KB pamięci Flash i 64KB pamięci RAM, oferuje około 70 klas oraz 420 metod do obsługi pamięci EEPROM, Flash, GPIO, SPI czy USB. Środowisko Netduino współpracuje z Visual Studio i zapewnia edycję, kompilację kodu, wgrywanie kodu na płytkę (Netduino podobnie jak Arduino ma wbudowany bootloader). Debugowanie programów możliwe jest zarówno w emulatorze Visual C#, jak i w systemie.

Beagleboard - minikomputer

Tabela. Zestawienie popularnych platform typu Open Hardware

Platforma Beagleboard jest w zasadzie gotowym małym komputerem, pozbawionym wentylatorów. Można na nim bez problemu uruchomić pełną dystrybucję Linuksa - Angstrom, Ubuntu, a od niedawna także Androida. Oferuje sprzętową akcelerację 2D i 3D oraz pozwala na podłączenie myszek, klawiatur, kamer internetowych czy modułów Wi-Fi.

Dzięki ogromnej liczbie dostępnych tutoriali uruchomienie płytki nie zajmie więcej niż 30 minut, a po kilku godzinach będziemy w stanie uruchomić swoje pierwsze aplikacje. Możliwości programowania są w zasadzie nieograniczone, programy można pisać w językach Ansi C, C++ lub stosować skrypty powłoki Bash.

W najprostszej formie kompilacja programów może odbywać się na platformie, a w przypadku rozbudowanych projektów można wspomóc się cross-kompilatorem na PC. W systemie Linux można uruchomić wirtualną maszynę Javy lub interpretery języków takich jak Python, Ruby czy PHP. Aktualnie udostępnionych jest 208 oficjalnych projektów bazujących na platformie Beagleboard.

Wśród nich znajdziemy w pełni funkcjonalny moduł dla Androida (dodatkowy wyświetlacz z panelem dotykowym). Udostępniony schemat zawiera 10 stron, na których znajdziemy gotowe schematy podłączania pamięci DDRAM, USB OnTheGo, złącze DVI-D czy wejście kamery. Dotychczas ukazały się 4 wersje projektu, do każdej z nich udostępniony jest cały schemat w formacie PDF, pliki Gerber, projekt OrCAD, lista elementów (BOM) oraz pliki programu Allegro.

Bartłomiej Grześkowiak

Zobacz również