Ferramentas Linux que todo técnico e engenheiro deveria conhecer

A motivação deste artigo foi o fato de anos trabalhando com projetos de diversas áreas e empresas, sempre notei uma carência do técnico/engenheiro/desenvolvedor conhecer as ferramentas certas para depurar/investigar em ambiente Linux.

A utilização do Sistema Operacional Linux em plataformas embarcadas e popularmente em RaspberryPI colabora ainda mais para o caso de não utilizar a ferramenta certa para o trabalho e querer sair desenvolvendo programas e scripts.

Todas as ferramentas descritas neste artigo funcionam em Linux Host(Computador/Notebook) e Linux Target(Placa com Sistema Embarcado).

 

I2C-Tools

 

Um conjunto de ferramentas(i2cget, i2cset, i2cdetect, i2cdump e i2ctransfer) que auxilia o profissional a procurar dispositivos no barramento I2C, gerando uma tabela com a lista de dispositivos detectados no especifico barramento.

Listando barramentos disponíveis:

root@colibri-imx7-emmc:~# i2cdetect -l
i2c-3	i2c       	30a50000.i2c                    	I2C adapter
i2c-1	i2c       	30a30000.i2c                    	I2C adapter
i2c-0	i2c       	30a20000.i2c                    	I2C adapter

Listando os dispositivos em um barramento especifico:

root@colibri-imx7-emmc:~# i2cdetect -y -r 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- UU -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- 
30: -- -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --             
            
root@colibri-imx7-emmc:~# i2cdetect -y -r 3
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 2e -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

Use a opção -F para consultar as funcionalidades do barramento i2c.

# i2cdetect -F 0
Functionalities implemented by /dev/i2c-0:
I2C                              yes
SMBus Quick Command              yes
SMBus Send Byte                  yes
SMBus Receive Byte               yes
SMBus Write Byte                 yes
SMBus Read Byte                  yes
SMBus Write Word                 yes
SMBus Read Word                  yes
SMBus Process Call               yes
SMBus Block Write                yes
SMBus Block Read                 yes
SMBus Block Process Call         no
SMBus PEC                        yes
I2C Block Write                  yes
I2C Block Read                   yes

Utilizando i2c-dump para ler no BUS(3), endereço (0x2e) e imprimir no formato word(w) o range de endereço de 0x0 a 0xf.

root@colibri-imx7-emmc:~# i2cdump -r 0-0xf 3 0x2e w
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-3, address 0x2e, mode word
Probe range limited to 0x00-0x0f.
Continue? [Y/n] Y
     0,8  1,9  2,a  3,b  4,c  5,d  6,e  7,f
00: 0000 0000 0000 ff00 ff81 ffff ffff ffff 
08: 0000 0000 0000 ff00 ffff ffff ffff ffff 

Alterando de word(w) para byte(b):

root@colibri-imx7-emmc:~# i2cdump -r 0-0xf 3 0x2e b
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-3, address 0x2e, mode byte
Probe range limited to 0x00-0x0f.
Continue? [Y/n] Y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 00 00 00 81 ff ff ff 00 00 00 00 ff ff ff ff    ....?...........

O campo UU diz que o dispositivo foi registrado pelo kernel, possivelmente há um driver manipulando este dispositivo.

 

 

SPItools

Pacote que contem comandos que auxiliam na configuração e uso do SPI em Linux.

Um detalhe importando para uso correto e funcionalidade desta ferramenta é habilitar `CONFIG_SPI_SPIDEV` no kernel do Linux e também confirmar se o node SPI da placa esta com `compatible` spidev no device-tree, como exemplo veja o device-tree do módulo Colibri iMX6 da Toradex – imx6dl-colibri-eval-v3.dts, basta alterar de “disabled” para “okay”.

Obtendo o valor de clock e na sequência alterando:

$ spi-config -d /dev/spidev0.0 -q
/dev/spidev0.0: mode=0, lsb=0, bits=8, speed=500000


$ spi-config -d /dev/spidev0.0 -s 10000000

