1. UNIOESTE - Universidade Estadual 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 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
3. 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
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: 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
7. 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
8. 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
9. 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
10. 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
11. 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
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 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
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