The Mars DIY Platform for rundt $ 100 (uten skjerm)


The Mars singel Kjørecomputer er en solid, men dyrere, alternativ til BeagleBone Black and Raspberry Pi for dine DIY maskinvarebehov. På et minimum, og tilbyr to hoder, hver med to kolonner med nålehull - perfekt for bare å spille rundt. En annen skiller seg ut funksjonen er berøringsskjermen kit som gjør Mars en god plattform for å bygge en tilpasset tablet, for eksempel.

I hjertet av Mars er en dual core Freescale i.MX6 Cortex-A9 med Vivante GC2000 grafikkprosessor. Styret har 1 gigabyte (GB) RAM og 4 GB eMMC lagring, mange skjermutganger inkludert LVDS og HDMI, flere USB 2.0-porter, gigabit LAN, og mange andre måter å samhandle gjennom sine overskrifter som SPI. Med The Mars kit, er LVDS en førsteklasses borger, med en 9,7-tommers LVDS multi-touch skjerm tilgjengelig.

Vi vil ta en titt på kombinasjonen kit, som inkluderer The Mars styret med ytterligere 9,7 tommers LCD som kjører på 1024x768, og er i stand til multi-touch input. The Mars selv går for rundt $ 100, mens kombinasjonen kit er rundt $ 290.

Den 9,7-tommers skjerm kommer i hva noen kan vurdere å være en tablett skall. Den eneste LVDS kabelen er tilstrekkelig til å gi både signal og kraft til skjermen. Den multi-touch informasjonen blir også sendt tilbake over LVDS-kabelen gjør det til en enkelt kabel løsning.

Dette kan være en flott kombinasjon for noen som ønsker å bygge en tilpasset tablet inkludert et lite bord med chips som er tilgjengelig fra utvidelseshodene i Mars. Bare legg et batteri og stropp ting til baksiden av skjermen for å bygge en ganske tykk, men tilpasset og inkluderende tablett! Dette etterlater åpne muligheten for å få to skjermer på LVDS og HDMI kommer på samme tid, slik at du kan kjøre eksterne skjermer etter behov.

Android på Mars

Jeg tok en titt på hva kom allerede lastet på 4 GB eMMC ved å koble en HDMI-skjerm, plugging i Mars og la den starte opp. Dette presenterte Android versjon 4.0.4 med modellnummeret ICS AOSP på imx6q. Snu ting av, koble den eksterne 9,7-tommers berøringsskjerm, og slår på igjen fikk jeg et rødt lys i øverst til høyre på skjermen kabinett og noen bakgrunnsbelysning men ingen signal. En kraft ned og koble av hoved HDMI ikke magisk flytte primære Android displayet over til den eksterne 9,7-tommers toucscreen. Du må gjøre en liten bit av fiksing og triksing på serie konsollen for å få LVDS-skjermen kommer med Android.

mini-USB-port ved siden av nettverkskontakten kan brukes til å få en serie konsollen til Mars bord. Treffer en tast i løpet av tre-sekunders nedtelling før oppstart, kan du justere oppstartsparametere. For å få den 9,7-tommers berøringsskjerm arbeider du må avbryte oppstart og kjøre under modifikasjon som jeg har stort sett tatt fra Mars bruksanvisningen. Det er sju forskjellige skjerminnstillinger vist i bruksanvisningen for et par ulike eksterne skjermstørrelser (mindre LCD-skjermer og den 9,7-tommers LVDS berøringspanel) og også HDMI. Hvis du kjører Android håndboken nevner også støtte for å kjøre både en ekstern skjerm og HDMI samtidig i en dual visningsmodus. Denne innstillingen er lagret i vedvarende minne av Mars, kan du tilbakestille til standard med Kjør clearenv
kommando

 Board. MX6Q-MARSBOARD: [WDOG] Boot Device: I2CI2C: readyDRAM: 1 GBMMC: FSL_USDHC: 0, FSL_USDHC: 1 ... Net: fikk MAC-adresse fra IIM: 00: 00: 00: 00: 00: 00 ---- enet_board_init: grafi resetFEC0 [PRIME] Hit en tast for å stoppe Autoboot: 0 MX6Q MARSBOARD U-Boot > setenv no_console_suspend 1MX6Q MARSBOARD U-Boot > setenv bootargs konsoll = ttymxc1,115200 init = /init rw video = mxcfb0: dev = LDB, LDB-XGA, if = RGB666 fbmem = 10M vmalloc = 400M androidboot.console = ttymxc1MX6Q MARSBOARD U-Boot > saveenvMX6Q MARSBOARD U-Boot > boot 

