É notável o uso da Beaglebone Black em diversos projetos, podemos ver tanto para hobbystas quanto em ambientes profissionais.
Uma placa de respeito, com varias versões eu particularmente possuo uma A6, onde o coração da Beaglebone Black ou BBB é um SoC da Texas Instruments, sendo um Cortex-A8 da linha SITARA AM335X operando a 1GHz.
Esse SoC AM335X(AM3358 ou AM3359) possui características técnicas muito interessantes como os dois conectores de 46 pinos (P8 e P9) com diversas interfaces de I/O como I2C, SPI, ADC, LCD, PWM, UART’s e os diversos GPIO’s e suas opções de uso.
Não vou expandir sobre a Beaglebone Black o foco não é este mas ela é a ideia central, e a Texas Instruments possui uma ferramenta bem legal chamada PinMux Utility V2 (02/2013), um software com interface gráfica amigável para configurar/definir a configuração dos pinos, realizar multiplexação e resolver conflitos de I/O já que muitos possui mais de uma função.
Porém a noticia chata é que esta ferramenta só funcionava no Windows, eu até mostrei como fiz para executar o PinMux V2 no Linux usando Wine na lista sis_embarcados.
https://groups.google.com/d/topic/sis_embarcados/vdd6WIwdOeE/discussion
Estava gerando um novo Device Tree Source (dts) para a Beaglebone Black e tive problemas com endereços, configurações, e o PinMux V2 com Wine estava em meu notebook, por acaso resolvi entrar no site da Texas Instruments para baixar novamente a ferramenta e tenho a surpresa, muito recente por sinal (13/02/2015) que lançaram a versão PinMux Utility V3 e desta vez para Linux.
E agora os passos necessários para instalar a ferramenta, o link esta logo abaixo.
http://www.ti.com/tool/pinmuxtool
ou
http://processors.wiki.ti.com/index.php/TI_PinMux_Tool
$ wget http://software-dl.ti.com/ccs/esd/pinmux/pinmux-3.0.625-setup.run $ chmod +x pinmux-3.0.625-setup.run $ ./pinmux-3.0.625-setup.run
A figura 01 é a primeira tela da instalação, clique em Forward.
A figura 02 é o diretório de instalação eu resolvi deixar o default que parece ser $HOME/ti.
A figura 03 é o processo final após a instalação, marque as opções desejadas e clique em Finish.
Problema
De primeira a aplicação não abriu em meu Linux, no caso um Mint 17 64-bit, tentei também em uma VM com Ubuntu 14.04 LTS e também não foi :(
Primeira ideia foi ir ao diretório da instalação e executar o aplicativo.
$ cd ~/ti ~/ti $ ./TIPinMux ./TIPinMux: error while loading shared libraries. libudev.so.0: cannot open shared object file: No such file or directory $
Solução
A solução do problema não é tão complicada, visto que é claro que ele necessita de acesso a uma biblioteca, no caso a libudev.so e não encontrou, primeira coisa, eu executei um comando para ver quais bibliotecas que ele não encontrou.
$ cd ~/ti ~/ti $ ldd TIPinMux | grep "not found" libudev.so.0 => not found
Ok, o problema realmente é com a libudev.so, vamos pesquisar sobre ela.
~/ti $ dpkg --get-selections | grep libudev libudev1:amd64 install libudev1:i386 install ~/ti $ sudo find /lib/ -type f -iname libudev.so* /lib/i386-linux-gnu/libudev.so.1.3.5 /lib/x86_64-linux-gnu/libudev.so.1.3.5
Certo, esta instalado para 32-bits e 64-bits e encontrei em /lib, será que um link simbólico para este caso resolve? Vamos ver.
$ cd /lib/x86_64-linux-gnu /lib/x86_64-linux-gnu $ sudo ln -s libudev.so.1.3.5 libudev.so.0 /lib/x86_64-linux-gnu $ ls -l libudev.so.* lrwxrwxrwx 1 root root 16 Fev 24 09:31 libudev.so.0 -> libudev.so.1.3.5 lrwxrwxrwx 1 root root 16 Out 30 18:32 libudev.so.1 -> libudev.so.1.3.5 -rw-r--r-- 1 root root 67600 Out 30 18:32 libudev.so.1.3.5
Analisando agora nossa aplicação com a libudev.so.
~/ti $ ldd TIPinMux | grep libudev.so libudev.so.0 => /lib/x86_64-linux-gnu/libudev.so.0 (0x00007f618d00d000)
Executando novamente o TIPinMux.
$ ./TIPinMux
Na figura 04 a tela inicial da aplicação, onde você pode selecionar o Device, Part e Package, Package é muito importante atentar principalmente porque no datasheet possui uma tabela com os diferentes Packages.
E a figura 05 a tela principal do programa, onde na coluna do lado esquerdo estão os periféricos para serem adicionados, na coluna do meio a configuração do periférico e na coluna do lado direito a visualização da configuração que esta realizando demonstrando no SoC.
Você pode salvar o projeto atual (Save) e também a opção (Generate) que a surpresa pra mim foi ele gerar o .dts mais o código .c e .h referente ao periférico configurado e que pode ser utilizado em algum SDK ou em alguma imagem customizada como meu caso.
Segue abaixo um exemplo da configuração da UART4 que realizei e os arquivos gerados.
~/Pinmux/uart4 $ ls -1 am335x_gpevm_pinmux_data.c am335x_pinmux.h devicetree.txt PinmuxConfigSummary.csv
Gostei muito da nova versão, principalmente por funcionar em Linux sem ter que fazer adaptações, facilita e muito a vida de quem customiza e interagi muito com o GPIO e gera arquivos .dts, além de ajudar a resolver os conflitos de pinos.
Segue um vídeo do PinMux Utility da versão Windows ainda mas que hoje serve para o Linux também.
Toda a informação necessária e até um link explicando sobre a nova ferramenta direto do site da Texas Instruments estão em referências.
Até a próxima!
Referências
http://processors.wiki.ti.com/index.php/TI_PinMux_Tool
http://processors.wiki.ti.com/index.php/Pin_Mux_Utility_for_ARM_MPU_Processors
http://www.ti.com/tool/pinmuxtool
Linux – PinMux Utility V3 agora para Linux by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.