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.
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.
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).
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.
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.
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.
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.
Pour la version 0.4.0 de sigrok voilà ce qu'il change:
Pour libsigrok:
installer les paquets "libzip-dev libglibmm-2.4-dev doxygen" en plus (nécessaire pour bindings c++, donc pulseview)
l'url pour la version 0.4.0: http://sigrok.org/download/source/libsigrok/libsigrok-0.4.0.tar.gz
./configure --prefix=/opt/sigrok --enable-cxx
(vérifier bindings c++ ok)
Pour libsigrokdecode l'url:
http://sigrok.org/download/source/libsigrokdecode/libsigrokdecode-0.4.0…
Pour sigrok-cli l'url:
http://sigrok.org/download/source/sigrok-cli/sigrok-cli-0.6.0.tar.gz
Pour pulseview:
Version 0.3.0 dispo sur http://sigrok.org/download/source/pulseview/pulseview-0.3.0.tar.gz
J'ai dû installer libboost-test-dev libboost-filesystem-dev pour que la compilation passe