Den oppdaterte Android bildet fortsatt er versjon 4.0.4 av Android. Multitouch på LVDS-skjermen fungerer som forventet og zooming av bilder i galleriet er hyggelig og forståelsesfull. Du er nødt til å kopiere over noen bilder for testing som standard Android fordelingen for Mars er ganske spartansk.

Med MARS kjører Android, plugget jeg en USB-kabel inn i OTG mini USB-porten på Mars og andre enden til en stasjonær Linux-maskin, og jeg kunne deretter montere Mars som et filsystem. Så får data til og fra Mars ble ganske enkel. Dessverre, når enheten går i hvilemodus Jeg kunne ikke finne ut hvordan å bringe den tilbake til livet annet enn å bruke nullstillingsknappen. Mens skjermen har posisjoner i noen sideknapper, uten maskinvareknapper jeg ikke kunne tenke meg en enkel måte å våkne opp lager Android igjen. Det finnes apps for å tillate våkne opp uten maskinvareknapper selvfølgelig.

Legge Linaro på Mars

Den siste offisielle utgivelse for Mars er Linaro 11.10 (utvikling gren).

Dessverre prosedyren for å bruke en desktop Linux-maskin for å oppdatere Mars til en nyere versjon av Android eller endre Mars over til Linaro ikke er vist på Mars bøkene. Jeg brukte mfgTool program å skrive Linaro bildet til flash på Mars bord. Verktøyene er også tilgjengelig fra Embest Tech. Et ord av forsiktighet her: Hvis du brukte serie konsollen til å logge seg på Mars Du må flytte mini USB-kabelen over til OTG port (ved siden av HDMI port) for å kunne bruke mfgTool å oppdatere Mars. Jeg forlot USB-kabelen på serieporten, og det tok en stund å regne ut dette feil.

Hvis du vil laste et bilde, har en av hopperne (D2) på Mars for å bli slått til "On" og nullstillings styret. Etter å blinke, må du null at krysskoblingen tilbake til "Off" og tilbakestille Mars for å starte opp i det nye systemet. Referere til ca side 30 i brukerhåndboken for mer informasjon.

Mens det er ingenting galt med mfgTool, ville det være fint å kunne flashe Linux bildet på Mars fra en stasjonær Linux-maskin.

Får nærtagende henhold Linaro

Selv om dokumentasjonen Mars nevner ikke støtte for å kjøre LVDS henhold Linaro, fant jeg ut at de ovennevnte kommandoen som gjorde skjermen på Android også aktivere den på Linaro. Selv ved første jeg hadde ingen berøringsskjerm evne

Graving rundt git repository for kjernen brukes av Mars jeg fant følgende begår.

 begå 4006c19c6beda96a0bd5855a1ab27a7b2e380cb5Author: luofuchong Dato: To 24 oktober 15 : 10: 09 2013 + 0800Add enkel berøring støtte for LCD8000-97C bruker på ubuntu & eMMC fikse til mmcblk0. 

Dessverre den nyeste Linux bilde for Mars var fra 17 september 2013, så for å teste ut enkelt touch jeg måtte kompilere og installere en ny kjerne for Mars. Forhåpentligvis en ny Linux bildet vil bli løslatt snart, og du vil ikke bli møtt med å måtte gjøre en kjerne kompilere rett utenfor balltre å bruke skjermen som en berøringsskjerm.

 ... Kjernen versjonen av Sist oppdatert bilder for Mars. $ uname -aLinux linaro-ubuntu-desktop 3.0.15-01361-g6cd3d53-dirty # 2 SMP PREEMPT Ons 28 august 13:42:52 CST 2 013 armv7l armv7l armv7l GNU /Linux 

