MarS Board da Embest Technology

- por Sergio Prado

Categorias: Hardware Tags: ,

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:

mars-board

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.

MarS_Board04

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.

DSC01692

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!

Faça um Comentário

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.