UNIOESTE - Universidade Estadual do Oeste do Paraná
  Curso de Bacharelado em Ciência da Computação




            Tutorial BeagleBoard




         Cascavel, 01 de Fevereiro de 2012
Sumário

1 Começando do zero: Instalando a distribuição Linux................................................................3
   1.1 Download de uma imagem pré-configurada......................................................................3
   1.2 Instalando via Netinstall.....................................................................................................4
3 Instalando pacotes no cartão SD via qemu................................................................................7
4 Instalando a interface gráfica:...................................................................................................8
5 Atualizando o Kernel do Linux:..................................................................................................9
6 Atualizar X-loader e U-boot.....................................................................................................10
7 Instalação do DSP-bridge.........................................................................................................11
   7.1 No Linux PC:......................................................................................................................11
   7.2 Na BeagleBoard:...............................................................................................................11
8 H.264 na BeagleBoard.............................................................................................................13
   8.1 Codificação do vídeo para o perfil Baseline......................................................................13
   8.2 Execução:..........................................................................................................................15
Referências.................................................................................................................................16




                                                                                                                                            2
1 Começando do zero: Instalando a distribuição Linux

Estão catalogadas duas formas de se instalar uma distribuição Linux na
BeagleBoard:

1.1 Download de uma imagem pré-configurada

Requerido um cartão SD 1GB/2GB.

Step 1: Baixe a imagem:

      wget http://rcn-ee.net/deb/rootfs/oneiric/ubuntu-11.10-r5-minimal-armel.tar.xz

Step 2: Verificar a consistência do arquivo

      md5sum ubuntu-11.10-r5-minimal-armel.tar.xz

      Caso esteja ok, o comando resultará:

       dc38df885797c2db3a8fc8265463a43b ubuntu-11.10-r5-minimal-
armel.tar.xz

      Descompacte a imagem, em seguida entre no diretório:

      tar xJf ubuntu-11.10-r5-minimal-armel.tar.xz
      cd ubuntu-11.10-r5-minimal-armel

Step 3: Execute o script com base na localização do cartão SD ( /dev/ )

      Ex: sudo ./setup_sdcard.sh --mmc /dev/sdX --uboot beagle_cx

      Caso não saiba a localização do SD
      sudo ./setup_sdcard.sh --probe-mmc

      gerará uma lista com os dispositivos:

      Are you sure? I Don't see [/dev/idontknow], here is what I do see...
      fdisk -l:
      Disk /dev/sda: 500.1 GB, 500107862016 bytes <- x86 Root Drive
      Disk /dev/mmcblk0: 3957 MB, 3957325824 bytes <- MMC/SD card

       mount:
       /dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0) <- x86 Root
Partition

      Neste caso, /dev/mmcblk0 é o cartão SD que deve ser usado. Então, para

                                                                                       3
executar o script, use:

       sudo ./setup_sdcard.sh --mmc /dev/mmcblk0 --uboot beagle_cx

      Remova o SD da unidade, e insira na BeagleBoard. Ao reiniciar terá o
Ubuntu Maverick instalado (modo texto). User: ubuntu password: temppwd

      Para instalar a gui (graphical user interface), deve-se primeiro configurar a
rede na BeagleBoard. Será explicado mais adiante.


1.2 Instalando via Netinstall

Requerido um cartão SD 1GB/2GB.

Este método utiliza de uma conexão com a internet para baixar a imagem e
instalar no momento em que der o boot na beagleboard.

- Ubuntu 11.10 (Oneiric): No terminal Linux PC, digite:

       git clone git://github.com/RobertCNelson/netinstall.git
       cd netinstall

       Instale o script: em "board" > substituir por beagle_cx

       Obs: Esse script precisa de mkimage.

       sudo apt-get install u-boot mkimage

       Executar Script:

       sudo ./mk_mmc.sh --mmc /dev/sdX --uboot "board" --distro oneiric

       Options:


   •   --uboot: beagle_bx, beagle, panda
   •   --distro: maverick, oneiric
   •   --firmware: installs firmware
   •   --serial-mode: debian-installer       uses Serial Port
   •   --addon ulcd: (ulcd from:
               http://search.digikey.com/scripts/DkSearch/dksus.dll?
       vendor=0&keywords=ULCD7-ND)


       Insira o cartão SD na Beagle e inicie-a:
               Escolha o idioma, teclado..
       Configure a rede. Então o instalador baixará os pacotes necessários.
       User: ubuntu password: temppwd


                                                                                 4