The Mars bruksanvisningen foreslår å sette opp Ubuntu i en virtuell maskin og krysser kompilere Linux-kjernen for Mars. Siden Mars styret er dyktige nok maskinvare til å kompilere egen kjerne jeg bestemte meg for å kompilere på Mars selv. Jeg måtte gjøre det under linker slik at kompilatoren ble funnet:

 # ls -l /usr /bin /arm-FSL * lrwxrwxrwx 1 root root 2 2014-03-27 23:55 /usr /bin /arm-FSL-linux-gnueabi-ar - > arlrwxrwxrwx 1 root root 3 2014-03-27 23:52 /usr /bin /arm-FSL-linux-gnueabi-gcc - > gcclrwxrwxrwx 1 root root 2 2014-03-27 23:54 /usr /bin /arm-FSL-linux-gnueabi-ld - > ldlrwxrwxrwx 1 root root 2 2014-03-28 01:17 /usr /bin /arm-FSL-linux-gnueabi-nm - > nmlrwxrwxrwx 1 root root 7 2014-03-28 01:06 /usr /bin /arm-FSL-linux-gnueabi-objcopy - > objcopylrwxrwxrwx 1 root root 7 2014-03-27 23:54 /usr /bin /arm-FSL-linux-gnueabi-objdump - > objdump 

Så nedenfor kommandoene vil vekke den nyeste kernel fra samme gren som den som allerede var i gang. At kjernen skjer også å inneholde berøringsgrensesnittet oppdateringen. Det tar lang tid, på ordre fra lett over en time å kompilere kjernen, så hvis du gjør utvikling på kjernen da korset kompilere miljøet vil trolig være veien å gå.

 $ git klone https://github.com/embest-tech/linux-imx.git$ cd ./linux-imx$ git checkout embest_imx_3.0.15_12.04.01 $ gjøre imx6_defconfig $ gjøre KALLSYMS_EXTRA_PASS = 1 uImage ... Image arch /arm /boot /uImage er klar $ ls -l arch /arm /boot /uImage-rw-rw-r-- 1 ben ben 3.645.672 2014-03-28 01:24 arch /arm /boot /uImage 

Selv om det er en uImage fil i /boot som ikke er kjernen at Mars er bruker. Hvis du ser på partisjonstabellen for 4 GB flash på Mars vil du se at det er et gap igjen før den eneste partisjonen. Dette gapet er der oppstartslasteren og kjører Linux-kjernen er lastet fra

 root @ linaro-ubuntu-desktop:. ~ # Fdisk -l /dev /mmcblk0 Device Boot Start Slutt Blocks Id System /dev /mmcblk0p1 20480 7798783 3889152 83 Linux 

Se oppstartsprosedyren på en seriell terminal du kan se den nøyaktige plasseringen hvorfra U-Boot bootloader lastet Linux-kjernen. Følgende dd kommandoen vil ta tak i dagens Linux-kjernen fra flash-minnet og bruke od
å vise den i en mer menneskelig lesbart format. Legg merke til at du starter på byte 32 (40 oktal) Linux kernel versjon lagres

 root @ linaro-ubuntu-desktop. /Tmp # dd if = /dev /mmcblk0 av = test bs = 1024 count = 10000 skip = 102410000 + 0 elementer in10000 + 0 poster out10240000 byte (10 MB) kopieres, 0.319027 s, 32,1 MB /sroot @ linaro-ubuntu-desktop: /tmp # od -tc test > test.od^croot@linaro-ubuntu-desktop: /tmp # vi test.od ... 0000040 L inux - 3. 0. En 5 - 0 1 30000060 6 1 - g 6 cd 3 d 5 3 - skitt 

Jeg kjørte kommandoen nedenfor for å kopiere min oppdatert /boot /uImage til om bord flash på stedet at U-Boot forventet å være lagret. Selvfølgelig tok jeg en god back up av hele start til mmcblk0 først og deretter kjørte kommandoen ovenfor for å bekrefte at den nye "L inux" og så videre versjon streng dukket opp på forventet sted med forventet verdi. Kontroller at du har en backup og recovery plan før du spiller med faste forskyvninger og dd som dette. Jeg var ikke sikker på hva staten mine Mars ville være i etter at jeg kjørte kommandoen, og var forberedt på å gjenbruke mfgTool å reflash Mars og prøv igjen.

 # dd if = /boot /uImage of = /dev /mmcblk0 bs = 1024 søke = 1024 

