MarS Board da Embest Technology
- por Sergio Prado
A MarS Board é uma placa desenvolvida pela Embest, uma empresa provedora de soluções de hardware e software na área de sistemas embarcados, e que foi adquirida pela Farnell em 2012 (é a mesma empresa por trás do desenvolvimento da ferramenta CooCox).
Este novo kit de desenvolvimento segue a onda de placas como a Wandboard, multicore, com boa capacidade de processamento e ótima relação custo/benefício, perfeita para projetos DIY com requisitos de alto processamento e aplicações multimedia.
A placa é pequena (um pouco maior que a Beaglebone Black), medindo 65mm x 102mm:
O HARDWARE
A MarS Board é baseada na plataforma i.MX6 da Freescale, contendo dois núcleos ARM Cortex-A9 rodando à 1GHz e GPU Vivante GC2000 para aceleração gráfica 2D/3D, capaz de rodar vídeos com resoluções de até 1080p. Ela vem com 1G de memória RAM DDR3 e 4GB de armazenamento interno (eMMC).
Possui conectores para interfaces de vídeo HDMI, LVDS e LCD, mas não possui um conector para saída de áudio. Contém ainda as interfaces de comunicação USB host, USB OTG, USB/Serial para Debug e Ethernet 10/100M/1Gbps, um conector para cartão SD/MMC, um botão de reset, chave para seleção de modo de boot, e dois conectores laterais de 40 pinos cada, totalizando 80 pinos de I/O, com interfaces de audio, CAN, SPI, câmera, PWM, SPDIF, UART, etc.
PRIMEIROS PASSOS
Toda a documentação, código-fonte e imagens dos sistemas operacionais suportados podem ser baixados no site da Embest, na seção Download. No momento, a MarS Board suporta o Ubuntu, Android e uC/OS-II.
O esquemático da placa esta disponível, mas o projeto não é open-source, já que outras documentações como arquivos gerber e BOM não estão disponiveis.
Para testar a placa é necessário um cabo mini USB para o acesso à console e uma fonte de alimentação 5V/4A. Então é só abrir uma aplicação de terminal na sua máquina configurada à 115200 8n1, ligar a placa e ver o processo de boot:
U-Boot 2009.08-svn7 (Mar 26 2013 - 10:05:25) CPU: Freescale i.MX6 family TO0.0 at 792 MHz Temperature: 43 C, calibration data 0x5764ec69 mx6q pll1: 792MHz mx6q pll2: 528MHz mx6q pll3: 480MHz mx6q pll8: 50MHz ipg clock : 66000000Hz ipg per clock : 66000000Hz uart clock : 80000000Hz cspi clock : 60000000Hz ahb clock : 132000000Hz axi clock : 264000000Hz emi_slow clock: 29333333Hz ddr clock : 528000000Hz usdhc1 clock : 198000000Hz usdhc2 clock : 198000000Hz usdhc3 clock : 198000000Hz usdhc4 clock : 198000000Hz nfc clock : 24000000Hz Board: MX6Q-MARSBOARD:[ WDOG] Boot Device: I2C I2C: ready DRAM: 1 GB MMC: FSL_USDHC: 0,FSL_USDHC: 1 JEDEC ID: 0xbf:0x25:0x41 [...] MMC read: dev # 1, block # 2048, count 8192 ... 8192 blocks read: OK ## Booting kernel from Legacy Image at 10800000 ... Image Name: Linux-3.0.15-svn7 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3692452 Bytes = 3.5 MB Load Address: 10008000 Entry Point: 10008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Linux version 3.0.15-svn7 (luofc@TIOP) (gcc version 4.4.3 (GCC) ) #1 SMP PREEMPT Mon Mar 25 12:07:59 CST 2013 CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache Machine: Freescale i.MX 6Quad Mars Board Memory policy: ECC disabled, Data cache writealloc PERCPU: Embedded 7 pages/cpu @8c008000 s5440 r8192 d15040 u32768 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 210944 Kernel command line: console=ttymxc1,115200 root=/dev/mmcblk0p1 rootwait rw video=mxcfb0:dev=lcd,4.3inch_LCD,if=RGB24 video=mxcfb1:dev=hdmi,1920x1080M@60,if=RGB24 PID hash table entries: 4096 (order: 2, 16384 bytes) Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [...] VFS: Mounted root (ext3 filesystem) on device 179:1. Freeing init memory: 200K init started: BusyBox v1.9.1 (2008-10-17 18:20:44 IST) starting pid 1314, tty '': '/etc/init.d/rcS' System initialization... Hostname : OMAP3EVM Filesystem : v1.0.2 Kernel release : Linux 3.0.15-svn7 Kernel version : #1 SMP PREEMPT Mon Mar 25 12:07:59 CST 2013 Mounting /proc : [SUCCESS] Mounting /sys : [SUCCESS] Mounting /dev : [SUCCESS] Mounting /dev/pts : [SUCCESS] Enabling hot-plug : [SUCCESS] Populating /dev : Thermal: fuse data 0x5764ec69 [SUCCESS] Mounting other filesystems : [SUCCESS] eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=1:04, irq=-1) Starting syslogd : [SUCCESS] Starting telnetd : Jan 1 00:02:39 OMAP3EVM syslog.info syslogd started: BusyBox v1.9.1 [SUCCESS] System initialization complete. Please press Enter to activate this console. interval = 86400 second starting pid 1340, tty '': '/bin/sh' Setting shell environment ... - Path - Aliases - Touchscreen Done! [root@OMAP3EVM /]# [root@OMAP3EVM /]# cat /proc/version Linux version 3.0.15-svn7 (luofc@TIOP) (gcc version 4.4.3 (GCC) ) #1 SMP PREEMPT Mon Mar 25 12:07:59 CST 2013 [root@OMAP3EVM /]# |
A imagem instalada no cartão SD/MMC contém o U-Boot 2009.08, o kernel Linux 3.0.15 e um rootfs bem básico. Perceba que o pessoal que criou esta distribuição esqueceu de trocar o nome do prompt, deixando o nome do chip da Texas Instruments! :)
Vamos colocar alguma coisa mais pesada para rodar nesta plaquinha. No momento em que escrevo este arquivo, o link para a imagem do Android não esta disponível, então vamos testar com a imagem do Ubuntu Oneiric (11.10).
UBUNTU
Aqui o processo ficou mais complicado. Até o momento em que escrevo este artigo, o pessoal da Embest não fornece nenhuma imagem já pronta do Ubuntu para executarmos uma cópia para o cartão. A imagem disponibilizada é apenas um tarball do sistema de arquivos. É necessário então criar a imagem manualmente.
O pior é que o manual da placa não tem este procedimento. Desenvolvedores com menos experiência precisariam procurar suporte no site do fabricante.
Acessei então a página do projeto, e no menu Document baixei a imagem do Ubuntu em MarS Board Linux Image e os fontes do U-Boot e do kernel em MarS Board Linux Source.
Compilei o U-Boot e o kernel e gravei no cartão. Depois descompactei o tarball do Ubuntu e gravei no cartão. Tentei bootar e não funcionou! Aparentemente esta placa não inicia pelo cartão SD. Mais uma vez não encontrei nenhuma informação à respeito na documentação do projeto. Deixei uma mensagem no forum, e se receber resposta atualizarei o post.
Para testar, eu alterei as variáveis de ambiente do U-Boot na eMMC para ler o kernel e o sistema de arquivos do cartão SD. E funcionou.
O tempo de boot é muito rápido, muito parecido com o de um PC, e as aplicação rodam bem. A versão do Ubuntu disponibilizada pela Embest me pareceu bem estável.
THE GOOD, THE BAD AND THE UGLY
O conceito da placa é legal, ótima capacidade de processamento, principalmente para aplicações multimedia, boa relação custo/benefício e bastante interfaces de I/O disponíveis.
Mas a placa deixou à desejar em alguns requisitos:
- Documentação ruim, me lembrei de quando eu perdia horas tentando decifrar a documentação da mini2440!
- Comunidade pequena, tem uma outra placa com o mesmo nome, e quando você vai procurar alguma informação no Google acaba se perdendo!
- Página de download falha, já que ela não disponibiliza as imagens finais das distribuições para download.
- Ferramenta de gravação na eMMC só roda em Windows.
- Não dá para iniciar todo o sistema pelo cartão SD.
DEVO COMPRAR?
O MarS Board tem um investimento de $99, e pode ser adquirida diretamente no site da Embest. Existe também a possibilidade da Farnell distribuir esta placa no Brasil em um futuro próximo.
De qualquer forma, não aconselho comprar a MarS Board agora, principalmente para iniciantes. É uma placa que ainda deve passar por um período de amadurecimento até desenvolver uma comunidade ativa, e o pessoal da Embest precisa trabalhar forte no quesito documentação e suporte à software para atrair mais usuários.
Um abraço,
Sergio Prado
Sem Comentários
Nenhum comentário até agora... é a sua chance de ser o primeiro a comentar!