MinnowBoard: $ 200 Atom-baserte Maker Board

MinnowBoard pakker en SATA, gigabit ethernet-port, og PCI Express-tilkobling med HDMI og USB-avskjær man forventer fra en moderne Single Board Computer (SBC). Den MinnowBoard bringer også en Atom CPU med Intel GMA 600 grafikk, 1 GB RAM, 4 GB flash-lagring, en håndfull GPIO porter for å tinker med og begynnelsen på en datter samfunnet.

Den første duaghterboard er BoB som tilbyr flere GPIO, SPI, I2C og UART overskrifter. De datter omtales som lokker i MinnowBoard samfunnet, mye som Ardunio Shields og Beagle Capes. Den hvite header vises øverst til venstre på bildet nedenfor inneholder mange godbiter som PCIE, SATA, USB, UART, I2C og SPI.



Oppstart styret

Etter oppstart av MinnowBoard for første gang ble jeg automatisk logget inn i en GNOME kjører på 1600x900. Det tok en stund for den dårlige skriftgjengivelse på min LCD å lede meg merke dette og endre til 1080p oppløsning. Den Angstrom Linux Distribution som er standardvalget for MinnowBoard viser tegn til sin innebygde arv. For eksempel, er standard shell /bin /sh og dropbear ssh daemon kjører i stedet for OpenSSH. Jeg oppdaget den sistnevnte fordi dropbear ikke var tillater tilkoblinger. Det var ikke nekte dem, men sviktet med en feilmelding om buffere.

Litt av stokking med opkg pakkebehandleren som Angstrom bruker og jeg hadde en fungerende openssh-server oppe og går. Jeg fant senere ut at jeg måtte installere nfs-utils-klient for å montere en NFS aksje fra MinnowBoard. En endelig hikke var å måtte laste ned og installere Firefox manuelt fordi det ikke vises i opkg oppføring.

Grafikk ytelsestester

Jeg deretter slått til å se hvordan den GMA 600 jobbet på brettet . Først mplayer på Big Buck Bunny, jeg mistet skrivebordet og kunne bare se terminalen teksten før drapet mplayer over SSH. Deretter oppmerksomhet ble slått til Kairo demoer for å se hvordan 2D grafikkytelse var. Blomster fikk 0,5 fps og tannhjul 6,6 fps. Den tannhjul Nummeret er direkte i tråd med hva theGK802 kunne få, men godt under 25+ FPS at Beagle Bone Svart ga da den kjørte på 720p. For referanse, en stasjonær maskin som kjører en Intel 2600K med et NVIDIA 570 grafikkort fikk 140 FPS i gir.

Etter å grave i litt, GMA 600 er basert på en PowerVR chip og det synes Linux-støtte kan kreve litt fiksing og triksing for å komme i gang. Jeg kontaktet Scott Garman fra Intel Open Source Technology Center som svarte at "Patrik Jakobsson er vedlikehold åpen kildekode GMA500 kernel driver. Han har i dag en MinnowBoard og arbeider med inkludert noen 2D akselerasjon i det. Med litt hell han håper For å få det inkludert i den kommende 3.12 kernel ".

Programmering i styret

Mine første tanker for programmering på MinnowBoard ble Skifte en LED og litt lys GPIO programmering å gjøre en lignende ting . Begge de som har blitt gjort og godt dokumentert for meg at jeg måtte sikte litt høyere. De 8 GPIO pinnene på J9 header blokken kan leses og skrives via /sys /class /GPIO filsystem akkurat som med Beagle Bone Svart. Dette er fantastisk for kode portabilitet, kan det hende du må endre banen som GPIO fil som skal brukes, men kode skrevet for Linux GPIO skal fungere på tvers av en rekke hardware. For MinnowBoard det er en advarsel om å overbelaste de GPIO pins ved å gå over 3.3V /10mA som kan forårsake permanent skade.

Synlig i bildet nedenfor er arbeidet i gang med det endelige målet om å ha den MinnowBoard stasjonen noen 595 skiftregistre drive en haug med lysdioder som bruker en ekstern strømkilde. Som på diagrammet scenen, er transistor krets på toppen igjen av større brødfjel blir vedtatt ved å la lysene ganske svakt opplyst De to ICs i bunnen brødfjel av figuren er 595 skiftregistre. Disse arbeider med en lås, klokke og datalinje, snu disse tre linjer inn i noen multiplum av 8 utgangslinjer. Dette er fordi hver 595 har 8 utganger og kan kjeden til en etterfølgende skiftregister 595 som i seg selv kan kjede til en annen, og så videre. Bruke 595s kan raskt gi deg mange utgangslinjer fra kun 3 GPIO overskrifter på Minnowboard.

For å programmere 595 du holder låsen linje lav, skriver en bit av data (høye eller lave) til datalinjen og puls klokkelinjen for å få 595 ta hva verdien på datalinjen er for tiden som den neste bit av input. Når du er ferdig kan frigi hold på låsen linje (sette den høyt igjen) som instruerer 595 til utgangs dine data. Den 595 gjør ingen endringer i sin produksjon mens du er skiftende dine data i å bruke data og klokke linjer. Endringene i produksjonen av 595 skje på en gang når du slipper låsen linje.



Running Arduino funksjoner

