Skyduino:~#
Articles
Corrigé, test

[Test] Open Logic Sniffer

Bonjour tout le monde !

Aujourd’hui je vous propose un test hardware (ça faisait longtemps que je n’en avais pas fait), le sujet du jour : la carte Open Logic Sniffer.

Cela fait déjà pas mal de temps que j’avais prévu de faire cet article, sans en avoir le temps malheureusement.
Pour mon projet tutoré d’IUT j’ai du ressortir ma carte OLS (Open Logic Sniffer par OLS) pour faire un peu de debug sur des signaux de servomoteurs.

Comme je devais faire une petite présentation de la carte pour l’IUT je me suis dis que, quitte à faire, je pouvais faire un vrai article dessus 🙂
C’est donc l’heure du test !

OLS, qu’est ce que c’est ?

La carte OLS est un analyseur logique, en gros c’est un oscilloscope pouvant traiter uniquement des signaux numériques.

Le but d’un analyseur logique est un peu le même qu’un oscilloscope classique :
on visualise un signal, sur lequel on peut par la suite faire diverses mesures.

Dans le cas d’un analyseur logique on travaille souvent avec plusieurs signaux simultanément, tous numériques (0 ou 1) sur lesquelles on fait pleins de chose sympa :
mesure de temps haut / temps bas, décodage de trames (série, spi, i2c, …), etc.

Pourquoi j’ai choisi OLS et pas un autre analyseur logique ?
– open source (hardware & software)
– marche super bien
– fonctionnalités / logiciel en constante évolution (opensource powaaa !)

Je vous parle pas du prix (~40€) volontairement, c’est un peu chère si on compare avec les clones chinois d’analyseurs logiques de marques « reconnues ».

Pour les curieux voici les pages officiels de Dangerous prototype (le groupe derrière le hardware de la carte) et Gadget Factory (le groupe derrière le protocole et logiciel original).
http://gadgetfactory.net/logicsniffer/
http://dangerousprototypes.com/docs/Open_Bench_Logic_Sniffer

La carte :

Comme je le précisais en introduction la carte OLS est conçue par Dangerous Prototype (c’est ce même groupe qui fabrique la carte Bus Pirate).
La carte (et plus généralement toutes les cartes de Dangerous Prototype) est sous licence libre mixée avec du Creative Common.
Tout les schémas, routage, firmware, etc sont disponibles sur le wiki de Dangerous Prototype si vous voulez faire votre propre carte OLS (voir le lien du wiki dans l’introduction).

En somme c’est un outil pour bricoleurs, fait par des bricoleurs et ça c’est bien !

Note: ça peut choquer certains mais bon, la carte est vendue nue, sans boîtier ou autre, même les câbles sont vendus séparément.
C’est une philosophie, à vous de voir si vous voulez les câbles tout fait ou si vous voulez faire vos propres câble.
Pour le boîtier il n’y en pas du tout, si vous en voulez absolument un soyez créatif et fabriquez en un vous même 😉

Le cœur de la carte OLS est un FPGA de la série Spartan du fabricant Xilinx, pour faire simple un fpga permet d’émuler n’importe quel réseau de circuit logique.
C’est ce circuit qui « contient » l’électronique de contrôle de la carte, la mémoire RAM pour stocker les échantillons de mesure et tout ce qui fait que la carte OLS fonctionne.

Côté précision / mesure la carte OLS est capable de faire :
– 24K échantillons, à une fréquence max de 200MHz,
– gestion de « triggers » = déclencheurs hardware simple (front montant / descendant) ou complexe (suite de triggers simple) sur 4 niveaux,
– compresser la mémoire en temps réel pour stocker plus d’échantillons (mode RLE = Run Length Encoding),
– faire des acquisitions avec un signal d’horloge externe (c’est tiptop pour toujours rester synchronisé avec un bus comportant une ligne d’horloge).

Note: Le choix du fpga n’as pas été fait au hasard, c’est un XC3S250E qui est (si j’ai bien tout compris) supporté par la version gratuite de Xilinx ISE (le logiciel de conception software pour fpga Xilinx).
Ainsi même le code du fpga peut être compilé à la main chez soi sans avoir besoin de licence hors de prix.
(c’est utile uniquement pour les personnes voulant bidouiller au plus profond de la carte bien sûr)

