URL: https://linuxfr.org/news/pulseview-et-sigrok-pour-un-analyseur-logique-libre Title: Pulseview et sigrok pour un analyseur logique libre Authors: Thecross Ysabeau đŸ§¶, ted et BenoĂźt Sibaud Date: 2022ćčŽ02月17æ—„T13:10:52+01:00 License: CC By-SA Tags: Ă©lectronique, acquisition, mesure et appimage Score: 71 sigrok est un logiciel libre qui s’interface avec du matĂ©riel de mesure pour le piloter et/ou acquĂ©rir les donnĂ©es. Pulseview est une interface graphique pour sigrok. Dans cette dĂ©pĂȘche, nous allons voir ce qu’est un bus de communication, ensuite nous verrons que les analyseurs logiques permettent de dĂ©coder les informations qui y circulent, enfin nous dĂ©crirons l’analyseur logique libre sigrok accompagnĂ© de son interface Pulseview. Un exemple simple d’utilisation est donnĂ© Ă  la fin. ![Logo de sigrok](https://sigrok.org/wimg/f/f6/Sigrok_logo.png) ---- [Site officiel](https://sigrok.org/wiki/Main_Page) [Code source](http://sigrok.org/gitweb/) [MatĂ©riel compatible](https://sigrok.org/wiki/Supported_hardware) ---- Au sein d’un Ă©quipement ou entre diffĂ©rents Ă©quipements, les composants Ă©lectroniques communiquent en utilisant des [bus de donnĂ©es](https://en.wikipedia.org/wiki/List_of_network_buses) standardisĂ©s. Par exemple : - le [CAN](https://fr.wikipedia.org/wiki/Bus_de_donn%C3%A9es_CAN), qui utilise une simple paire torsadĂ©e, est omniprĂ©sent dans l’automobile. Il permet aux calculateurs de dialoguer entre eux sur le mĂȘme bus. - le [RS-485](https://fr.wikipedia.org/wiki/EIA-485), qui utilise aussi une paire torsadĂ©e, est rĂ©pandu dans les automates. C’est un support physique du protocole [Modbus](https://fr.wikipedia.org/wiki/Modbus). - l’[I2C](https://fr.wikipedia.org/wiki/I2C) et le [SPI](https://fr.wikipedia.org/wiki/Serial_Peripheral_Interface), bien connus des utilisateurs de cartes de prototypage, sont adaptĂ©s Ă  la communication entre microcontrĂŽleurs au sein d’un mĂȘme Ă©quipement. - le [1-wire](https://fr.wikipedia.org/wiki/1-Wire) qui, comme son nom l’indique, n’utilise qu’un fil pour Ă©tablir une communication bidirectionnelle bas dĂ©bit. On le retrouve dans les chargeurs d’ordinateur portable et dans les passes Dallas. - l’Ethernet, bien connu du grand public, tend Ă  remplacer le CAN dans l’automobile et le RS-485 dans l’industrie. ![RS-485](https://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/FANUC_PLC.jpg/320px-FANUC_PLC.jpg) *Le RS-485 est trĂšs rĂ©pandu sur les automates (Own picture, Public domain, via Wikimedia Commons)* ![Amazon Echo](https://guide-images.cdn.ifixit.com/igi/aPGKZyHMX62WHQjP.medium) *Les convertisseurs analogique-numĂ©rique (en orange) et les pilotes LED (en rouge) de l’Amazon Echo se pilotent via une interface I2C (ifixit.com)* Pour analyser les paquets qui transitent sur un lien Ethernet, on peut utiliser une simple interface rĂ©seau et le logiciel libre [Wireshark](https://fr.wikipedia.org/wiki/Wireshark). Par contre, pour regarder ce qui se passe sur les autres bus citĂ©s plus haut, il faut avoir recours Ă  un analyseur logique. # Les analyseurs logiques Les bus de donnĂ©es ont au moins deux couches : - la couche **physique** qui correspond Ă  la maniĂšre dont sont transportĂ©s les bits : nombre de fils, liaison symĂ©trique/asymĂ©trique, tensions, frĂ©quence de cadencement des bits... - la couche **donnĂ©es** qui correspond Ă  la maniĂšre dont les bits reprĂ©sentent l’information transportĂ©e. L’analyseur logique a donc deux missions : - accepter de nombreux types de bus physiques pour en extraire les bits ; - retranscrire les bits en informations exploitables, c’est-Ă -dire : - interprĂ©ter les sĂ©quences de bits, - sĂ©parer l’information des Ă©ventuels en-tĂȘtes et sommes de contrĂŽle, - filtrer l’information en fonction de certains critĂšres, - indiquer les trames invalides. Les analyseurs logiques existent sous deux formes : en boitier autonome muni d’une interface utilisateur ou en boitier d’acquisition qui se connecte Ă  un ordinateur. Dans les deux cas, ils prĂ©sentent un grand nombre d’entrĂ©es reliĂ©es Ă  un circuit qui conditionne le signal et synchronise les entrĂ©es, puis ce signal passe dans un circuit d’acquisition spĂ©cialisĂ© ([souvent un FPGA](https://www.eevblog.com/forum/testgear/agilent-16900a-teardown-logic-analyzer/msg268727/#msg268727)). Dans les analyseurs logiques d’entrĂ©e de gamme, l’ensemble des Ă©tapes est rĂ©alisĂ©e par un microcontrĂŽleur cadencĂ© Ă  quelques dizaines de mĂ©gahertz (voir plus bas). Les analyseurs autonomes ont pour avantage d’ĂȘtre prĂȘts Ă  l’emploi. En contrepartie, ils sont onĂ©reux et le logiciel embarquĂ© est propriĂ©taire, ce qui signifie qu’il n’y a pas de garantie que le dĂ©codage des futurs protocoles soit supportĂ©. ![Analyseur logique autonome](https://upload.wikimedia.org/wikipedia/commons/thumb/c/ce/Tektronix_LogicAnalyzer_TLA5204.jpg/320px-Tektronix_LogicAnalyzer_TLA5204.jpg) *Analyseur logique autonome Tektronix TLA5204 (Vonvon, CC BY-SA 3.0, via Wikimedia Commons)* Les boitiers d’acquisition sont plus abordables. Ils se connectent via une interface USB ou Ethernet Ă  un PC. Ils effectuent uniquement le traitement de la couche physique, la couche de donnĂ©es Ă©tant dĂ©lĂ©guĂ©e Ă  un logiciel spĂ©cialisĂ© pour PC. ![Analyseur logique USB Digilent](https://live.staticflickr.com/65535/50067960128_575f3cbecf_n.jpg) *Analyseur Logique USB Digilent (Adafruit Industries, CC BY-NC-SA 2.0, via Flickr)* ![Openbench logic Sniffer](http://dangerousprototypes.com/docs/images/4/46/Ols-cover.jpg) *L’Openbench Logic Sniffer de Dangerous Prototypes (en rouge) est l’un des rares boitiers d’acquisition Open Hardware. Il utilise un transducteur pour conditionner le signal et un FPGA pour l’acquisition (Dangerous Prototypes, CC-BY-SA)* Quelques logiciels : - [Waveforms](https://digilent.com/reference/software/waveforms/waveforms-3/start?redirect=2) de Digilent, non libre mais qui fonctionne sous Linux, - [CANAlyzer](https://www.vector.com/int/en/products/products-a-z/software/canalyzer/) de Vector, non libre et nĂ©cessitant un boitier spĂ©cifique, pour l’analyse des rĂ©seaux CAN, - [Matlab](https://fr.mathworks.com/discovery/logic-analyzer.html) de Mathworks, non libre, possĂšde un module spĂ©cifique, - [SUMP Logic Analyzer](https://www.sump.org/projects/analyzer/client/), sous licence GNU GPL, n’est plus actif depuis 2007, - et le couple PulseView/sigrok dont nous allons (enfin) parler. # PrĂ©sentation de sigrok [sigrok](https://sigrok.org/wiki/Main_Page) est un logiciel sous licence GPL v3 capable de rĂ©cupĂ©rer et de traiter les donnĂ©es provenant d’appareils de mesure et de cartes d’acquisition. ## MatĂ©riel supportĂ© sigrok supporte actuellement [245 matĂ©riels](https://sigrok.org/wiki/Supported_hardware) diffĂ©rents, dont : - des analyseurs logiques (Hobby Components, Saleae Logic...), - des oscilloscopes (Rhode&Schwarz, Siglent, Agilent...), - des multimĂštres (Fluke, Keysight...), - des sonomĂštres, des balances... sigrok peut aussi piloter des alimentations de laboratoire. ## Architecture du logiciel Le projet sigrok est constituĂ© de plusieurs modules. Partons de la source jusqu’à l’IHM. - Linux s’interface avec le matĂ©riel d’acquisition via son firmware. Ce firmware peut ĂȘtre libre, par exemple [fx2lafw](https://sigrok.org/wiki/Fx2lafw) pour le matĂ©riel d’entrĂ©e de gamme Ă©quipĂ© d’une puce Cypress FX2. 28 firmwares sont disponibles par dĂ©faut. - [libsigrok](https://sigrok.org/wiki/Libsigrok) est la couche bas-niveau de sigrok qui s’interface avec le firmware. - [libsigrokdecode](https://sigrok.org/wiki/Libsigrokdecode) est chargĂ©, comme son nom l’indique, de l’interprĂ©tation des signaux. sigrok est capable de dĂ©coder un trĂšs grand nombre de protocoles, parmi lesquels : 1-wire, AC'97, CAN, HDMI-CEC, DALI, HDCP, I2C, I2S, JTAG, LIN, LPC, MIDI, Modbus, Morse (!), PS/2, S/PDIF, SPI, UART, USB... - L’ensemble est pilotĂ© par une interface graphique. En fonction de l’utilisation, plusieurs interfaces sont disponibles (images des contributeurs de sigrok, CC-BY-SA 3.0) : - [sigrok-cli](https://sigrok.org/wiki/Sigrok-cli) permet d’utiliser sigrok via un terminal ![sigrok-cli](https://sigrok.org/wimg/thumb/d/d0/Sigrok-cli-screenshot-1.png/800px-Sigrok-cli-screenshot-1.png) - [pulseview](https://sigrok.org/wiki/PulseView) est une interface en Qt dĂ©diĂ©e Ă  l’analyse de signaux logiques. Elle sera dĂ©taillĂ©e plus bas. ![IHM Pulseview](https://www.sigrok.org/blog/sites/default/files/20200209_class_selectors.png) - [smuview](https://sigrok.org/wiki/SmuView) est une interface pour alimentations de labo et instruments de mesure. ![smuview](https://sigrok.org/wimg/thumb/8/88/Sv_with_psu.png/800px-Sv_with_psu.png) Sous Debian, il suffit de sĂ©lectionner le paquet ```pulseview``` pour obtenir une installation complĂšte. SmuView s’installe via AppImage. # Travaux pratiques Nous allons voir comment utiliser Pulseview/sigrok Ă  travers un cas d’usage simple. Nous souhaitons piloter un appareil via le protocole Modbus RTU sur bus RS-485. Le programme de pilotage est hĂ©bergĂ© sur un Rasberry Pi possĂ©dant un HAT RS-485. Nous souhaitons voir si le programme envoie des messages correctement formatĂ©s. Note : cette procĂ©dure a Ă©tĂ© rĂ©digĂ©e quelques mois aprĂšs la rĂ©alisation de l’acquisition physique. Il pourrait y avoir des Ă©carts. ## Configuration matĂ©rielle Nous utilisons un analyseur logique [Hobby Components](https://hobbycomponents.com/testing/243-hobby-components-usb-8ch-24mhz-8-channel-logic-analyser). Il est peu coĂ»teux, n’est pas Open Hardware et ses caractĂ©ristiques techniques sont les suivantes : - 8 canaux, - Compatible avec les [niveaux logiques](https://en.wikipedia.org/wiki/LVCMOS) 3,3V et 5V, - FrĂ©quence d’acquisition maximale de 24MHz, - Interface USB2.0, - Firmware libre fx2lafw ![hobbytronics](https://www.electronest.fr/linuxfr/sigrok/hobbytronics.jpg) À l’intĂ©rieur, 4 circuits intĂ©grĂ©s : une EEPROM, un rĂ©gulateur de tension, un transducteur 74HC245 et un microcontrĂŽleur Cypress CY7C68013A. Le transducteur joue le rĂŽle de buffer : il conditionne les signaux d’entrĂ©e pour qu’ils soient « prĂ©sentĂ©s » de la meilleure maniĂšre au microcontrĂŽleur. Le microcontrĂŽleur est de type [8051](https://en.wikipedia.org/wiki/Intel_8051), est cadencĂ© Ă  24MHz et intĂšgre nativement l’interface USB. Cypress semble indiquer que son microcontrĂŽleur est adaptĂ© aux applications basse consommation nĂ©cessitant des taux de transfert Ă©levĂ©s. Parfait ! Le transducteur n’est pas capable d’acquĂ©rir des signaux RS-485; il n’est pas possible de connecter l’analyseur directement au bus. Il est donc intercalĂ© sur le port UART entre le Raspberry Pi et le HAT RS-485. ![setup](https://www.electronest.fr/linuxfr/sigrok/setup.jpg) ## Configuration de l’acquisition Connecter le module d’acquisition Ă  l’ordinateur. Ouvrir Pulseview. ![sigrok1](https://www.electronest.fr/linuxfr/sigrok/sigrok1.png) Configurer le pĂ©riphĂ©rique d’acquisition en sĂ©lectionnant le firmware adaptĂ©, l’interface puis en scannant les pĂ©riphĂ©riques disponibles. ![sigrok2](https://www.electronest.fr/linuxfr/sigrok/sigrok2.png) L’interface se met Ă  jour en affichant les entrĂ©es du module d’acquisition, le nombre d’échantillons Ă  acquĂ©rir et le taux d’échantillonnage. ![sigrok3](https://www.electronest.fr/linuxfr/sigrok/sigrok3.png) La broche TX du Raspberry Pi est reliĂ©e Ă  D1 et la broche RX Ă  D3. Le bouton *Configure Channels* permet de ne sĂ©lectionner que ces deux entrĂ©es. L’une des entrĂ©es peut ĂȘtre configurĂ©e comme « trigger », c’est-Ă -dire que l’acquisition ne se dĂ©clenche que lorsque son signal rĂ©pond Ă  une condition. ![sigrok4](https://www.electronest.fr/linuxfr/sigrok/sigrok4.png) La liaison Ă©tudiĂ©e est cadencĂ©e Ă  115 200 bits par seconde. Il faut une frĂ©quence d’acquisition au moins 2x supĂ©rieure pour capturer tous les bits. Une frĂ©quence d’acquisition de 500kHz est choisie. Il est alors possible de dĂ©clencher la capture et de lancer notre programme qui envoie la trame Modbus. Voici ce qui est capturĂ© : ![sigrok5](https://www.electronest.fr/linuxfr/sigrok/sigrok5.png) ## Exploitation des rĂ©sultats Nous avons capturĂ© les signaux Ă©lectriques du port UART. Il faut maintenant la traduire pour obtenir la couche donnĂ©es Modbus. La puissance de sigrok repose sur le grand nombre de dĂ©codeurs pris en charge. Dans le sĂ©lecteur de dĂ©codeur, nous choisissons « Modbus ». Cela ajoute une ligne en dessous des signaux acquis. Il faut aider sigrok en indiquant les caractĂ©ristiques des donnĂ©es transmises : - la broche recevant (RX) et Ă©mettant (TX) les donnĂ©es - le dĂ©bit de la liaison (115200 bits par seconde) - le codage des bits (paritĂ© paire, 1 bit d’arrĂȘt, 8 bits par donnĂ©e, affichage hexadĂ©cimal) ![sigrok6](https://www.electronest.fr/linuxfr/sigrok/sigrok6.png) Voici ce que nous obtenons : ![sigrok7](https://www.electronest.fr/linuxfr/sigrok/sigrok7.png) Les deux premiĂšres lignes du port UART ont Ă©tĂ© dĂ©codĂ©es pour afficher les donnĂ©es Modbus qu’elle contient. Quatre lignes ont Ă©tĂ© ajoutĂ©es : - *UART: RX Warnings* correspondant aux bits lus sur RX qui ne peuvent pas ĂȘtre interprĂ©tĂ©s. Ces bits parasites peuvent provenir d’un problĂšme physique dans la liaison qui gĂ©nĂšre des Ă©chos. - *UART: TX bits* est la traduction des signaux Ă©lectriques de la broche TX en bits. - *UART: TX* est la traduction des *TX bits* en hexadĂ©cimal. Le dĂ©codeur a extrait les bits de dĂ©marrage « S », de paritĂ© « P » et d’arrĂȘt « T ». - *Modbus: Client-server* est l’interprĂ©tation de *UART: TX* en commandes Modbus. À travers cette acquisition, nous pouvons conclure que le message est correctement envoyĂ© par notre Raspberry Pi, mais il semblerait y avoir un problĂšme matĂ©riel qui gĂ©nĂšre des bits parasites sur RX. Si besoin, les donnĂ©es mesurĂ©es peuvent ĂȘtre exportĂ©es en de nombreux formats rĂ©utilisables : binaire brut, hexadĂ©cimal, csv, WAV... # Conclusion L’analyse logique est un outil efficace pour tester des montages Ă©lectroniques ou faire de la rĂ©tro-ingĂ©nierie. sigrok et Pulseview sont des outils trĂšs puissants pour les bricoleurs. Ils rendent l’analyse des bus logiques accessibles Ă  tous en s’interfaçant avec un large choix de matĂ©riels de mesure. La licence libre garantit le fait que ce logiciel sera disponible sans restrictions et permet, au travers des contributions, la prise en charge de futurs protocoles.

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /