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.  ---- [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.  *Le RS-485 est trĂšs rĂ©pandu sur les automates (Own picture, Public domain, via Wikimedia Commons)*  *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 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 (Adafruit Industries, CC BY-NC-SA 2.0, via Flickr)*  *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  - [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.  - [smuview](https://sigrok.org/wiki/SmuView) est une interface pour alimentations de labo et instruments de mesure.  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  Ă 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.  ## Configuration de lâacquisition Connecter le module dâacquisition Ă lâordinateur. Ouvrir Pulseview.  Configurer le pĂ©riphĂ©rique dâacquisition en sĂ©lectionnant le firmware adaptĂ©, lâinterface puis en scannant les pĂ©riphĂ©riques disponibles.  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.  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.  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Ă© :  ## 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)  Voici ce que nous obtenons :  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.