2 Provendo Internet à BeagleBoard via usb através de
um Linux PC:
Requerido: um adaptador usb ethernet

Step 1: Configurando o PC:
      Primeiramente, certifique-se que ambos estão conectados pelo usb (pode
ser necessário rodar o comando ifconfig usb0 na BeagleBoard para que o PC
reconheça o dispositivo).

       ifconfig

       Se estiver conectado via usb com a BB, aparecerá na tela algo do tipo:

usb0     Link encap:Ethernet HWaddr 45:d1:a3:05:28:d3

        Nem sempre o dispositivo aparece como usb0. Para este exemplo, será
usado usb0, mas, nos próximos comandos, substitua pelo nome que seu linux
reconhecer (usb1, …).
Então, é necessário ativar a interface usb, setando um IP e uma máscara de rede
à interface:

       sudo ifconfig usb0 [ip address] netmask [ netmask ] up

Ex:    sudo ifconfig usb0 192.168.0.1 netmask 255.255.255.0 up

       É necessário também configurar as IPTables do Linux PC para que os
pacotes possam ser repassados à interface usb0. Assumindo que o Linux PC
esteja conectado à internet via eth0 ou wlan0, rode os seguintes comandos:

-Removendo prévias configurações:

       sudo iptables --flush
       sudo iptables --table nat --flush
       sudo iptables --delete-chain
       sudo iptables --table nat --delete-chain

- Liberando a repassagem dos pacotes entre as interfaces:

    sudo iptables --table nat --append POSTROUTING --out-interface eth0 -j
MASQUERADE
    sudo iptables --append FORWARD --in-interface usb0 -j ACCEPT
    sudo vi /etc/sysctl.conf

- Retire o “#” da linha: “#net.ipv4.ip_forward=1” para ativar a repassagem

       sudo sysctl -p       (opcional, mostra se a repassagem está ativada)

Obs: Em eth0, pode ser substituído por wlan0 (caso esteja na rede sem fio).


                                                                                5
Step 2: Configurando a BeagleBoard

      Deve-se ativar a interface usb0, da mesma forma como foi feito no Linux
PC, mas com diferentes parâmetros:

      sudo ifconfig usb0 192.168.0.69 netmask 255.255.255.0 up

Obs: Certifique-se que o ip pertença à rede do Linux PC (192.168.0.X)

        Em seguida, deve-se adicionar o endereço do gateway para a
BeagleBoard, endereço no qual todo o tráfego de rede da BeagleBoard consiga
atingir a internet. Para isso, basta adicionar o endereço do host (Linux PC) como
gateway, com o seguinte comando:

      sudo route add default gw 192.168.0.1 (IP do Linux PC)

Agora, é necessário editar o arquivo que contém os endereços DNS que a
BeagleBoard utilizará. Geralmente, basta adicionar o endereço do gateway
(roteador da rede que permite a conexão do Linux PC com a internet) que a
resolução de nomes será responsabilidade deste, mas, caso não funcionar, pode-
se adicionar outros servidores DNS, como o OpenDNS (208.67.222.222 ).

      sudo vi /etc/resolv.conf

Adicione: nameserver 208.67.222.222

ou o DNS que lhe convier.

Agora está tudo configurado! Pode-se testar a conexão com a internet com o
comando
ping www.google.com, recebendo resposta, está tudo certo.




                                                                               6
3 Instalando pacotes no cartão SD via qemu

É possível instalar pacotes diretamente no cartão SD (com o ubuntu para a
beagleboard instalado) através do shell do Linux PC.

Por exemplo, a interface gráfica pode ser instalada através do Linux PC, com o
uso do software qemu.

Step 1: Instale o pacote qemu-user-static no Linux PC

      sudo apt-get install qemu-user-static

Step 2: Insira o cartão SD no Linux PC, e monte a partição rootfs (caso não tenha
sido montada automaticamente):

      Ex: mount -o remount,dev /media/rootfs

      *Obs: Nesse caso, assumimos que o local da montagem foi: /media/rootfs.

Step 3: Copie o arquivo qemu-arm-static para o diretório /media/rootfs/usr/bin

      Ex: cp /usr/bin/qemu-arm-static /media/rootfs/usr/bin

Step 4: Use o chroot para que o shell possa emular e funcionar como o shell da
própria beagleboard, porém com os recursos do PC (CPU, memória, rede, etc).

      chroot /media/rootfs

