A Bea­gle­board mostra real­mente sua força quando o assunto é desen­volvi­mento open source.

No meu post intro­dutório sobre o kit, citei a existên­cia de (até então) 210 pro­je­tos desen­volvi­dos pela comu­nidade (http://beagleboard.org/project).

Só de portes do Android exis­tem sete: 0xdroid, Android Mini Com­puter, Android SDIO WIFI, Bea­gle­droid, Android On Bea­gle, OMAP­Zoom Android e Android on OMAP3.

O último, tam­bém chamado de Row­Boat, me parece ser um dos mais atu­al­iza­dos — acabaram de lançar o porte do Android 2.3 (Gin­ger­bread). É este pro­jeto que usare­mos para tes­tar o Android na Bea­gle­board.

ROWBOAT

A página do pro­jeto pode ser aces­sada em http://arowboat.org. O que o Row­boat faz é prover um porte estável do Android para a plataforma OMAP35xx da TI, aproveitando-se das capaci­dades de hard­ware deste SOC como o DSP e o acel­er­ador grá­fico 2D/3D.

Ele trás tudo o que é necessário para com­pi­lar e gerar uma imagem do ker­nel e do rootfs do sis­tema opera­cional Android: tool­chain, boot­loader, um porte do ker­nel, sis­tema de arquivos pré-configurado e Android apps (*.apk).

Gerar uma imagem é bem fácil. Todos os detal­hes do processo você pode encon­trar aqui. Só vai te exi­gir um ambi­ente bem con­fig­u­rado e pouco de paciên­cia.

PREPARANDO O AMBIENTE DE DESEVOLVIMENTO

A página do Android em http://source.android.com/source/initializing.html explica a con­fig­u­ração necessária para o ambi­ente de desen­volvi­mento. Vou detal­har o que fiz na minha máquina, mas depen­dendo do seu host, pode ser que pre­cise insta­lar alguma outra apli­cação que não citei aqui. Dê uma olhada no link acima caso encon­tre algum problema.

Primeiro, instale as apli­cações necessárias para o processo de build:

$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"
$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl
$ sudo apt-get install zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline5-dev libz-dev libgl1-mesa-dev
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev
$ sudo apt-get install libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev minicom tftpd uboot-mkimage
$ sudo apt-get install expect kpartx

Um detalhe aqui é o uso do JDK 1.5 (Java Devel­op­ment Kit). Se sua máquina host estiver atu­al­izada, poderá estar com o JDK 1.6. Com os coman­dos acima, insta­lamos o JDK 1.5, mas você pre­cisa se cer­ti­ficar de que ele estará no seu PATH antes de ini­ciar a com­pi­lação. O comando abaixo dev­erá dizer se você esta com a ver­são cor­reta do Java:

$ java -version
java version "1.5.0_22"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot(TM) Server VM (build 1.5.0_22-b03, mixed mode)

O último passo é insta­lar o script “repo”, uma fer­ra­menta do Google para geren­ciar repositórios Git do Android:

$ curl https://android.git.kernel.org/repo >./repo
$ chmod a+x ./repo
$ sudo mv ./repo /usr/local/bin

Certifique-se ape­nas de que “/usr/local/bin” esteja no PATH.

COMPILANDO

Fare­mos nos­sos testes com o Android 2.2 (Froyo). O primeiro passo é baixar o repositório do RowBoat:

$ mkdir rowboat-android
$ cd rowboat-android
$ repo init -u git://gitorious.org/rowboat/manifest.git -m rowboat-froyo.xml
$ repo sync

E depois compilar:

$ make TARGET_PRODUCT=beagleboard

Agora aproveite que você esta com­pi­lando o Froyo e vai tomar um iogurte con­ge­lado. Froyo = frozen yogurt para os mais desavisados :)

O processo pode demorar algu­mas horas. Quando ter­mi­nar, a imagem do ker­nel (uIm­age) estará disponível em:

$ ls kernel/arch/arm/boot/
bootp  compressed  Image  install.sh  Makefile  uImage  zImage