I koden har jeg reimplemented noen Arduino funksjoner på toppen av Linux kernel /sys /class /GPIO filsystem. Selv om disse funksjonene er lik de Arduino seg, gjør programmet og minnestørrelse restriksjoner av Arduino programmerings ikke gjelder, og du kommer til å velge hvilket språk du vil, for meg denne gangen er det C ++. Først Arduino lignende funksjoner, pinMode () setter en GPIO pin for å lese eller skrive, digitalWrite () setter en enkelt boolsk verdi til et GPIO pin, og shiftOut () sender en oktett av biter til en datalinje pulserer døgnet som det går .

 #include < streng > #include < fstream > #include < iostream > #include < bitset > bruker namespace std; #include < unistd.h > enum pinMode {INPUT = 0, OUTPUT = 1}; static void pinMode (std :: string pin, pinMode modus) {ofstream oss ((pin + "retning") .c_str ()); if (mode) oss < < "ut" < < tømme; annet oss < < "i" < < flush;} enum writemode {LOW = 0, HIGH}; static void digitalWrite (string fname, int tilstand) {ofstream oss ((fname + "/value") c_str ().); oss < < state < < flush;} enum shiftOutMode {MSBFIRST = 1}; static void shiftOut (const string & data, const string & klokke, enum shiftOutMode, røye brukerdata) {for (int i = 7; i > = 0; --Jeg) {digitalWrite (klokke, 0); int v = !! (brukerdata & (1 < < i)); digitalWrite (data, v); digitalWrite (klokke, 1); usleep (20); digitalWrite (klokke, 0); usleep (20); }} 

Hovedprogrammet er vist nedenfor, først de tre linjene er satt for produksjon og de to oktetter av data er satt til en utgangsverdi. Hver iterasjon låsen holdes mens data forskyves inn i ICs 595 og sperren frigjøres. De neste 6 linjer bare skifte de to oktetter av en bit som en sirkulær buffer. For enkelhets skyld en bitset < 16 > kunne brukes som vil redusere de 6 linjer rett ned. Denne koden starter så en Arduino skisse fortsatt forlater refactoring gjøres

 int data [4];. Int main (int argc, røye ** argv) {std :: string DATA ("/sys /class /GPIO /gpio251 /"); //PIN 10 std :: string KLOKKE ("/sys /class /GPIO /gpio249 /"); //PIN 8 std :: string klinke ("/sys /class /GPIO /gpio247 /"); //PIN 6 data [0] = 0xE2; data [1] = 0xAD; pinMode (klinke, UTGANG); pinMode (Data utgang); pinMode (KLOKKE, UTGANG); while (true) {digitalWrite (klinke, LOW); shiftOut (DATA, klokke, MSBFIRST, data [0]); shiftOut (DATA, klokke, MSBFIRST, data [1]); digitalWrite (KLOKKE, 0); digitalWrite (klinke, HIGH); int B0 = data [0] & 0x1; int b1 = data [1] & 0x1; data [0] > > = 1; data [1] > > = 1; data [0] | = (b1 < < 7); data [1] | = (b0 < < 7); cerr < < "data [0]:" < < (bitset < 8 >) data [0] < < "Data [1]:" < < (bitset < 8 >) data [1] < < endl; usleep (1000 * 1000); } Return 0;} 
Speed ​​ytelsestester

Når det gjelder ytelse, fikk den MinnowBoard 1 164 sammenlagt i Octane. Til sammenligning TI ARM OMAP5432 (Dual core A15) på 800MHz fikk 1914, IFC6410 quad ARM A15 Snapdragon fått 1 439, og ODroid-U2 quad core ARM fikk 1411. OpenSSL 1.0.1e "speed" ytelse for MinnowBoard for 1 024 bit RSA fikk 89 tegn /s og 1 562 bekrefte /s. Dette setter MinnowBoard på litt over en tredjedel antall RSA operasjoner /sek at IFC6410 quad ARM A15 Snapdragon kan utføre.

MinnowBoard er i parken ballen på rundt halvparten av RSA ytelsen til Beagle Bone Svart . Som Octane benchmark kan dra nytte av flere tråder av henrettelsen den MinnowBoard utført rimelig tett til ARM maskiner. Det ville synes at koden for OpenSSL som fulgte med MinnowBoard ikke kan ha blitt optimalisert som best det kunne for Atom CPU det ble kjørt på.

Strøm kloke MinnowBoard tok 9,2 watt ved en inaktiv desktop , opp til 10,5 når et tastatur og mus der koblet til med en passiv hub. Fortsatt med hub som er koblet til resten av tallene, strømforbruk flyttet opp til 10,8 i løpet av en openssl speed test. Selv kjører Octane benchmark topper opptil 11,5 watt der sett. Som med alle artiklene i denne serien, jeg bruker en Belkin på veggen meter for å måle strøm, så disse tallene alle også inkludere ineffektiviteten av strømforsyningen.

Bringing PCIE til maker markedet er en fantastisk ting. Den MinnowBoard har 1 GB RAM og en enkel (Hyper gjenget) kjerne. Det er high end ARM styrene kommer med 2 GB RAM, for eksempel ODroid-U2. Det finnes også de med bare 512 MB RAM som Raspberry Pi Model B og Beagle Bone svart ($ 45).

Det vil være interessant å se hva varianter av MinnowBoard stige opp, drar nytte av den åpne design med "Tilpasninger mulige uten å logge NDAs" og tilgjengelig informasjon om styret selv (nederst på linket side). Vi ønsker å takke Intel Open Source Technology Center for å gi en vurdering prøve. Anmeldelser