port serie

Published: 11-08-2015

Updated: 11-02-2016

By: Maxime de Roucy

tags: serial system

Sources :

J’ai récemment acheté un APU de PC Engines. Cette machine ne dispose pas de connectique pour y raccorder un écran, seulement un port « serie ».

Voici quelques notes concernant ce type de port et comment l’utiliser sous GNU/Linux.

Un UART est un appareil/device chargé de l’envoie et de la reception des bits. Ils transforment des données en parallèle sous forme « série ». Ils ne font donc transité qu’un bit à la fois (d’ou le nom « port série »). RS-232 est le standard de communication éléctrique et électronique utilisé sur les ports série. Il défini les caractéristique élétrique du signal, le voltage, les fréquence possible, le connecteur ainsi que la démonimation et la fonction de ses pin… Deux appareille muni de UART ne pourront pas forcément communiquer. Deux appareille respectant le standard RS-232 pourront communiquer, au moin au niveau 1 de la couche OSI et encore faut-il qu’il ai la même configuration (voir plus bas).

Le standard RS-232 utilise le connecteur DB-25 (connecteur de type D-sub) et utilise 22 pins mais la plupart n’ont pas d’utilité lors d’une communication normal, aussi IBM a adapté le standard pour utiliser le connecteur DE-9 (souvant appelé à tort DB-9). )). Le standard ne se limite pas à DB-25 et DB-9 il est applicable à d’autre connecteurs/cables (DE-9, RJ25, RJ45…), généralement un adaptateur suffit.

Lorsqu’on parle de « port série », il serait donc plus juste de parler de port RS-232 utilisant un connecteur DE-9 (modification d’IBM).

Dans la terminologie qu’on rencontre lorsqu’on s’intéresse au port série on trouve aussi :

Le protocole de communication décrit par le standard RS-232 n’est pas unique. La taille et la structure des paquets ainsi que la fréquence de transmission des bits peut varier d’un appareille à l’autre.

Schéma d’une frame RS-232 :

Start Data Parity Stop
1 5-9 0-1 1-2

On désigne généralement un protocole de communication RS-232 par ces quatre paramètres :

Le protocole que l’on rencontre le plus fréquemment est le « 9600 8N1 » : 9600 bps, 8 bits de donnée, pas de bit de parité, un seul bit de fin.

Il n’est pas possible de déterminer facilement le protocole utilisé par un appareil. Il est simplement conseillé de faire des essais jusqu’a ce que ça fonctionne. Des programmes existent pour tester les différents « baud rate » sachant qu’il est extraimement rare de tomber sur autre chose que du « 8N1 ».

L’APU de PC-Engines est configuré en « 115200 8N1 ».

Lorsqu’on utilise un adaptateur USB-Serie celui-ci apparait sous /dev/ttyUSB*. screen permet de s’y connecter facilement via la command screen /dev/ttyUSB0 (il utilise le protocole 9600 8N1). tmux ne permet pas cela.

Je recommande l’utilisation de picocom ou minicom qui permet de se connecter sur des interface série.

Pour mon APU j’utilise la commande :

root@laptop # picocom -b 115200 /dev/ttyUSB0

Noyau

Lors du démarrage d’une machine, si on veut que le noyau et systemd prennent en charge la console série il faut utiliser le paramètre noyau console=…. Par exemple console=ttyS0,115200n8 active la première console (0) série (S), en utilisant la configuration « 115200 8N1 ». Par défaut console=ttyS0 utilise une configuration « 9600 8N1 ».