O rootfs pre­cis­ará ser preparado com os coman­dos abaixo:

$ cd out/target/product/beagleboard
$ mkdir android_rootfs
$ cp -r root/* android_rootfs
$ cp -r system android_rootfs
$ sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2
$ cd -

INSTALANDO

Insta­lare­mos e exe­cutare­mos o Android do cartão SD (no mín­imo 256MB). Vamos criar duas par­tições. A primeira para o ker­nel, com 32MB e for­matada com FAT32. A segunda para o rootfs, com o restante do espaço disponível e for­matada com EXT3. Usei o gparted para esta tarefa. A for­matação do cartão SD ficou con­forme imagem abaixo:

sd card android beagle Compilando e executando o Android na Beagleboard

Exe­cute os coman­dos abaixo para copiar o ker­nel para o cartão SD (troque o “/dev/sde1″ pelo arquivo de dis­pos­i­tivo da primeira par­tição do cartão SD):

$ sudo mkdir -p /mnt/kernel
$ sudo mount /dev/sde1 /mnt/kernel
$ sudo cp kernel/arch/arm/boot/uImage /mnt/kernel
$ sync
$ sudo umount /mnt/kernel

Exe­cute os coman­dos abaixo para copiar o rootfs para o cartão SD (troque o “/dev/sde2″ pelo arquivo de dis­pos­i­tivo da segunda par­tição do cartão SD):

$ sudo mkdir -p /mnt/rootfs
$ sudo mount /dev/sde2 /mnt/rootfs
$ sudo tar jxfv out/target/product/beagleboard/rootfs.tar.bz2 --numeric-owner -C /mnt/rootfs
$ sync
$ sudo umount /mnt/rootfs

TESTANDO

Agora só falta con­fig­u­rar o U-Boot da Bea­gle­board para ini­ciar o Android pelo cartão SD. Exe­cute os coman­dos abaixo no prompt do U-Boot:

# setenv bootcmd 'mmc init; fatload mmc 0 84000000 uImage; bootm 84000000'
# setenv bootargs 'mem=256M androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw init=/init rootwait omapfb.video_mode=640x480MR-16@60'
# saveenv
# reset

O primeiro boot pode demorar um pouco (1 a 2 min­u­tos). Depois você terá uma imagem fun­cional e poderá se diver­tir com o Android na sua Beagleboard!

android beagle1 Compilando e executando o Android na Beagleboard

android beagle2(1) Compilando e executando o Android na Beagleboardandroid beagle3 Compilando e executando o Android na Beagleboard

De agora em diante, estu­dare­mos a arquite­tura do Android, que de um sis­tema Linux, só tem o ker­nel mesmo. O resto é tudo difer­ente. Você sabia que ele não usa o Sys­tem V IPC como mecan­ismo de comu­ni­cação entre proces­sos, e sim um mod­ulo do ker­nel chamado “binder”? Ou então que ele usa uma tal de “Bionic” como bib­lioteca C padrão ao invés das con­ven­cionais uclibc ou glibc? Ou que ele imple­menta o Tool­box ao invés de usar o Busy­box? Ou ainda que um tal de Zygote é o pai de todos os proces­sos?

Curioso, não? Então con­tinue acom­pan­hando!

Um abraço,

Ser­gio Prado

VN:F [1.9.17_1161]
Rat­ing: 10.0/10 (6 votes cast)
Com­pi­lando e exe­cu­tando o Android na Bea­gle­board, 10.0 out of 10 based on 6 ratings

Posts rela­ciona­dos:

  1. Bea­gle­Board — O cachor­rinho open-source
  2. Mini2440 — Insta­lando o Android
  3. Wind River apo­s­tando na plataforma Android
Tags:  
  • Marcelo

      Show de bola o artigo! =D

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
  • Emer­son

    Olá Sér­gio, incrível a sua abor­dagem! Achei vários tuto­ri­ais, mas o seu é o que mel­hor explica. Dê uma olhada nessa imagem: http://www.alwaysinnovating.com/beagleboard/
    con­tem 4 OS´s. Android Gin­ger­bread é um deles, ainda tem Ubuntu, AIO´s e ChromeOS. Super sim­ples usar a imagem deles.
    Abraço!

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
  • http://www.sergioprado.org ser­gio­prado

    Obri­gado Emerson!

    Fan­tás­tico este pro­jeto! Será que eles estão usando a Bea­gle­Board turbinada (xM) ?

    Um abraço!

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
  • Alberto Fabi­ano

    Sem­pre achei estranho a história do Zygote, mas tá val­endo! Até que o Android é meia boca, ele fun­ciona razoavel­mente.
    Estou no aguardo de uma Pand­aBoard e vou por­tar o Android para ela tam­bém.
    Parabéns pelo post.
    []s
    @AlbertoFabiano

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
  • Emer­son

    Eu rodei na Bea­gle­Board XM, não sei se é com­patível para a C4 ou ver­sões ante­ri­ores. Sér­gio, seria legal anal­is­ar­mos as I/O´s dessa placa.

    Alberto, já tem port de Android para a Panda: http://www.pandroid.org.
    Abraço!

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://www.sergioprado.org ser­gio­prado

      Olá Emer­son!

      O que você quer dizer com anal­isar os I/Os da BeagleBoard?

      Abraços.

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
  • Emer­son

    Olá Sér­gio,
    Seria anal­isar o bar­ra­mento disponível para comu­ni­cação SPI, I2C ou até mesmo como saída sim­ples para ati­var uma relé ou PWM.
    Um dica para o pes­soal, a Texas fornece de graça um livro sobre a arquite­tura OMAP, quem quiser só encomen­dar: http://focus.ti.com/dsp/docs/dspsplash.tsp?contentId=52451

    Abraço!

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://www.sergioprado.org ser­gio­prado

      Opa, seria uma boa Emer­son! Se quiser podemos fazer algo em con­junto. E valeu pela dica do livro!

      Um abraço.

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
  • Fel­lipe

    É só eu que tive uma difi­cul­dade extrema de con­seguir essa placa? O valor era muito caro na época tam­bém.. alguem sabe como con­seguir de forma sat­isfa­to­ria essa placa?

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
  • Lean­dro

    Sér­gio, ótimo blog, vou acom­pan­har sem­pre!
    Como posso adi­cionar Wifi e Blue­tooth nessa placa? O Android tem suporte para os don­gles Bluetooth/Wifi que ven­dem nas lojas de informática?

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://www.sergioprado.org ser­gio­prado

      Olá Lean­dro!

      É via don­gle USB mesmo. É bem provável que o Android não tenha o suporte, mas não é nada de outro mundo adicioná-lo. Basta que exista disponível um dri­ver no ker­nel do Linux para o don­gle em questão.

      Um abraço.

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
  • Plínio Bar­bosa

    Ser­gio como vai? Sou novo na área de sis­temas embar­ca­dos e come­cei a alguns meses com uma bea­gle rev c4. Gostaria de saber se existe alguma doc­u­men­tação sobre como aces­sar os io’s dig­i­tais e a porta de comu­ni­cação i2c uti­lizando o Android.
    Forte abraço.

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://www.sergioprado.org ser­gio­prado

      Olá Plinio, como vai?

      Ainda não encon­trei muita doc­u­men­tação usando o Android (e pre­tendo escr­ever alguns arti­gos sobre isso). Mas em teo­ria, tudo o que se aplica em Linux, pode ser apli­cado no Android. E se você procu­rar no Google vai encon­trar bas­tante doc­u­men­tação sobre o acesso ao hard­ware na Bea­gle­board pelo Linux. Exemplo:

      http://blog.makezine.com/archive/2009/02/blinking-leds-with-the-beagle-board.html

      Um abraço!

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
  • Lean­dro

    Entao Sér­gio, qual­quer dri­ver pra Linux fun­ciona no android?

    Abraços.

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://www.sergioprado.org ser­gio­prado

      Olá Lean­dro!

      Em teo­ria sim! Lembre-se, o ker­nel é o mesmo, com a adição ape­nas de alguns módu­los extras.

      Um abraço.

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
  • Fel­lipe

    Rapaz.. aqui mesmo no blog teve um amigo falando sobre a Pand­aBoard… pelo que eu vi, ela tem mais recur­sos que a Beagle…e os val­ores em US$ são pare­ci­dos.. Ser­gio, voce já viu uma? Pode­ria expla­nar sobre as diferenças? 

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://www.sergioprado.org ser­gio­prado

      Olá Fel­lipe,

      Só con­heço a Pand­aBoard de nome, e de alguns arti­gos que li na inter­net. Me parece ser uma plataforma um pouco mais robusta que a Bea­gle­Board, voltada a apli­cações mul­ti­me­dia mais pesadas. Tenho certeza de que no Google você con­segue encon­trar con­teú­dos expli­cando mel­hor esta plataforma.

      E se encon­trar, deixe seus comen­tários aqui! :)

      Um abraço.

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
  • Jorge Fran­cisco

    Com­prei a minha Pand­aBoard e deve chegar amanhã. Con­tarei as min­has impressões sobre a placa. Que­ria fazer um blog para com­par­til­har as min­has ten­ta­ti­vas e erros, gostei muito do lay­out deste blog, pode­ria me indicar o lay­out, onde posso baixar,etc? 
    Des­culpe, mas não entendo muito de pro­gra­mação WEB.
     
    Outra dúvida me surgiu. Com­prou um JTAG ou está gra­vando a Bea­gle pela serial?

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://www.sergioprado.org ser­gio­prado

      Olá Jorge,

      Eu uso Word­Press aqui no blog, e este lay­out eu com­prei. Só não me lem­bro onde. Vou vas­cul­har meus emails e assim que encon­trar te envio.

      Sobre a Bea­gle, não tem a neces­si­dade de ficar gra­vando na flash. Uso o cartão SD para car­regar o ker­nel, e o rootfs sem­pre monto via NFS.

      Um abraço!

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
  • Jorge Fran­cisco

    Obri­gado pelas respostas. Chegou a minha pand­aboard, infe­liz­mente não me aten­tei para a revisão e chegou a A2 ao invés da A3.
     
    Após testá-la eu coloco as min­has impressões.

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
  • João Mar­cos

    Olá pes­soal, tra­bal­hei com a Bea­gle­board C4 no meu mestrado, seguem algu­mas coisas que fiz, como embar­car o JAVA SE e o Tom­cat (para quem não sabe, um servi­dor WEB): http://www.youtube.com/watch?v=aUCa8GQvsjo e http://www.youtube.com/watch?v=MV1iVBIh_q8. Gostaria de adquirir e com­par­til­har conhecimentos.

    Abraço,

    Jony.

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://www.sergioprado.org Ser­gio Prado

      Olá João!

      Muito legal seus pro­je­tos! Parabéns!

      Um abraço.

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
  • NINO FIDELI

    Olá Ser­gio, pre­ciso ligar e desli­gar um alarme via wifi com um tablet galaxy s é pos­sível fazer? se sim quanto me cus­taria sou estu­dante e quero fazer para a sem­ana téc­no­log­ica aqui na minha escola.

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://www.sergioprado.org Ser­gio Prado

      Olá Nino,

      É pos­sível sim. Vai pre­cisar de uma apli­cação Android de um lado enviando dados pela inter­face Wifi para o sis­tema de alarme. Do outro lado, você vai pre­cisar de um mod­ulo recebendo estes dados, inter­pre­tando a atuando no sis­tema de alarme. É um ótimo desafio. Se pre­cisar de ajuda é só falar.

      Um abraço.

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
  • Cláu­dio Kunde

    Ser­gio.
     Já testei várias dis­tros no SD card. Até agora tudo bem, mas como seria colo­car essas ima­gens na Flash da Bea­gle­Board?
    Obri­gado e parabéns pelo artigo.

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://www.sergioprado.org Ser­gio Prado

      Olá Clau­dio,

      Esta Bea­gle­Board mais nova (xM) não tem flash. Na antiga você con­segue. É só usar o U-Boot para gravar na flash. O U-boot lê a imagem do cartão SD e grava na NAND. Aqui tem os procedimentos:

      http://code.google.com/p/beagleboard/wiki/BeagleNANDFlashing

      Um abraço.

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
  • http://www.facebook.com/PauloFranca1983 Paulo França

    Boa noite.
    Com­prei recen­te­mente uma bea­gle­Bone, para cor­rer uma apli­cação ja desen­volvida em linux.
    mas pre­ciso de fazer “sudo apt-get install .….“
    o problema:

    root@beaglebone:~# sudo apt-get install update
    –sh: sudo: com­mand not found

    o sudo nao e recon­hecido nem o o “apt-get”

    alguem ja teve esse problema?

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://sergioprado.org/ Ser­gio Prado

      Olá Paulo,

      Você não pre­cisa do “sudo” na frente porque você já esta logado como root no equipamento.

      Na Bea­gle­bone, para insta­lar pacotes, supondo-se que você esteja usando a dis­tribuição Angstrom que vem com ela, basta usar o comando opkg. Ex:

      $ opkg install …

      Um abraço.

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)
      • http://www.facebook.com/PauloFranca1983 Paulo França

        boa tarde desde ja agradeço a ajuda…

        so outra pequena grande duvida, por exem­plo que­ria instal­lar o “apache2” o prob­lema e que ele nao ter essas pacotes, mas quem diz esse diz out­ros…
        por exem­plo
        root@beaglebone:~/teste/all# opkg install apache2
        Unknown pack­age ‘apache2’.
        Con­fig­ur­ing pcsc-lite.
        update-rc.d: /etc/init.d/pcscd: file does not exist
        Col­lected errors:
        * opkg_install_cmd: Can­not install pack­age apache2.
        * pkg_run_script: pack­age “pcsc-lite” postinst script returned sta­tus 1. * opkg_configure: pcsc-lite.postinst returned 1. root@beaglebone:~/teste/all#

        como e pos­sivel obter esses tipo de pacotes que nao estao na placa???

        No dia 27 de Janeiro de 2012 10:23, Dis­qus escreveu:

        VA:F [1.9.17_1161]
        Rating: 0.0/5 (0 votes cast)
        • http://sergioprado.org/ Ser­gio Prado

          Olá Paulo,

          Isso sig­nifica que o repositório do Angstrom não pos­sui o apache2. Você pode usar outro web server, como o thttpd ou o lighttpd, ou então cross-compilar na mão o apache2, que dá bas­tante trabalho.

          De qual­quer forma, o apache é um soft­ware que não foi feito para ser embar­cado em um dis­pos­i­tivo com poucos recur­sos. O mel­hor é você procu­rar outro web­server mais leve.

          Um abraço.

          VA:F [1.9.17_1161]
          Rating: 0.0/5 (0 votes cast)
          • http://www.facebook.com/PauloFranca1983 Paulo França

            Ok obri­gado pela atençao…

            No dia 28 de Janeiro de 2012 21:07, Dis­qus escreveu:

            VA:F [1.9.17_1161]
            Rating: 0.0/5 (0 votes cast)
  • Rafael

    Foi muito bom ler o seu artigo, pois estou com o orça­mento aper­tado e para não com­prar um tablet bom eu que­ria ver se con­seguia insta­lar em algum hard­ware de teste como o bea­gle­board, mas eu que­ria per­gun­tar uma coisa para vc, estou ini­ciando os meus estu­dos para aplica­tivos em smart­phones e tablets, fazendo essa insta­lação já estaria apto ao uso e testes de aplica­tivos no bea­gle­board? Valeu Ser­gio, já estará nos favoritos.

    VA:F [1.9.17_1161]
    Rating: 0.0/5 (0 votes cast)
    • http://sergioprado.org/ Ser­gio Prado

      Olá Rafael,

      Sim, depois de insta­l­ado o Android na Bea­gle, você pode tra­bal­har com ele e desen­volver apli­cações como se fosse um celu­lar ou tablet.

      Um abraço.

      VA:F [1.9.17_1161]
      Rating: 0.0/5 (0 votes cast)