Linux Embedded

Le blog des technologies libres et embarquées

Sigrok/Pulseview l'analyseur logique open source

Présentation

Le projet Sigrok vise à créer une suite logicielle d'analyseur de signaux open source, portable et multiplate-forme.

Ce logiciel, disponible sous GNU/Linux, Mac, Windows, FreeBSD, etc, supporte un nombre important d'appareils, allant du multimètre à l'analyseur logique, en passant par les oscilloscopes et les capteurs de températures.

Pulseview est une interface graphique de la suite logicielle, utilisant la librairie Qt.

Cet article détaille comment installer Sigrok/Pulseview sous GNU/Linux et montre un exemple d'utilisation avec la sonde USBee AX PRO, un analyseur logique 24MHz 8 canaux.

Installation de Sigrok/Pulseview

Ces étapes ont été effectuées sous Debian testing 3.14.15. Hormis peut-être l'installation de dépendances différentes, ce guide est valable pour les autres distributions GNU/Linux.

Les fichiers utiles seront installés dans /opt/sigrok. Pour commencer, créer un dossier temporaire qui accueillera les fichiers d'installation:

mkdir sigrok
cd sigrok

Librairie libsigrok

Les paquets glib-2.0 et libzip doivent obligatoirement être installés puis il y aura d'autres dépendances en fonction de la sonde utilisée. Pour la sonde USBee AX PRO ( qui utilise le firmware fx2lafw ) il faut aussi installer libusb-1.0.

Récupérer l'archive et configurer libsigrok:

wget http://sigrok.org/download/source/libsigrok/libsigrok-0.3.0.tar.gz
tar xzvf libsigrok-0.3.0.tar.gz
cd libsigrok-0.3.0/
./configure prefix=/opt/sigrok

Vérifier dans le message de sortie que la sonde sera bien installée:

 - demo............................ yes
 - fluke-dmm....................... no
 - fx2lafw......................... yes
 - gmc-mh-1x-2x.................... no
 - hameg-hmo....................... no

Lancer la compilation et l'installation:

make
sudo make install

Enfin il faut ajouter un service au démarrage pour que la sonde soit automatiquement reconnue quand on la branche:

sudo cp contrib/z60_libsigrok.rules /etc/udev/rules.d/
sudo service udev restart

Enfin, il faut renseigner la variable d'environnement PKG_CONFIG_PATH pour la suite de l'installation:

cd ..
export PKG_CONFIG_PATH=/opt/sigrok/lib/pkgconfig/

Librairies libsigrokdecode et sigrok-cli

Ces librairies nécessitent python. L'installation est similaire à libsigrok.

sudo apt-get install python3-dev
wget http://sigrok.org/download/source/libsigrokdecode/libsigrokdecode-0.3.0.tar.gz
tar xzvf libsigrokdecode-0.3.0.tar.gz
cd libsigrokdecode-0.3.0/
./configure prefix=/opt/sigrok
make
sudo make install
cd ..

wget http://sigrok.org/download/source/sigrok-cli/sigrok-cli-0.5.0.tar.gz
tar xzvf sigrok-cli-0.5.0.tar.gz
cd ../sigrok-cli-0.5.0/
./configure prefix=/opt/sigrok
make
sudo make install
cd ..

Installation de Pulseview

Installer tout d'abord les paquets suivants:

sudo apt-get install qt4-default libboost-dev libboost-thread-dev cmake

La compilation de pulseview se fait avec cmake:

wget http://sigrok.org/download/source/pulseview/pulseview-0.2.0.tar.gz
tar xzvf pulseview-0.2.0.tar.gz
cd ../pulseview-0.2.0/
cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/sigrok .
make
sudo make install
cd ..

En cas d'erreur "_POSIX_C_SOURCE redefined" il faut s'assurer que le header python est inséré avant stdio dans les fichiers sources.

Installation du firmware fx2lafw

La sonde USBee AX PRO utilise le firmware fx2lafw. Ce firmware utilise le compilateur sdcc. Il est donc nécessaire d'installer celui-ci avant d'installer le firmware lui-même.

