Linux – PinMux Utility V3 agora para Linux

PinMux_Linux_logo_cleitonbueno.com

É 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.

InstalacaoPinMux3Linux_cleitonbueno.com
Figura 01 – Tela inicial instalação TI PinMux V3

A figura 02 é o diretório de instalação eu resolvi deixar o default que parece ser $HOME/ti.

InstalacaoPinMuxV3_cleitonbueno.com
Figura 02 – Diretório de instalação TI PinMux V3

A figura 03 é o processo final após a instalação, marque as opções desejadas e clique em Finish.

InstalacaoPinMuxV3Finish_cleitonbueno.com
Figura 03 – Finalizando instalação TI PinMux V3

 

 

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.

PinMuxV3_Linux_cleitonbueno.com
Figura 04 – Tela inicial do TI PinMux V3

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.

PinMuxV3_Linux_projeto_cleitonbueno.com
Figura 05 – Tela principal TI PinMux V3

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://beagleboard.org/BLACK

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

Share Button

CC BY-NC-SA 4.0 Linux – PinMux Utility V3 agora para Linux by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.