Agora, pode-se realizar a instalação de diversos pacotes, que serão instalados no
SD da beagleboard:

      export http_proxy=http://proxy.unioeste.br:8080 (se necessário)
      apt-get update
      apt-get install gdm xubuntu-desktop




                                                                                    7
4 Instalando a interface gráfica:

Após configurar a rede, bastam dois comandos para a instalação completa da GUI.

      sudo apt-get update
      sudo apt-get install gdm xubuntu-desktop

Geralmente, é um processo demorado, são vários pacotes que são baixados.




                                                                              8
5 Atualizando o Kernel do Linux:

Step 1: No terminal da BB, digite os seguintes comandos, para criar os seguintes
parâmetros da atualização:

       export DIST=oneiric (oneiric pode ser substituída por outra distribuição);
       export ARCH=armel
       export BOARD=omap

Step 2: Baixe o mais recente script de atualização do kernel (estável), com os
seguintes comandos:

      wget http://rcn-ee.net/deb/${DIST}-${ARCH}/LATEST-${BOARD} (pode ser
necessário obter permissão: sudo …)

       wget $(cat ./LATEST-${BOARD} | grep STABLE | awk '{print $3}')

Step 3: Dessa forma, basta executar o script de atualização, e reiniciar o sistema.

       /bin/bash install-me.sh

A atualização pode ser verificada então com o comando (uname -a), que resultará
na versão do novo kernel.




                                                                                      9
6 Atualizar X-loader e U-boot

Nesta seção será mostrada passo-a-passo a atualização do X-loader e U-boot.
1.1 Atualização

Step 1: Em algumas situações, é necessário zerar as variáveis do ambiente u-boot
para o script funcionar. Isso pode ser feito com o seguinte comando:

       nand erase 260000 20000

Step 2: A seguir, deve-se baixar via git clone os arquivos da atualização:

       git clone git://github.com/RobertCNelson/flash-omap.git
       cd flash-omap

       Entrando no diretório flash-omap, pode-se executar o script de atualização,
e então siga as instruções a seguir:

       sudo ./mk_mmc.sh --mmc /dev/sdX --uboot beagle_cx

       1: Plug Serial Cable in and Start Serial terminal program
       2: Place MMC card in Beagle
       3: Push and Hold User Button
       4: Plug-in Power
       5: Wait for U-boot countdown to finish, Let Off User Button
       6: Wait for Flashing/script to end
       7: Power down, remove and reformat MMC card to final OS

       *Obs: caso não saiba a localização do SD card:

       sudo ./mk_mmc.sh --probe-mmc
       *resultará em algo do tipo:

       Are you sure? I Don't see [/dev/idontknow], here is what I do see...
       fdisk -l:
       Disk /dev/sda: 500.1 GB, 500107862016 bytes <- x86 Root Drive
       Disk /dev/mmcblk0: 3957 MB, 3957325824 bytes <- MMC/SD card
       mount:
       /dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0) <- x86 Root
Partition

      Nesse exemplo, pode-se notar via mount, que /dev/sda1 é o rootfs, e /dev/
mmcblk0 é o outro drive no sistema (MMC/SD) que deve ser usado pelo script
./mk_mmc.sh.




                                                                               10
7 Instalação do DSP-bridge

Nesta seção será mostrada passo-a-passo a instalação do DSP-bridge, para a
utilização do DSP da BeagleBoard.

7.1 No Linux PC:


Step 1: Baixe a última versão do script de instalação dos binários DSP, com o
comando:

      wget https://github.com/RobertCNelson/stable-kernel/
raw/master/create_dsp_package.sh

     Torne-o executável, com o seguinte comando (vale ressaltar que esse script
somente funcionará em uma arquitetura x86):

          chmod a+x ./create_dsp_package.sh

Step 2: Execute o script, que criará (e irá compilar) o diretório contendo as
bibliotecas do DSP:

          ./create_dsp_package.sh

        Após isso, copie o arquivo DSP_Install_libs.tar.gz para a BeagleBoard.
Certifique-se que a conexão com a Internet esteja configurada.


7.2 Na BeagleBoard:


Step 1: Extrair os arquivos com o comando:

          tar xf DSP_Install_libs.tar.gz

Step 2: Execute o script de instalação do DSP

          ./install-DSP.sh

          É necessário também compilar as bibliotecas do Gstreamer. Ao executar o
script:

          ./install-gst-dsp.sh

      Termina o processo de instalação do DSP-bridge. Reiniciando,
automaticamente a bridge é iniciada, mas é possível iniciá-la manualmente com o
comando:

                                                                                 11
