16
UNIOESTE - Universidade Estadual do Oeste do Paraná Curso de Bacharelado em Ciência da Computação Tutorial BeagleBoard Cascavel, 01 de Fevereiro de 2012

Tutorial beagleboard

Embed Size (px)

Citation preview

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.xzcd 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 SDsudo ./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 DriveDisk /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.gitcd 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 --flushsudo iptables --table nat --flushsudo iptables --delete-chainsudo 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 ACCEPTsudo 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 comandoping 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 updateapt-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 updatesudo 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=armelexport 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.gitcd 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 program2: Place MMC card in Beagle3: Push and Hold User Button4: Plug-in Power5: Wait for U-boot countdown to finish, Let Off User Button6: Wait for Flashing/script to end7: 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 DriveDisk /dev/mmcblk0: 3957 MB, 3957325824 bytes <- MMC/SD cardmount:/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/x264cd x264/./configure –enable-sharedmakesudo 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/ffmpegcd 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-pthreadsmakesudo 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/libsudo gedit /etc/ld.so.conf

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

sudo ldconfighash 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 ~/.ffmpegnano ~/.ffmpeg/libx264-baseline.ffpreset

digite:

coder=0bf=0flags2=-wpred-dct8x8+mbtreewpredp=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