sudo apt-get install sdcc
wget http://sigrok.org/download/source/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw-0.1.2.tar.gz
tar xf sigrok-firmware-fx2lafw-0.1.2.tar.gz
cd sigrok-firmware-fx2lafw-0.1.2
./configure prefix=/opt/sigrok
make
sudo make install
cd ..

Enfin il faut exporter deux variables d'environnement (penser à les ajouter au .bashrc si besoin):

export LD_LIBRARY_PATH=/opt/sigrok/lib/
export PATH=/opt/sigrok/bin:$PATH
pulseview

Utilisation de Pulseview

Le matériel utilisé pour cet exemple est:

  • une Raspberry Pi
  • une sonde USBee AX Pro

Le connecteur de la Raspberry Pi permet d'accéder au bus SPI 0. Pour ne pas capter que du bruit en réception j'ai relié entre elles les pins MOSI et MISO.

sig_rok_installation

Pulseview a besoin de savoir quelle sonde est utilisée. Aller dans "File > Connect to Device...", choisir le driver fx2lafw puis lancer le scan. La sonde devrait apparaître dans la liste.

sigrok_connect_to_device

Il est possible de choisir les canaux à afficher [1], le nombre d'échantillons à enregistrer [2] et la fréquence d'échantillonnage [3]. (Pensez au théorème de Shannon qui exige que la fréquence d'échantillonnage soit supérieur au double de la fréquence maximale du signal à échantillonner).

sigrok_usbee_base

Enfin, il est possible d'ajouter une fonction d'analyseur logique. Aller dans "Decoders > Add" et choisir SPI. Une nouvelle ligne SPI apparaît. Cliquer dessus pour configurer le décodeur, en choisissant les canaux à utiliser pour CLK, MOSI, MISO et CS.

sigrok_spi_options

Préparation de la Raspberry Pi

Tout d'abord il faut activer le bus SPI. Editer le fichier /etc/modprobe.d/raspi-blacklist.conf et commenter la ligne blacklist spi-bcm2708 en ajoutant un caractère "#" au début. Redémarrer ensuite la carte. Il devrait exister les entrées /dev/spidev0.0 et /dev/spidev0.1. Le premier nombre correspond au numéro du bus SPI et le second au Chip Select.

Il est alors possible d'utiliser le bus SPI avec les outils habituels, open()/close() et read()/write(). Pour faire du full duplex, il faut utiliser l'ioctl SPI_IOC_MESSAGE.

La sonde se connecte à la Raspberry Pi de la façon suivante:

D1 (marron) -> MOSI
D2 (rouge)  -> MISO
D3 (orange) -> CLK
D4 (jaune)  -> CS0

Il faut ensuite démarrer l'acquisition coté Pulseview en cliquant sur "Run" et envoyer des données sur le bus.

Aussitôt l'acquisition terminée, une barre de progression balaye les données. L'analyseur est en marche et va extraire les messages.

sigrok_spi_capture

A partir des signaux MOSI et MISO, le décodeur extrait des 0 et des 1 et les regroupe en octets. On obtient ainsi les messages envoyés et reçus.

Autre exemple, la capture d'écran ci-dessous montre une acquisition d'un message UART. En configurant le décodeur avec les bonnes options (baudrate, parité, data bits), il est capable de retrouver les caractères transmis.

sigrok_uart_capture

Conclusion

Pour les possesseurs d'appareils propriétaires dont la suite logicielle est parfois payante et où chaque décodeur logique est un plugin supplémentaire à acheter, Sigrok se présente comme une solution alternative à la fois libre et de qualité.

Cet outil facile d'utilisation et très complet par le nombre d'appareils supportés et le nombre de décodeurs logiques disponibles, séduira donc aussi bien les hobbyistes que les professionnels.

Bibliographie

http://sigrok.org/

    • le 22 janvier 2018 à 07:44

      Avec la version xubuntu 17.04, l'outil pulseview s'installe tout simplement :
      sudo apt-get install pulseview

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.