sudo /etc/init.d/dsp start

      É possível testá-la com o comando:

      sudo dsp-test

      Para reproduzir um arquivo multimídia (avi por exemplo), use o Gstreamer
com o comando:

        sudo gst-launch playbin2
uri=file:///home/USER/big_buck_bunny_480p_surround-fix.avi




                                                                             12
8 H.264 na BeagleBoard


A BeagleBoard tem suporte para a decodificação de vídeos H.264. Uma das
formas de se fazer isso é utilizando o gst-dsp [2], que se utiliza do GSTreamer
para reprodução de arquivos multimídia. No caso, o gst-dsp utiliza, na
decodificação H.264 pelo processador DSP, o codec proprietário da Texas
Instruments.

Entretanto, no DSP, é necessário que o vídeo seja codificado previamente no perfil
Baseline, pois apenas este perfil do H.264 é suportado.

Para isso, pode ser utilizado o FFmpeg em conjunto com a libx264, e os
procedimentos para o processo da codificação do vídeo para baseline pode ser
visualizada a seguir:



8.1 Codificação do vídeo para o perfil Baseline



Step 1: Processo de instalação do FFmpeg com libx264

- Install X264

Os pacotes do source do x264 podem ser instalados usando o git:

       git clone git://git.videolan.org/x264
       cd x264/
       ./configure –enable-shared
       make
       sudo make install

Obs: Pode ser que um erro ocorra:

“No suitable assembler found. Install ‘yasm’ to get MMX/SSE optimized code.”

Ou instale-o (sudo apt-get install yasm) ou desabilite-o (./configure –disable yasm
–enable-shared).

- Install ffmpeg

Mesmo processo para o FFmpeg:

git clone git://git.videolan.org/ffmpeg
cd ffmpeg/
./configure –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-

                                                                                  13
libfaac –enable-libmp3lame –enable-libtheora –enable-libvorbis –enable-libx264 –
enable-libxvid –disable-ffplay –enable-shared –enable-gpl –enable-postproc –
enable-version3 –enable-nonfree –enable-avfilter –enable-pthreads
make
sudo make install

Obs: pacotes como o libopencore, theora e libxvid podem ser removidos da
configuração, ficando a critério de escolha.

Configure a variável global a seguir e edite o arquivo:

export LD_LIBRARY_PATH=/usr/local/lib
sudo gedit /etc/ld.so.conf


Adicionando ‘/usr/local/lib’ no final do arquivo.

sudo ldconfig
hash x264 ffmpeg ffprobe



Step 2: Codificando
Agora, para executar um video h264 no DSP, o mesmo deve ter perfil BASELINE.
Os parâmetros desse perfil podem ser adicionados em um arquivo, para o ffmpeg
fazer a leitura dos mesmos, no momento da codificação.


          mkdir -p ~/.ffmpeg
          nano ~/.ffmpeg/libx264-baseline.ffpreset


digite:


          coder=0
          bf=0
          flags2=-wpred-dct8x8+mbtree
          wpredp=0


Pronto, com isso o arquivo com esses parâmetros do perfil baseline para o ffmpeg
foi criado. Agora, pode-se codificar um video com o comando (neste caso, foi feito
o download do vídeo já codificado - http://www.bigbuckbunny.org/index.php/download/
- e então o vídeo foi re-codificado):

./ffmpeg -i /media/P39GB/h264/big_buck_bunny_480p_h264.mov -vcodec libx264
-vpre baseline -level 3 -vframes 300 /media/P39GB/h264/baseline/big_buck_
baseline3.mov


                                                                                 14
-i : infile.mov (o contêiner pode variar, ex: mkv)
-vcodec : libx264, especifica para o ffmpeg codificar com essa biblioteca
-vpre : perfil a ser utilizado: baseline, main, high...
-vframes : quantidade de frames a serem codificados.




8.2 Execução:



Requisitos: gst-dsp instalado (capítulo 7), e ainda:

- sudo apt-get install gstreamer0.10-ffmpeg
- e talvez: sudo apt-get install gstreamer0.10-plugins-good


- Para executar o vídeo no ARM (decodificador h264 do ffmpeg para arm)


Executando:

gst-launch-0.10 filesrc location=arquivo.mov ! qtdemux name=d  d. !
queue ! ffdec_h264 ! ffmpegcolorspace ! ximagesink  d.

- No DSP (decoder proprietário da Texas Instruments)