Etter en omstart ble jeg kjører mitt oppdatert kernel og hadde enkel berøring arbeider på skjermen. Jeg hadde også oppdatert X Server litt, også, som en forberedelse til kontakt med de nedenfor kommandoer.

 $ uname -aLinux linaro-ubuntu-desktop 3.0.15-01365-ge16f9b9 # 1 SMP PREEMPT Fre Mar 28 01:17:29 UTC 2014 armv7l armv7l armv7l GNU /Linux # apt-get remove xserver-xorg-inngang-Synaptics # apt-get install xserver-xorg-inngang-tslib libts-bin 

Det er en ulempe å gjøre enkelt trykk på Linux på denne måten, når du trykker ned og beveger fingeren det tilsvarer å holde nede museknappen og dra musen rundt. Så hvis du er vant til å rulle en nettleser på en tablett for eksempel, så vil du være litt overrasket når du begynner å velge tekst i Firefox ved hjelp av én touch-grensesnitt. Jeg mistenker at dette kan være arbeidet rundt for leseren av en utvidelse, men den samme uventet (ikke rulle) atferd vil være venter i andre programmer. Du vil sannsynligvis ønske å sette opp en myk tastatur henhold Linaro så vel slik at du kan skrive på skjermen. På den annen side den eneste kontakten skal fungere godt for tilpasset QtQuick brukergrensesnitt.

Maskinvare Interaksjon

Kjører Linux på Mars styret utsetter GPIO pins bruker /sys /class /GPIO katalogen. Dette er den samme metoden jeg har vist i en tidligere artikkel på BeagleBone svart. Likeledes, avbryter på GPIO pins bør også fungere på samme måte som på BeagleBone svart. Det er også tre TWI enhetsfiler som er opprettet i /dev, selv om jeg fortsatt jobber ut hvordan å lage en /dev /spi vises

 root @ linaro-ubuntu-desktop:. ~ $ Ls -l /sys /klasse /GPIO /totalt 0 - w ------- 1 root root 4096 1970-01-01 01:09 exportlrwxrwxrwx en root root 0 1970-01-01 01:09 gpiochip0 - > ../../devices/virtual/gpio/gpiochip0lrwxrwxrwx 1 root root 0 1970-01-01 01:09 gpiochip128 - > ../../devices/virtual/gpio/gpiochip128lrwxrwxrwx 1 root root 0 1970-01-01 01:09 gpiochip160 - > ../../devices/virtual/gpio/gpiochip160lrwxrwxrwx 1 root root 0 1970-01-01 01:09 gpiochip192 - > ../../devices/virtual/gpio/gpiochip192lrwxrwxrwx 1 root root 0 1970-01-01 01:09 gpiochip32 - > ../../devices/virtual/gpio/gpiochip32lrwxrwxrwx 1 root root 0 1970-01-01 01:09 gpiochip64 - > ../../devices/virtual/gpio/gpiochip64lrwxrwxrwx 1 root root 0 1970-01-01 01:09 gpiochip96 - > ../../devices/virtual/gpio/gpiochip96--w------- 1 root root 4096 1970-01-01 01:09 unexport 
Ytelse

Bonnie ønsker å skape filer som er dobbelt så stort som det tilgjengelige minnet på systemet for å unngå disk cacher interfererer med referanseindeksen. Mars har 1 GB RAM, og jeg hadde ikke en full 2 ​​GB lagringsplass gratis, så jeg bestemte meg for å begrense størrelsen på filene til et par hundre megabyte. Kommandoen er vist nedenfor, og er den samme kommandoen brukes til å teste flash-lagring på BeagleBone Svart

 user @ mars:. ~ /Test $ /sbin /bonnie ++ -f -m mars -s 200 -r 100 -d `pwd` 

