Acessando a console serial na Beaglebone Black

- por Sergio Prado

Categorias: Beaglebone Black Tags: , ,

A Beaglebone Black possui uma porta serial configurada como console que pode ser acessada através do barramento de pinos J1, conforme figura abaixo:

bbb-serialport-pins

A pinagem é a seguinte:

  • Pino 1: Terra
  • Pino 4: RX
  • Pino 5: TX

Para a conexão, você vai precisar de um cabo conversor FTDI para TTL de 3,3V, que pode ser adquirido facilmente em lojas como a Digikey, Farnell ou Sparkfun.

cabo-conversor

Então é só conectar o cabo e configurar sua aplicação de terminal favorita (minicom, picocom, screen, etc) em 115200,8N1 e testar.

DSC01686.resized

Você deverá visualizar as mensagens de boot do kernel e terá acesso ao sistema operacional.

U-Boot SPL 2013.04-dirty (Jun 19 2013 - 09:57:14)
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0 
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0 
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
OMAP SD/MMC: 0
mmc_send_cmd : timeout: No status update
reading u-boot.img
reading u-boot.img
 
U-Boot 2013.04-dirty (Jun 19 2013 - 09:57:14)
 
I2C: ready
DRAM: 512 MiB
WARNING: Caches not enabled
NAND: No NAND device found!!!
0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
*** Warning - readenv() failed, using default environment
 
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0 
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Peripheral mode controller at 47401000 using PIO, IRQ 0
musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, HB-ISO Rx, HB-ISO Tx, SoftConn)
musb-hdrc: MHDRC RTL version 2.0 
musb-hdrc: setup fifo_mode 4
musb-hdrc: 28/31 max ep, 16384/16384 memory
USB Host mode controller at 47401800 using PIO, IRQ 0
Net:  not set. Validating first E-fuse MAC
cpsw, usb_ether
Hit any key to stop autoboot: 0 
gpio: pin 53 (gpio 53) value is 1
Card did not respond to voltage select!
mmc0(part 0) is current device
mmc_send_cmd : timeout: No status update
Card did not respond to voltage select!
No micro SD card found, setting mmcdev to 1
mmc_send_cmd : timeout: No status update
mmc1(part 0) is current device
gpio: pin 54 (gpio 54) value is 1
SD/MMC found on device 1
reading uEnv.txt
26 bytes read in 3 ms (7.8 KiB/s)
Loaded environment from uEnv.txt
Importing environment from mmc ...
gpio: pin 55 (gpio 55) value is 1
4270840 bytes read in 746 ms (5.5 MiB/s)
gpio: pin 56 (gpio 56) value is 1
24129 bytes read in 51 ms (461.9 KiB/s)
Booting from mmc ...
## Booting kernel from Legacy Image at 80007fc0 ...
Image Name: Angstrom/3.8.13/beaglebone
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 4270776 Bytes = 4.1 MiB
Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 80f80000
Booting using the fdt blob at 0x80f80000
XIP Kernel Image ... OK
OK
Using Device Tree in place at 80f80000, end 80f88e40
 
Starting kernel ...
 
Uncompressing Linux... done, booting the kernel.
[ 0.194102] omap2_mbox_probe: platform not supported
[ 0.204676] tps65217-bl tps65217-bl: no platform data provided
[ 0.281263] bone-capemgr bone_capemgr.8: slot #0: No cape found
[ 0.318368] bone-capemgr bone_capemgr.8: slot #1: No cape found
[ 0.355477] bone-capemgr bone_capemgr.8: slot #2: No cape found
[ 0.392586] bone-capemgr bone_capemgr.8: slot #3: No cape found
[ 0.412613] bone-capemgr bone_capemgr.8: slot #6: BB-BONELT-HDMIN conflict P8.45 (#5:BB-BONELT-HDMI)
[ 0.422233] bone-capemgr bone_capemgr.8: slot #6: Failed verification
[ 0.429009] bone-capemgr bone_capemgr.8: loader: failed to load slot-6 BB-BONELT-HDMIN:00A0 (prio 2)
[ 0.451649] omap_hsmmc mmc.4: of_parse_phandle_with_args of 'reset' failed
[ 0.516109] pinctrl-single 44e10800.pinmux: pin 44e10854 already requested by 44e10800.pinmux; cannot claim for gpio-leds.7
[ 0.527848] pinctrl-single 44e10800.pinmux: pin-21 (gpio-leds.7) status -22
[ 0.535163] pinctrl-single 44e10800.pinmux: could not request pin 21 on device pinctrl-single
systemd-fsck[84]: Angstrom: clean, 50618/112672 files, 288145/449820 blocks
[ 6.389314] libphy: PHY 4a101000.mdio:01 not found
[ 6.394363] net eth0: phy 4a101000.mdio:01 not found on slave 1
 
.---O---. 
| | .-. o o 
| | |-----.-----.-----.| | .----..-----.-----.
| | | __ | ---'| '--.| .-'| | |
| | | | | |--- || --'| | | ' | | | |
'---'---'--'--'--. |-----''----''--' '-----'-'-'-'
-' |
'---'
 
The Angstrom Distribution beaglebone ttyO0
 
Angstrom v2012.12 - Kernel 3.8.13
 
beaglebone login: root
Last login: Sat Jan 1 02:57:42 UTC 2000 on ttyO0
 
root@beaglebone:~# lsb_release -a
Distributor ID: Angstrom
Description: Angstrom GNU/Linux v2012.12 (Core edition)
Release: v2012.12
Codename: Core edition

Fiz os testes com a distribuição Angstrom. Para logar, o usuário é root e não precisa de senha.

Divirta-se!

Sergio Prado

  • Celso Varella

    Também realizei o mesmo teste, só que utilizando o BusPirate e funcionou também!!!!

    http://celsovarella.blogspot.com.br/search/label/Beaglebone%20Black

    • Opa Celso! O meu BusPirate esta meio empoeirado… Preciso tirar ele da gaveta! :)

  • Jaison

    Gostaria de alterar um valor default de uma determinada I/O. Por exemplo p904 inicializa com 1, mas gostaria que ele inicializasse com 0 (já no arranque da placa antes do kernel) teria como fazer isso?

    • Olá Jailson,

      Se for antes do kernel, vai precisar alterar o U-Boot. Se for no kernel, vai precisar alterar o device tree.

      Um abraço.

      • Jaison

        Fiz o que aconselhaste no device tree overlay. Não consigo fazer com que o pwm suba com valor 500000 que é desligado. Aqui o trecho do código que fiz. Por default o campo duty vem 0 coloquei o valor 500000, mas continua subindo com o valor 0. Esse código retirei kernel source, compilo sem gerar erro algum.
        pwm_test_P8_13 {
        compatible = “pwm_test”;
        pwms = ;
        pwm-names = “PWM_P8_13”;
        pinctrl-names = “default”;
        pinctrl-0 = ;
        enabled = ;
        duty = ;
        status = “okay”;

  • Erick

    Ola amigos, gostaria de saber se é possível eu apenas pegar um cabo usb comum, corta a ponta dele e colocar conectores fêmea nos fios referente ao tx, rx e terra e conectar entre um Computador e a Beaglebone através dos pinos 1,4 e 5 do J1.

    • Olá Erick,

      Não é possível. A interface física e o protocolo utilizado são bem diferentes. Nestes conversores USB/serial temos um chip para fazer esta conversão.

      Um abraço,

  • Olá Sergio, muito legal mesmo! aqui funcionou! meu beaglebone perdeu o hot-plugging e estava sem acesso a alguns dias e essa foi a solução para voltar a conseguir utiliza-lo.

  • JOSE WALTER

    Sérgio, comprei uma Beaglebone para a utilização em projetos eletrônicos, porém não sei por onde configurar as portas I/Os, tens algum tutorial? Outra coisa, se eu instalar o Ubuntu terei como, também programar as portas I/Os, por onde eu começaria? Se tiveres algum material para disponibilizar, eu ficarei muito grato!

  • Olá Jose Walter,

    Dê uma olhada nos tutoriais da Adafruit:

    https://learn.adafruit.com/category/beaglebone

  • Fabio Augusto Barcelos Teixeir

    Caro Sergio,

    Estou trabalhando em um projeto com a BeagleBone Black e preciso utilizar a UART2 para comunicar com outra BeagleBone Black. Estou encontrando dificuldades para programar esta aplicacao, meu programa escreve, mas nao le corretamente. Por algum motivo os dados que eu tento ler sao re transmitidos.

    Voce poderia compartilhar comigo algum material que me auxiliasse? Ou ate mesmo um exemplo para comparar com meu codigo.

    Muito Grato
    Fabio Augusto Barcelos Teixeira

    • Olá Fabio!

      Será que não falta você desabilitar o echo da tty? Dá uma olhada neste link:

      http://www.lafn.org/~dave/linux/Serial-Programming-HOWTO-B.txt

      Abs!

      • Leonardo

        teria um link atualizado ?

        • Olá Leonardo,

          O comando abaixo deve funcionar (desabilitar o echo da serial). Substitua pelo arquivo da porta serial que deseja desabilitar o echo.

          # stty -echo -F

          Exemplo:

          # stty -echo -F /dev/ttyS1

          Um abraço!

Navegue
Creative Commons Este trabalho de Sergio Prado é licenciado pelo
Creative Commons BY-NC-SA 3.0.