Esta pagina se ve mejor con JavaScript habilitado

Terminal UART RaspberryPi

 ·  🎃 kr0m

La RaspberryPi posee unos pines en la cara superior de la placa, algunos sirven como interfaz para comunicarse por I2C, SPI, otros como señal de reloj, otros como PWM, otros como pines de I/O de propósito general y finalmente los que nos vamos a centrar en este manual, los pines UART.

La idea es configurar el bootloader para que nos muestre el arranque del kernel por este puerto serie y en cuanto arranque el SO que Linux nos ofrezca una terminal TTY, de este modo podremos ver los mensajes de arranque de la RaspberryPi sin tener que andar cambiando el cable HDMI de nuestro monitor.

Esto puede resultar especialmente útil cuando estamos testeando kernels compilados y estamos probando funcionalidades nuevas.

Para poder hacer esto en un equipo actual tendremos que comprar un adaptador de serie a USB ya que la mayoría de equipos actuales ya no vienen con un puerto serie de fabrica, yo opté por este .


Lo primero será compilar nuestro kernel con soporte para el adaptador:

Device Drivers ---> USB support ---> USB Serial Converter support
[*] USB Generic Serial Driver
[*] USB FTDI Single Port Serial Driver

Cuando conectemos el adaptador podremos ver en los mensajes de salida del kernel(dmesg) algo parecido a esto:

Product: FT232R USB UART
Manufacturer: FTDI
FTDI USB Serial Device converter detected
Detected FT232RL
FTDI USB Serial Device converter now attached to ttyUSB0

Bueno la parte en nuestro pc ya está terminada ahora seguimos con la configuración de la RaspberryPi, lo primero será compilar el kernel con soporte para el puerto UART:

Device Drivers ---> Character devices ---> Serial drivers
[*] ARM AMBA PL011 serial port support
[*] Support for console on AMBA serial port

Una vez arrancado el kernel podremos ver que existe un dispositivo nuevo:

ls -la /dev/ttyAMA0

crw------- 1 root tty 204, 64 abr 24 19:28 /dev/ttyAMA0

Es este el dispositivo que utilizaremos para comunicarnos con nuestra RaspberryPi.

Configuramos el bootloader de la RaspberryPi para que muestre el arranque por el puerto tty y no por la salida gráfica:

vi /boot/cmdline.txt

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait

Ahora configuramos Raspbian para que nos arranque una consola de login sobre ese puerto:

vi /etc/inittab

T0:23:respawn:/sbin/agetty -L ttyAMA0 115200 vt100

Conectamos los cables del siguiente modo:

* Gris: GND
* Azul: TX(FTDI) RX(Rasp)
* Morado: RX(FTDI) TX(Rasp)

Ahora instalamos screen para poder conectar y conectamos por el puerto del FTDI:

emerge -av app-misc/screen
screen /dev/ttyUSB0 115200

El resultado será una tty de login, si reiniciamos podremos ver el arranque desde este puerto:

This is Calculon.unknown_domain (Linux armv6l 3.10.25-kr0m-nomodules+) 20:41:42  
  
Calculon login:

Bueno esto es todo, espero que hayáis aprendido algo leyendo este artículo y que lo hayáis disfrutado tanto como yo escribiéndolo ;)

Si te ha gustado el artículo puedes invitarme a un RedBull aquí