gst-launch-0.10 filesrc location=arquivo.mov ! qtdemux name=d  d. !
queue ! dspvdec ! ffmpegcolorspace ! ximagesink  d.




                                                                            15
Referências

[1] eLinux.org/BeagleBoard - Guia para utilização da plataforma OMAP
BeagleBoard. http://elinux.org/BeagleBoardUbuntu#Advanced

[2] Gst-dsp. GStreamer elements to use DSP algorithms. http://code.google.com/p/gst-
dsp/




                                                                                  16

Tutorial beagleboard

  • 1.
    UNIOESTE - UniversidadeEstadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação Tutorial BeagleBoard Cascavel, 01 de Fevereiro de 2012
  • 2.
    Sumário 1 Começando dozero: Instalando a distribuição Linux................................................................3 1.1 Download de uma imagem pré-configurada......................................................................3 1.2 Instalando via Netinstall.....................................................................................................4 3 Instalando pacotes no cartão SD via qemu................................................................................7 4 Instalando a interface gráfica:...................................................................................................8 5 Atualizando o Kernel do Linux:..................................................................................................9 6 Atualizar X-loader e U-boot.....................................................................................................10 7 Instalação do DSP-bridge.........................................................................................................11 7.1 No Linux PC:......................................................................................................................11 7.2 Na BeagleBoard:...............................................................................................................11 8 H.264 na BeagleBoard.............................................................................................................13 8.1 Codificação do vídeo para o perfil Baseline......................................................................13 8.2 Execução:..........................................................................................................................15 Referências.................................................................................................................................16 2
  • 3.
    1 Começando dozero: Instalando a distribuição Linux Estão catalogadas duas formas de se instalar uma distribuição Linux na BeagleBoard: 1.1 Download de uma imagem pré-configurada Requerido um cartão SD 1GB/2GB. Step 1: Baixe a imagem: wget http://rcn-ee.net/deb/rootfs/oneiric/ubuntu-11.10-r5-minimal-armel.tar.xz Step 2: Verificar a consistência do arquivo md5sum ubuntu-11.10-r5-minimal-armel.tar.xz Caso esteja ok, o comando resultará: dc38df885797c2db3a8fc8265463a43b ubuntu-11.10-r5-minimal- armel.tar.xz Descompacte a imagem, em seguida entre no diretório: tar xJf ubuntu-11.10-r5-minimal-armel.tar.xz cd ubuntu-11.10-r5-minimal-armel Step 3: Execute o script com base na localização do cartão SD ( /dev/ ) Ex: sudo ./setup_sdcard.sh --mmc /dev/sdX --uboot beagle_cx Caso não saiba a localização do SD sudo ./setup_sdcard.sh --probe-mmc gerará uma lista com os dispositivos: Are you sure? I Don't see [/dev/idontknow], here is what I do see... fdisk -l: Disk /dev/sda: 500.1 GB, 500107862016 bytes <- x86 Root Drive Disk /dev/mmcblk0: 3957 MB, 3957325824 bytes <- MMC/SD card mount: /dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0) <- x86 Root Partition Neste caso, /dev/mmcblk0 é o cartão SD que deve ser usado. Então, para 3
  • 4.
    executar o script,use: sudo ./setup_sdcard.sh --mmc /dev/mmcblk0 --uboot beagle_cx Remova o SD da unidade, e insira na BeagleBoard. Ao reiniciar terá o Ubuntu Maverick instalado (modo texto). User: ubuntu password: temppwd Para instalar a gui (graphical user interface), deve-se primeiro configurar a rede na BeagleBoard. Será explicado mais adiante. 1.2 Instalando via Netinstall Requerido um cartão SD 1GB/2GB. Este método utiliza de uma conexão com a internet para baixar a imagem e instalar no momento em que der o boot na beagleboard. - Ubuntu 11.10 (Oneiric): No terminal Linux PC, digite: git clone git://github.com/RobertCNelson/netinstall.git cd netinstall Instale o script: em "board" > substituir por beagle_cx Obs: Esse script precisa de mkimage. sudo apt-get install u-boot mkimage Executar Script: sudo ./mk_mmc.sh --mmc /dev/sdX --uboot "board" --distro oneiric Options: • --uboot: beagle_bx, beagle, panda • --distro: maverick, oneiric • --firmware: installs firmware • --serial-mode: debian-installer uses Serial Port • --addon ulcd: (ulcd from: http://search.digikey.com/scripts/DkSearch/dksus.dll? vendor=0&keywords=ULCD7-ND) Insira o cartão SD na Beagle e inicie-a: Escolha o idioma, teclado.. Configure a rede. Então o instalador baixará os pacotes necessários. User: ubuntu password: temppwd 4
  • 5.
    2 Provendo Internetà BeagleBoard via usb através de um Linux PC: Requerido: um adaptador usb ethernet Step 1: Configurando o PC: Primeiramente, certifique-se que ambos estão conectados pelo usb (pode ser necessário rodar o comando ifconfig usb0 na BeagleBoard para que o PC reconheça o dispositivo). ifconfig Se estiver conectado via usb com a BB, aparecerá na tela algo do tipo: usb0 Link encap:Ethernet HWaddr 45:d1:a3:05:28:d3 Nem sempre o dispositivo aparece como usb0. Para este exemplo, será usado usb0, mas, nos próximos comandos, substitua pelo nome que seu linux reconhecer (usb1, …). Então, é necessário ativar a interface usb, setando um IP e uma máscara de rede à interface: sudo ifconfig usb0 [ip address] netmask [ netmask ] up Ex: sudo ifconfig usb0 192.168.0.1 netmask 255.255.255.0 up É necessário também configurar as IPTables do Linux PC para que os pacotes possam ser repassados à interface usb0. Assumindo que o Linux PC esteja conectado à internet via eth0 ou wlan0, rode os seguintes comandos: -Removendo prévias configurações: sudo iptables --flush sudo iptables --table nat --flush sudo iptables --delete-chain sudo iptables --table nat --delete-chain - Liberando a repassagem dos pacotes entre as interfaces: sudo iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE sudo iptables --append FORWARD --in-interface usb0 -j ACCEPT sudo vi /etc/sysctl.conf - Retire o “#” da linha: “#net.ipv4.ip_forward=1” para ativar a repassagem sudo sysctl -p (opcional, mostra se a repassagem está ativada) Obs: Em eth0, pode ser substituído por wlan0 (caso esteja na rede sem fio). 5
  • 6.
    Step 2: Configurandoa BeagleBoard Deve-se ativar a interface usb0, da mesma forma como foi feito no Linux PC, mas com diferentes parâmetros: sudo ifconfig usb0 192.168.0.69 netmask 255.255.255.0 up Obs: Certifique-se que o ip pertença à rede do Linux PC (192.168.0.X) Em seguida, deve-se adicionar o endereço do gateway para a BeagleBoard, endereço no qual todo o tráfego de rede da BeagleBoard consiga atingir a internet. Para isso, basta adicionar o endereço do host (Linux PC) como gateway, com o seguinte comando: sudo route add default gw 192.168.0.1 (IP do Linux PC) Agora, é necessário editar o arquivo que contém os endereços DNS que a BeagleBoard utilizará. Geralmente, basta adicionar o endereço do gateway (roteador da rede que permite a conexão do Linux PC com a internet) que a resolução de nomes será responsabilidade deste, mas, caso não funcionar, pode- se adicionar outros servidores DNS, como o OpenDNS (208.67.222.222 ). sudo vi /etc/resolv.conf Adicione: nameserver 208.67.222.222 ou o DNS que lhe convier. Agora está tudo configurado! Pode-se testar a conexão com a internet com o comando ping www.google.com, recebendo resposta, está tudo certo. 6
  • 7.
    3 Instalando pacotesno cartão SD via qemu É possível instalar pacotes diretamente no cartão SD (com o ubuntu para a beagleboard instalado) através do shell do Linux PC. Por exemplo, a interface gráfica pode ser instalada através do Linux PC, com o uso do software qemu. Step 1: Instale o pacote qemu-user-static no Linux PC sudo apt-get install qemu-user-static Step 2: Insira o cartão SD no Linux PC, e monte a partição rootfs (caso não tenha sido montada automaticamente): Ex: mount -o remount,dev /media/rootfs *Obs: Nesse caso, assumimos que o local da montagem foi: /media/rootfs. Step 3: Copie o arquivo qemu-arm-static para o diretório /media/rootfs/usr/bin Ex: cp /usr/bin/qemu-arm-static /media/rootfs/usr/bin Step 4: Use o chroot para que o shell possa emular e funcionar como o shell da própria beagleboard, porém com os recursos do PC (CPU, memória, rede, etc). chroot /media/rootfs Agora, pode-se realizar a instalação de diversos pacotes, que serão instalados no SD da beagleboard: export http_proxy=http://proxy.unioeste.br:8080 (se necessário) apt-get update apt-get install gdm xubuntu-desktop 7
  • 8.
    4 Instalando ainterface gráfica: Após configurar a rede, bastam dois comandos para a instalação completa da GUI. sudo apt-get update sudo apt-get install gdm xubuntu-desktop Geralmente, é um processo demorado, são vários pacotes que são baixados. 8
  • 9.
    5 Atualizando oKernel do Linux: Step 1: No terminal da BB, digite os seguintes comandos, para criar os seguintes parâmetros da atualização: export DIST=oneiric (oneiric pode ser substituída por outra distribuição); export ARCH=armel export BOARD=omap Step 2: Baixe o mais recente script de atualização do kernel (estável), com os seguintes comandos: wget http://rcn-ee.net/deb/${DIST}-${ARCH}/LATEST-${BOARD} (pode ser necessário obter permissão: sudo …) wget $(cat ./LATEST-${BOARD} | grep STABLE | awk '{print $3}') Step 3: Dessa forma, basta executar o script de atualização, e reiniciar o sistema. /bin/bash install-me.sh A atualização pode ser verificada então com o comando (uname -a), que resultará na versão do novo kernel. 9
  • 10.
    6 Atualizar X-loadere U-boot Nesta seção será mostrada passo-a-passo a atualização do X-loader e U-boot. 1.1 Atualização Step 1: Em algumas situações, é necessário zerar as variáveis do ambiente u-boot para o script funcionar. Isso pode ser feito com o seguinte comando: nand erase 260000 20000 Step 2: A seguir, deve-se baixar via git clone os arquivos da atualização: git clone git://github.com/RobertCNelson/flash-omap.git cd flash-omap Entrando no diretório flash-omap, pode-se executar o script de atualização, e então siga as instruções a seguir: sudo ./mk_mmc.sh --mmc /dev/sdX --uboot beagle_cx 1: Plug Serial Cable in and Start Serial terminal program 2: Place MMC card in Beagle 3: Push and Hold User Button 4: Plug-in Power 5: Wait for U-boot countdown to finish, Let Off User Button 6: Wait for Flashing/script to end 7: Power down, remove and reformat MMC card to final OS *Obs: caso não saiba a localização do SD card: sudo ./mk_mmc.sh --probe-mmc *resultará em algo do tipo: Are you sure? I Don't see [/dev/idontknow], here is what I do see... fdisk -l: Disk /dev/sda: 500.1 GB, 500107862016 bytes <- x86 Root Drive Disk /dev/mmcblk0: 3957 MB, 3957325824 bytes <- MMC/SD card mount: /dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0) <- x86 Root Partition Nesse exemplo, pode-se notar via mount, que /dev/sda1 é o rootfs, e /dev/ mmcblk0 é o outro drive no sistema (MMC/SD) que deve ser usado pelo script ./mk_mmc.sh. 10
  • 11.
    7 Instalação doDSP-bridge Nesta seção será mostrada passo-a-passo a instalação do DSP-bridge, para a utilização do DSP da BeagleBoard. 7.1 No Linux PC: Step 1: Baixe a última versão do script de instalação dos binários DSP, com o comando: wget https://github.com/RobertCNelson/stable-kernel/ raw/master/create_dsp_package.sh Torne-o executável, com o seguinte comando (vale ressaltar que esse script somente funcionará em uma arquitetura x86): chmod a+x ./create_dsp_package.sh Step 2: Execute o script, que criará (e irá compilar) o diretório contendo as bibliotecas do DSP: ./create_dsp_package.sh Após isso, copie o arquivo DSP_Install_libs.tar.gz para a BeagleBoard. Certifique-se que a conexão com a Internet esteja configurada. 7.2 Na BeagleBoard: Step 1: Extrair os arquivos com o comando: tar xf DSP_Install_libs.tar.gz Step 2: Execute o script de instalação do DSP ./install-DSP.sh É necessário também compilar as bibliotecas do Gstreamer. Ao executar o script: ./install-gst-dsp.sh Termina o processo de instalação do DSP-bridge. Reiniciando, automaticamente a bridge é iniciada, mas é possível iniciá-la manualmente com o comando: 11
  • 12.
    sudo /etc/init.d/dsp start É possível testá-la com o comando: sudo dsp-test Para reproduzir um arquivo multimídia (avi por exemplo), use o Gstreamer com o comando: sudo gst-launch playbin2 uri=file:///home/USER/big_buck_bunny_480p_surround-fix.avi 12
  • 13.
    8 H.264 naBeagleBoard A BeagleBoard tem suporte para a decodificação de vídeos H.264. Uma das formas de se fazer isso é utilizando o gst-dsp [2], que se utiliza do GSTreamer para reprodução de arquivos multimídia. No caso, o gst-dsp utiliza, na decodificação H.264 pelo processador DSP, o codec proprietário da Texas Instruments. Entretanto, no DSP, é necessário que o vídeo seja codificado previamente no perfil Baseline, pois apenas este perfil do H.264 é suportado. Para isso, pode ser utilizado o FFmpeg em conjunto com a libx264, e os procedimentos para o processo da codificação do vídeo para baseline pode ser visualizada a seguir: 8.1 Codificação do vídeo para o perfil Baseline Step 1: Processo de instalação do FFmpeg com libx264 - Install X264 Os pacotes do source do x264 podem ser instalados usando o git: git clone git://git.videolan.org/x264 cd x264/ ./configure –enable-shared make sudo make install Obs: Pode ser que um erro ocorra: “No suitable assembler found. Install ‘yasm’ to get MMX/SSE optimized code.” Ou instale-o (sudo apt-get install yasm) ou desabilite-o (./configure –disable yasm –enable-shared). - Install ffmpeg Mesmo processo para o FFmpeg: git clone git://git.videolan.org/ffmpeg cd ffmpeg/ ./configure –enable-libopencore-amrnb –enable-libopencore-amrwb –enable- 13
  • 14.
    libfaac –enable-libmp3lame –enable-libtheora–enable-libvorbis –enable-libx264 – enable-libxvid –disable-ffplay –enable-shared –enable-gpl –enable-postproc – enable-version3 –enable-nonfree –enable-avfilter –enable-pthreads make sudo make install Obs: pacotes como o libopencore, theora e libxvid podem ser removidos da configuração, ficando a critério de escolha. Configure a variável global a seguir e edite o arquivo: export LD_LIBRARY_PATH=/usr/local/lib sudo gedit /etc/ld.so.conf Adicionando ‘/usr/local/lib’ no final do arquivo. sudo ldconfig hash x264 ffmpeg ffprobe Step 2: Codificando Agora, para executar um video h264 no DSP, o mesmo deve ter perfil BASELINE. Os parâmetros desse perfil podem ser adicionados em um arquivo, para o ffmpeg fazer a leitura dos mesmos, no momento da codificação. mkdir -p ~/.ffmpeg nano ~/.ffmpeg/libx264-baseline.ffpreset digite: coder=0 bf=0 flags2=-wpred-dct8x8+mbtree wpredp=0 Pronto, com isso o arquivo com esses parâmetros do perfil baseline para o ffmpeg foi criado. Agora, pode-se codificar um video com o comando (neste caso, foi feito o download do vídeo já codificado - http://www.bigbuckbunny.org/index.php/download/ - e então o vídeo foi re-codificado): ./ffmpeg -i /media/P39GB/h264/big_buck_bunny_480p_h264.mov -vcodec libx264 -vpre baseline -level 3 -vframes 300 /media/P39GB/h264/baseline/big_buck_ baseline3.mov 14
  • 15.
    -i : infile.mov(o contêiner pode variar, ex: mkv) -vcodec : libx264, especifica para o ffmpeg codificar com essa biblioteca -vpre : perfil a ser utilizado: baseline, main, high... -vframes : quantidade de frames a serem codificados. 8.2 Execução: Requisitos: gst-dsp instalado (capítulo 7), e ainda: - sudo apt-get install gstreamer0.10-ffmpeg - e talvez: sudo apt-get install gstreamer0.10-plugins-good - Para executar o vídeo no ARM (decodificador h264 do ffmpeg para arm) Executando: gst-launch-0.10 filesrc location=arquivo.mov ! qtdemux name=d d. ! queue ! ffdec_h264 ! ffmpegcolorspace ! ximagesink d. - No DSP (decoder proprietário da Texas Instruments) gst-launch-0.10 filesrc location=arquivo.mov ! qtdemux name=d d. ! queue ! dspvdec ! ffmpegcolorspace ! ximagesink d. 15
  • 16.
    Referências [1] eLinux.org/BeagleBoard -Guia para utilização da plataforma OMAP BeagleBoard. http://elinux.org/BeagleBoardUbuntu#Advanced [2] Gst-dsp. GStreamer elements to use DSP algorithms. http://code.google.com/p/gst- dsp/ 16