$ spi-config -d /dev/spidev0.0 -q
/dev/spidev0.0: mode=0, lsb=0, bits=8, speed=10000000

 

Minicom/Picocom

Outra ferramenta indispensável para qualquer desenvolvimento em Sistemas Embarcados é um comando para manipular porta serial.

No Linux uso ambos Minicom e Picocom tanto no Linux Host como no Linux Target, a seguir um exemplo de como abrir uma porta serial com cada um.

cbueno@b2open-nb1 ~ $ sudo minicom -D /dev/ttyUSB0 -b115200

Para sair pressione Ctrl+A, depois pressione Z para abrir o Menu, em seguida X e confirmar selecionando ‘YES’.

cbueno@b2open-nb1 ~$ sudo picocom /dev/ttyUSB0 --baud 115200

Para sair pressione Ctrl+A e depois X.

 

CAN-Utils

Uma das ferramentas que utilizo com frequência é a can-utils(candump, canplayer, cansend, cangen e canbusload), seja em projetos do Agronegócio ou na Indústria Automotiva no qual realizamos algum trabalho.

Para o correto utilização desta ferramenta é necessário algumas configurações no Kernel Linux para correto suporte do SocketCAN no qual é requisito para funcionar, uma interface de rede é criada no Linux para a comunicação.

Não tem como demonstrar o uso dos comandos, mas estou anexando o vídeo a seguir que é rápido e mostra o uso do can-utils do canal Open Garages.

 

https://www.youtube.com/watch?v=oHqDLWN3a_w

 

USB-Utils

 

Com a popularização de placas com processadores multi-cores ARM e baixo custo, muitas soluções e projetos foram surgindo e em sua maioria sempre é necessária interagir com algum dispositivo USB, seja um conversor USB-Serial, Dispositivo HID, Oximetro, Adaptador Bluetooth BLE, Adaptador WiFi.

Utilizando as ferramentas do pacote usb-utils(lsusb, usb-devices, usbhid-dump) conseguimos obter precisamente diversas informações do USB Host e dos dispositivos conectados, qual barramento esta sendo utilizado, consumo dos dispositivos e claro Fabricante e Modelo do dispositivo.

A seguir um exemplo executando o comando `lsusb`em meu notebook:

cbueno@b2open-nb1 ~ $ lsusb 
Bus 002 Device 002: ID 04e8:61b6 Samsung Electronics Co., Ltd M3 Portable Hard Drive 1TB
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Neste momento em uma das portas USB(002) tenho um HD Externo Samsung e em outra porta USB(001) esta o leitor de cartão SD além de outros dispositivos que já conectei e removi hoje, o ID 0bda:0129 respectivamente VENDOR ID e PRODUCT ID.

Utilizando ainda o `lsusb`, podemos habilitar mais detalhes com -v e especificar um device:

cbueno@b2open-nb1 ~ $ lsusb -v -d 0bda:0129

Device Descriptor:

  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bMaxPacketSize0        64
  idVendor           0x0bda Realtek Semiconductor Corp.
  idProduct          0x0129 RTS5129 Card Reader Controller
  bcdDevice           39.60
  iManufacturer           1 
  iProduct                2 
  iSerial                 3 
  bNumConfigurations      1

  Configuration Descriptor:
    ...
    MaxPower              500mA
    ...

 

Considerações Finais

Encerramos este artigo com 6 ferramentas que todo profissional na área de Sistemas Embarcados poderá utilizar para manipular/depurar I2C, SPI, Porta Serial, CAN e USB.

Deixe seu comentário para sabermos de alguma necessidade sua ou da empresa em que trabalha se há alguma duvida ou dificuldade no Linux e que poderia escrever sobre o caso ou uma ferramenta.

Até a próxima!

 

Referências

Comentários:
Inscrever-se
Notificar de
1 Comentário
mais recentes
mais antigos Mais votado
Leandro Teixeira Souza
Leandro Teixeira Souza
08/04/2020 16:15

show..de bola

Home » Notícias » Ferramentas Linux que todo técnico e engenheiro deveria conhecer

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: