Experimentos com a Beaglebone

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar

[Usuário:Aylons] comprou uma Beaglebone em 02/2013. Como ele não tinha onde colocar suas anotações, acho que poderia ser útil compartilhar as configurações iniciais aqui no wiki do Garoa, provavelmente porque boa parte dos projetos com ela serão feitas no próprio Garoa.

Configurações

1 - Configurei a rede seguindo as instruções do [Embedded Linux Wiki]

2- Porém, por algum motivo, o servidor feeds.angstrom.com não responde. Por isso, editei manualmente todos os arquivos .conf em /etc/opkg/ para apontarem para o servidor www.angstrom.com. Agora tudo funciona ok.


RTL-SDR

Aqui ficam as tentativas de implementar um SDR para recepção usando a Beaglebone e [dongles de TV digital].

1- Segui as instruções [deste site], para instalar o driver rtl-sdr no Linux. Tudo funcionou como descrito no site.

2 - Segui as [instruções para construir o GnuRadio no site OpenSDR]: o resultado não foi bom (o GnuRadio não tem mais arquivo .configure, mudando para o CMAKE).

3 - Então, portei as opções do .configure para o CMAKE: cmake -DENABLE_GRC=False -DENABLE_GR_COMP=False CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O3" CXXFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O3" ../

4 - Então, surgem os problemas das dependências. Instalei o boost-dev (biblioteca em python) e o python-cheetah. Falta o fftw, que aparentemente não tem no repositório opkg da angstrom.

Outras dependências instaladas à mão: ORC. O ORC do Angstrom é muito antigo para o GnuRadio atual (que precisa de ORC 4.11) Estou tentando baixar o fonte e compilar com flags para ARM... (instalação funcionou bem somente com ./configure, make, make install)

O FFTW eu preferi compilar usando flags para otimizar (o ORC obviamente não precisa disso). Usei a seguinte linha de comando para o configure (tirei inspiração do guia do FFTW e misturei com o guia de compilação do GnuRadio, logo acima):

/configure --enable-float --enable-neon CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp" CXXFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon"

Depois disso, a maior parte dos módulos compilou. Faltam alguns inúteis, como o QT, que não tem uso na Beaglebone, mas também faltam potenciais bons módulos, como o de wavelet, que depende do pacote GSL. Mas resolvi prosseguir daqui.

5- Make install exigiu o módulo python-compile, instalei usando opkg.

6 - Make install deu erro:

/home/root/build/gnuradio/gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.c: In function 'dotprod_fff_armv7_a': /home/root/build/gnuradio/gnuradio-core/src/lib/filter/dotprod_fff_armv7_a.c:67:5: error: impossible register constraint in 'asm' make[2]: *** [gnuradio-core/src/lib/CMakeFiles/gnuradio-core.dir/filter/dotprod_fff_armv7_a.c.o] Error 1 make[1]: *** [gnuradio-core/src/lib/CMakeFiles/gnuradio-core.dir/all] Error 2 make: *** [all] Error 2

7 - Com ajuda do AcidX, percebi que o problema se limita a dois arquivos que provavelmente estão com asm malformado. Usando ifdefs especiais, contornei o problema para prosseguir a compilação (será preciso corrigir isso depois, no código).

8 - Novo erro de compilação - não conseguia linkar com fftw. Recompilando o fftw com a flag --enable-shared para permitir que ele funcione como biblioteca.