La carte OLS ce n’est pas seulement un fpga (encore heureux sinon on serait un peu embêter) c’est aussi un connecteur pour câbler les signaux d’entrées.
Au total il y a 16 voies (entrantes uniquement) supportant des niveaux logiques de 3v3 ou 5v sans différence (en fait il y a un buffer pour réduire les signaux 5v en signaux 3v3).
Pas de génération de signaux possible malheureusement … peut être dans une prochaine révision du hardware ?

Remarque: il est possible d’avoir 16 voies supplémentaires en 3v3 uniquement mais j’en reparlerai plus tard 😉

Le connecteur est au standard 2.54mm, vous pouvez donc enficher la carte OLS sur une breadboard si vous le voulez, ou utiliser des câbles F/M ou F/F classique sans problème.

Concernant la partie communication avec le PC tout est fait via un PIC18F et un port mini usb, les membres du groupe Dangerous Prototype adorent les microcontrôleurs PIC.
Vous ne trouverez pas une seule de leurs cartes sans un PIC à l’intérieur 🙂

Le PIC18F émule un port série usb, pas de drivers spéciaux à avoir donc, tout se fait avec les drivers HID de base.

Il y aussi deux leds et deux boutons bien pratiques pour savoir ce qui se passe.
– La led ACT permet d’avoir une idée de ce qui se passe sur la liaison USB, personnellement j’utilise cette led pour savoir quand la capture d’un signal se termine.
– La led PWR indique que la carte est sous tension, vous connaissez le dicton « It work better if you plug it in ».
– Le bouton RESET permet comme son nom l’indique de redémarrer la carte.
Si vous avez des signaux tous à 0 (ou à 1) ou un bug du port série n’hésitez pas à appuyer sur ce bouton … « dans le doute, reboot » 😉
– Le bouton UPDATE sert à mettre à jour la ROM du fpga, normalement vous n’aurez jamais besoin d’utiliser ce bouton …

Le port d’extension, c’est un des trucs les plus sympa de cette carte en terme de bidouillage.
Dangerous Prototype a conçu il y déjà pas mal de temps une carte nommé « Papilio », une sorte de carte suivant la philosophie « arduino » sur base de fpga.
Cette carte n’a pas des shields comme sur les cartes arduino classique, mais des « Wings », en gros des cartes d’extension avec un connecteur standardisé.

Et bien sur la carte OLS il y a un port pour une carte « Wing », ce qui permet d’accéder à 16 voies supplémentaires.
MAIS, ces voies ne sont pas tolérantes à autre chose que des niveaux logiques 3v3 !
C’est pourquoi vous trouverez chez les revendeurs de Dangerous Prototype une carte Wing « Buffer » permettant d’avoir des entrées tolérantes à des niveaux logiques 5v.

Pour être franc ces 16 voies supplémentaires ne sont utiles que dans des cas extrêmes, avec les 16 voies de bases c’est déjà largement suffisant.
Par contre il existe des Wing sympa pour faire des choses un peu plus « classe », mais bon je suis pas sûr que transformer sa carte OLS en borne d’arcade soit vraiment utile …

Concernant la ROM du fpga, il y a un connecteurs SPI pour la reprogrammer avec une carte Bus Pirate (ou autre).
Je vous l’ai déjà dit dans l’introduction cette carte est « pour des bricoleurs, par des bricoleurs » et par définition un bricoleur ça bricole. Souvent un peu trop même.
Donc si vous bricker la ROM du fpga en voulant porter le code de pacman sur votre carte OLS (pourquoi pas ?), avec une sonde SPI vous pouvez tous remettre en état de marche sans problème.

De même si vous bricker le firmware / booloader du PIC18F, ou que vous voulez le mettre à jour sans passer par le bootloader pas de problème il y a un port ISCP pour cela.
Sortez juste un programmateur de PIC et c’est tout bon !

En bonus il y a aussi un port série TTL pour ceux qui voudraient bricoler 😉

Un autre truc sympa mais difficile à maîtriser au début c’est les triggers.
C’est pourquoi les deux leds ci dessus permettent de savoir ce qui ce passe en temps réel.
– Si la led ARM est allumée c’est que la carte est armée, prête à commencer la capture dés que le « trigger » programmé sera déclenché.
– Si la led TRIG est allumée c’est que la carte est en train de faire (ou a terminé) l’acquisition du signal.

Je reparlerai un peu plus tard des trigger, mais si vous n’arrivez pas à les paramétrer, la première chose à faire est de regarder comment se comporte ces deux leds 😉

Le logiciel :

Le logiciel qui va avec la carte OLS porte le même nom, Open Logic Sniffer, what else ?
Au moins vous ne pouvez pas vous tromper 😉

Il existe deux logiciels pour la carte OLS :
– le client officiel, SUMP (du même nom que le protocole qu’il utilise) : http://www.sump.org/projects/analyzer/client/
– le client alternatif de lxtreme : http://www.lxtreme.nl/ols/

Le premier est bien, mais un peu trop simple, en réalité on ne peut pas faire grand chose avec (et le gui n’est pas super joli).
Le second est le plus sympa (c’est celui que j’utilise), c’est aussi celui recommandé par Dangerous Prototype.
Il est bien plus poussé que l’original, plus design (et oui, c’est un bonus non négligeable) et surtout beaucoup plus fonctionnel.

Bon je doit l’avouer, ma première capture d’écran n’est pas super entraînante, c’est gris, c’est moche … bref.
Voici donc un exemple un peu plus parlant de ce que peut faire le logiciel OLS 😉

En bas se trouve ma carte arduino UNO simulant un signal PWM de contrôle pour servomoteurs et en haut ma carte OLS avec son lot de câbles.

C’est tout de suite plus agréable à regarder !
On peut d’ores et déjà voir les grandes parties de l’interface du logiciel.

– A droite la partie mesure, informations sur la capture, etc.

– Au milieu le (ou les) signaux capturés par la carte OLS, dont un un peu particulier: le signal « scope ».
Le signal « scope » est une interprétation sous forme de courbe de la valeur binaire formée par les huit signaux numériques au dessus.

A noter que l’on peut ajouter des curseurs sur les signaux pour faire des mesures très précises.
Les curseurs ont une fonctionnalité permettant de les « coller » sur un front, c’est super pratique quand on veut mesurer la durée d’une impulsion.
De même on peut avoir un aperçu instantané de la période d’un signal en passant sa souris par dessus (voir la capture d’écran).

– A gauche se trouve l’étiquette de chaque signaux avec un alias (qui peut être modifié à souhait via un click droit), une couleur et le numéro de broche / port associé.

Autre fonctionnalité toute récente mais bien pratique : la possibilité de « désactiver » un signal.
Avant pour avoir des signaux constamment à « 0 » (= lignes non utilisés) il fallait physiquement câbler les broches en question à GND, maintenant un simple click droit suffit !
Cela évite d’avoir des parasites sur les lignes non utilisées comme on peut le voir sur ma capture d’écran.

Qui dit capture dit paramètres, on ne peut pas y échapper !

Avec la carte OLS ça reste assez simple :
– un mode de fonctionnent : interne ou externe
– un mode de synchronisation : interne ou externe (front montant ou front descendant)
– une fréquence d’échantillonnage (pour le mode avec synchronisation interne)
– un mode de capture : 8, 16, 24 ou 32 bits = entrées
– une taille d’enregistrement pour les échantillons (j’utilise toujours le mode auto personnellement)

En bonus vous pouvez choisir :
– de faire une capture de test
– d’activer le filtre anti-bruit
– d’activer la compression en temps réel des échantillons

Note: quand on active le mode RLE (= Run Length Encoding) on peut capturer beaucoup plus de données, en fait on ne stock pas les niveaux logiques à un moment t mais la durée entre chaque transition ce qui permet un gain notable dans la durée finale des captures.
Par contre il faut faire très attention, si les signaux ne changent que très rarement d’états il y a de forte chance que la capture ne se termine jamais !
C’est une erreur de débutant, un signal quasi plat, le mode RLE et au final une capture qui ne finit jamais …

J’en ai déjà un peu parlé, une des grandes force de OLS c’est les triggers.

Quand on fait une capture avec OLS celle ci ne dure que quelques secondes, voire millisecondes, contrairement à un oscilloscope qui affiche le signal en temps réel.

S’il fallait transmettre les changements d’états des signaux en temps réel cela serait impossible, c’est pourquoi la carte OLS dispose d’une RAM interne (24Ko) dans laquelle elle stock temporairement les échantillons.
Le logiciel OLS récupère par la suite via le port série ces échantillons et les affichent.

Problème : Comment capturer un signal (ou plusieurs) au bon moment ?
Imaginons que j’ai un signal qui reste à « 1 » constamment puis passe à « 0 » avant de changer arbitrairement d’états.
Si je veux capturer ce signal il suffit de placer un trigger sur la broche du signal en question (ligne « mask ») pour le niveau cible adéquat (« 0 » dans mon exemple, ligne « value »).
Si besoin il est aussi possible de définir un ratio pré / post trigger pour capturer des données plutôt avant ou après le trigger et même d’ajouter un délai après l’exécution du trigger (en nombres de cycles d’horloge, de 0 à 65535).

Il est aussi possible de faire des triggers « complexe » qui peuvent allez jusqu’à une succession de 4 trigger simples, voire même de faire des triggers sur des données sérielles (et non parallèles).

Comme tout bon logiciel de capture on peut enregistrer et ouvrir des sauvegardes sans avoir besoin de la carte OLS.
L’exemple ci dessus est par exemple une trame Blyss que j’avais capturé il y a déjà plusieurs mois pour un projet.

Autre fonctionnalité bien pratique de OLS : les mesures.
En plus des curseurs OLS fournit tout un tas de mesures diverses et variées :
– période,
– fréquence,
– temps absolu,
– rapport temps haut / temps bas,
– et plein d’autre choses.

Avoir des mesures de temps c’est pratique, mais pouvoir faire des analyses de signaux c’est encore plus pratique !
No problème OLS a tout ce qui faut 😉

La liste des analyseurs disponible peut sembler unn avec un an peu légère en comparaisoalyseur logique « Pro », c’est vrai, mais elle ne fait que s’étoffer de version en version.

Voici un exemple d’analyse UART que j’ai réalisé avec un dongle FTDI (j’étais en manque d’idées donc voici un jolie « Hello World »).
Bien sûr on peut exporter le résultat de l’analyse sous format texte.

Ps: parfois l’analyse plante méchamment, il faut être réaliste tout n’est pas parfait.

Une fois l’analyse terminée les résultats du décodage sont affichés en annotations par dessus le signal d’origine.
Les annotations ont souvent tendance à ne pas se caler pile-poil aux bons endroits, mais ça dépend du type d’analyse effectué.

Remarque :
Je n’ai pas parlé d’une fonctionnalité très avancée du logiciel OLS : la capture de signaux à distance.
Le logiciel OLS supporte les captures en local (via le port série) ou en réseau, je n’ai jamais essayé donc je ne sais absolument pas si cela fonctionne …

Conclusion :

Si vous cherchez un analyseur logique simple, pas trop cher et puissant la carte OLS est juste géniale.
Après si on me laissait le choix entre un clone d’analyseur saleae et une carte OLS le choix serait difficile.
– Si c’est le nombre de voies qui compte la carte OLS est toute désigné.
– Si c’est le logiciel et plus précisément la puissance d’analyse qui compte c’est plus compliqué.
Il y a aussi la question du budget, mais soutenir un projet open source ça n’a pas de prix 🙂

Publicités

Discussion

3 réflexions sur “[Test] Open Logic Sniffer

  1. Merci beaucoup pour ce test ! Pour ma part j’utilise le Logic16, pas open-hardware mais qui fournit une profondeur de capture presque illimitee (enfin limitee par la memoire du PC)

    Publié par Christophe | 2 décembre 2012, 18 h 58 min
  2. Les Kévin vont être content, moi aussi je suis content!!! Merci à toi…

    Publié par open source defender | 9 mars 2017, 23 h 09 min

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.