BeagleBoard – O cachorrinho open-source
- por Sergio Prado
A BeagleBoard é um projeto desenvolvido pela Texas Instruments em conjunto com a Digi-Key com os objetivos de demonstrar o uso do system-on-a-chip OMAP3530 e servir de plataforma de aprendizado em sistemas embarcados através do modelo de desenvolvimento open source. Enquanto que a TI é a responsável pelo projeto, a Digi-key seria a responsável pela distribuição.
A plataforma é totalmente aberta, liberada sob a licença Creative Commons SharedAlike. Com já mais de 2 anos de existência, ela tem cumprido bem seu objetivo de ensinar open hardware e open software no mundo inteiro. A página do projeto pode ser encontrada em http://beagleboard.org/.
Enquanto escrevo este artigo, existem cerca de 210 projetos desenvolvidos pela comunidade! Estes projetos incluem alguns portes do sistema operacional Android, controlador de câmera digital, sistema de segurança residencial, sistema multimedia para veículos, streaming de video, media center, diversos tipos de robôs, etc. Mais um indicativo das mudanças sociais e econômicas trazidas pelo movimento open source. Uma lista com todos os projetos pode ser acessada em http://beagleboard.org/project. Alguns vídeos com projetos interessantes podem ser encontrados aqui e aqui.
Das palavras de um dos responsáveis pelo projeto, Jason Kridner:
“The Beagle Board is intended for those wanting to learn about building embedded systems and [who] don’t need all of the support or costs associated with the typical development platform. Once you are done experimenting and need a silicon evaluation platform that will help you make a product, platforms with software compatibility are available.”
HARDWARE
A placa é pequena, medindo aproximadamente 7,5 x 7,5 cm, e já passou por algumas revisões desde seu lançamento. A que tenho em mãos é a Rev C4.
Conforme já mencionei, a BeagleBoard é baseada no system-on-a-chip OMAP3530 da TI, um dos primeiros SOCs baseados no núcleo ARM Cortex-A8. Trabalhando a 720MHz, ainda possui integrado um DSP de 430MHz e um acelerador gráfico 2D/3D, que junto com uma placa gráfica onboard que provê saídas DVI e S-Video, transforma o kit em uma plataforma ideal para aplicações multimedia, com capacidade para reproduzir vídeos em HD a 720p.
Esta revisão possui 256MB de memória flash NAND e 256MB de DDR SDRAM, que junto com o OMAP3530, são montados na placa usando a técnica de Package-on-Package, onde um chip é montado sob o outro:
Interfaces de I/O também não faltam: RS232, USB 2.0 e USB On-the-go, cartão de memória SD/MMC, Audio In/Out (Stereo), JTAG, LEDs e botões, além de um conector para usar um display LCD e outro para placas de expansão com diversas interfaces disponíveis como GPIO, PWM, I2C, I2S, SPI e SD/MMC. A alimentação pode ser feita por uma entrada de 5V ou pela porta USB. Uma referência completa do hardware pode ser encontrada aqui. São 180 páginas de muita informação!
COMPARANDO COM A MINI2440
Quem acompanha meu blog sabe que gosto bastante do kit FriendlyARM mini2440 como ferramenta de aprendizado, principalmente para aprender sobre Linux embarcado. Mas qual é melhor, a Beagleboard ou a mini2440? A resposta: depende!
Sob o ponto de vista do hardware, a Beagleboard é muito mais poderosa. Sua capacidade de vídeo e a existência de um DSP tornam possiveis aplicações multimedia que não seriam possíveis na mini2440. Por outro lado, a minha revisão da Beagle Rev C4 não possui interface Ethernet. Se eu precisar de uma interface Ethernet, precisarei usar um dongle USB. Já na mini2440 temos uma porta Ethernet por padrão. Esta deficiência da BeagleBoard é resolvida na sua última revisão, a BeagleBoard-xM, que além da interface Ethernet, trabalha a 1GHz!
Outra desvantagem da Beagle com relação ao hardware é a ausência de um display LCD. A idéia aqui é usar as saídas DVI ou S-Video e plugá-la diretamente em um monitor ou televisor. Mas nada impede você de comprar um display LCD e conectar nos pinos de I/O disponíveis na Beagle. Já existem alguns projetos que fazem isso. Você só precisará comprar o display separadamente.
Por outro lado, a BeagleBoard, por apostar no formato open source, foi muito mais competente em documentar o projeto e montar uma comunidade onde as pessoas publicam seus projetos e compartilham informações.
De qualquer forma, os dois kits suprem bem a necessidade de uma ferramenta para aprendizado em sistemas embarcados. Escolha o que melhor couber no seu bolso.
ONDE COMPRAR
A BeagleBoard pode ser adquirida em alguns sites na internet, incluindo a Digi-Key e a Mouser. No site do projeto tem uma lista completa de distribuidores. Na Special Computing você também consegue comprar, além da placa, os cabos, fontes e até um case de acrílico para colocar a placa enquanto estuda ou desenvolve seu protótipo.
O preço atual é de $125.00, mais frete e impostos. Mas esse valor é só pela placa. Você vai precisar de um cabo adaptador serial IDC10 -> DB9 macho igual este aqui para a console. Pode precisar também de um cabo HDMI tipo A -> DVI, se quiser ligar a placa em um monitor, e de uma fonte de 5V se precisar ligar muitos periféricos na placa e achar que a alimentação via USB não será suficiente para “aguentar o tranco”.
PRIMEIROS SINAIS DE VIDA
Estes são os primeiros sinais de vida da BeagleBoard, que podemos visualizar na console:
Texas Instruments X-Loader 1.4.2 (Feb 19 2009 - 12:01:24) Loading u-boot.bin from nand U-Boot 2009.11-rc1-00601-g3aa4b51 (Jan 05 2010 - 20:56:38) OMAP3530-GP ES3.1, CPU-OPP2 L3-165MHz OMAP3 Beagle board + LPDDR/NAND I2C: ready DRAM: 256 MB NAND: 256 MiB *** Warning - bad CRC or NAND, using default environment In: serial Out: serial Err: serial Board revision C4 Die ID #7e1c000400000000040398da1402400e Hit any key to stop autoboot: 0 No MMC card found Booting from nand ... NAND read: device 0 offset 0x280000, size 0x400000 4194304 bytes read: OK Wrong Image Format for bootm command ERROR: can't get kernel image! OMAP3 beagleboard.org # |
Ela vem de fábrica com o X-Loader e o U-Boot instalados na NAND. O processo de boot acontece em 3 estágios:
- 1o. estágio: Software residente em ROM
- 2o. estágio: X-Loader
- 3o. estágio: U-Boot
No fim, o U-Boot tentar carregar o kernel do Linux, e como não encontra a imagem, cai no prompt. Vamos tentar listar as partições da NAND:
OMAP3 beagleboard.org # mtdparts mtdparts variable not set, see 'help mtdparts' no partitions defined defaults: mtdids : nand0=nand mtdparts: mtdpart' - try 'help'loader),1920k(u-boot),128k(u-boot-env),4m(kernel),-(fs) |
Veja que a tabela de partições encontra-se inicialmente vazia. Podemos configurar as partições padrão com o comando abaixo:
OMAP3 beagleboard.org # mtdparts default |
E então podemos ver as partições:
OMAP3 beagleboard.org # mtdparts device nand0 , # parts = 5 #: name size offset mask_flags 0: x-loader 0x00080000 0x00000000 0 1: u-boot 0x001e0000 0x00080000 0 2: u-boot-env 0x00020000 0x00260000 0 3: kernel 0x00400000 0x00280000 0 4: fs 0x0f980000 0x00680000 0 active partition: nand0,0 - (x-loader) 0x00080000 @ 0x00000000 |
Agora a NAND esta pronta para gravarmos o kernel e o rootfs. Que tal um pouco de Android no próximo post? Até lá!
Abraços,
Sergio Prado