The Mars fikk 4,7 megabyte /sekund (MB /s) for produksjon og 3,5 MB /s for omskriving. I motsetning til BeagleBone Svart fikk 4,2 MB /s og 4,5 MB /s henhold og ODroid-U2 quad core ARM fikk 16 MB /s og 12 MB /s hhv. Jeg ble litt overrasket over ytelsen på Mars som det føles som en ganske rask maskin; etter å ha kjørt Bonnie Mars var å bruke 150 MB for disk cache. Kanskje 1 GB RAM tillatt mer generelle disk cache enn noen maskiner og hjalp til med det som oppfattes som hastigheten på Mars styret.

For å teste 2d grafikkytelse brukte jeg versjon 1.0.1 av Kairo Ytelse Demos. Den gears test kjører tre snu tannhjul; diagrammet kjører fire linje grafer; fisken er en simulert akvarium med mange fisk som svømmer rundt; gradient er en fylt buet edged bane som beveger seg rundt på skjermen; og blomster renders roterende blomster som beveger seg opp og ned på skjermen. Til sammenligning brukte jeg en stasjonær maskin som kjører en Intel 2600K CPU med en Nvidia GTX 570-kort som kjører to skjermer, en på 2560x1440 og andre på 1080p. Det er interessant at Mars var så mye raskere på gradient, men betydelig tregere på fisken demo.

 BBB fps Mars fps desktop 2600k /nv570 på 720p LVDS på to skjermer. 1024x768 tannhjul 26 18 140 chart 2 2 16 fisk 4 0.3 188gradient 10 17 117flowers 1 2 170 

De Octane 2,0 Javascript benchmark måler hvor godt nettleseren utfører ulike oppgaver. Jeg brukte Firefox versjon 20.0 + build1-0ubuntu0.11.10.3 som fulgte med oppdateringer til Linaro for Mars for å kjøre Octane, noe som gir 930 for spriker, 60 for Regexp, 1 011 for pdf.js. Dessverre bremset testen til en gjennomgang under Box2DWeb så den totale tallet er ikke tilgjengelig. Til kontrast, den BeagleBone Svart fikk 827, 88, og 401 for henholdsvis spriker, Regexp, og pdf.js.

Strømbruk

Med 9,7-tommers LVDS berøringspanel tilkoblet og sitter på en inaktiv Linaro desktop, The Mars forbrukes rundt 5,4 watt (W). Kjøre en to parallelle oppgave bygger på OpenSSL 1.0.1e varierte opp til 7,7 W effekt. Når 9,7-tommers skjerm går i dvale, men Mars er fortsatt kjører strøm faller til 3,3 W. Running glxgears med skjermen på brukt 8,9 W, slik at 3D-ting var å bruke 4,5 W helt av seg selv.

Med kraften uavgjort for OpenGL jeg brukte en Scythe USB temperatursensor for å se hvordan chip gjorde. Tabellen nær Mars målt 32,4 C. Etter å ha kjørt glxgears for en stund jeg målte 62 C på CPU. Leter rundt for temperatur skjermer på Mars selv, fant jeg filen /sys /enheter /virtual /termisk /thermal_zone0 /temp som også krøp opp til 61 når du kjører glxgears.

Pakk opp

dual core Mars bord tilbyr 1 GB RAM, en stor nok on-board flash å fortsatt ha over en gigabyte gratis etter Linaro er installert, og en haug med overskrifter å spille med. LVDS-skjermen fungerer godt når programvaren er satt opp. Hovedresterende spørsmålet er hvordan man skal sette opp multitouch innspill under Linux. Nettverkstilkoblingen være på gigabit hastighet kan også gjøre MARS det riktige valget hvis du trenger en rask nettverksforbindelse. Mars har også en bedre CPU (dual core) og minne spesifikasjon (1 GB) i forhold til BeagleBone Svart og Raspberry Pi. Selvfølgelig er dyrere enn BeagleBone Black and Raspberry Pi samt Mars styret.

Gitt at plasseringen av Linux-kjernen er kjent og den eneste andre filsystem inneholder Linaro installasjonen, vil det være interessant å se hva andre og nyere Linux-installasjoner kan gjøres for Mars. Jeg er fortsatt mekke med å få en Linux desktop over både de LVDS og HDMI-skjermer.

Vi vil gjerne takke element14 for levert anmeldelser maskinvare for denne artikkelen.