Comment concevoir pour le test dans les systèmes embarqués

Alexsander Tamari
|  Créé: Octobre 17, 2023  |  Mise à jour: Juillet 1, 2024
test des systèmes embarqués

Que vous conceviez un PCB à haute vitesse ou un système embarqué complexe, il nécessitera un certain niveau de test. Pour les systèmes avancés à haute vitesse et RF, cela signifie généralement des simulations comparées à des mesures VNA ou oscilloscope. Pour les logiciels et firmwares embarqués, les étapes de test peuvent être assez différentes. En fait, il y a certaines choses que vous pouvez faire dans votre conception de prototype pour vous aider à accélérer le processus de test et éliminer le besoin de sonder avec un multimètre.

Dans cet article, je vais vous montrer quelques astuces simples qui peuvent rendre le test et le débogage d'un prototype beaucoup plus faciles. Cela signifie adopter une approche de conception pour le test et l'appliquer à la fois au logiciel et au matériel. Voici un indice : le meilleur chemin pour le test des systèmes embarqués implique plus que juste placer des pastilles de test ou des points de test.

Conception Pour le Test dans le Matériel Embarqué

Nous avons beaucoup de mots à la mode dans l'industrie des PCB, et “conception pour le test” est généralement regroupé dans le lot plus large de DfX. Beaucoup de concepteurs aborderont la conception pour les tests pour une carte qui exécute du code embarqué de la même manière qu'ils aborderaient les tests pour toute autre carte.

Cela signifie généralement que les concepteurs placeront beaucoup de points de test sur les signaux importants, mais peut-être pas grand-chose d'autre. Beaucoup de prototypes embarqués commenceront à ressembler à une carte de développement Arduino, où tout ce à quoi vous pouvez penser sur le processeur principal est routé vers des en-têtes de broches et des points de test.

test des systèmes embarqués
Les cartes de développement sortent toujours des en-têtes de broches sur le PCB comme pratique standard pour réaliser des connexions. Cependant, vous auriez besoin de connecter ensemble des broches vous-même pour que votre MCU puisse lire des signaux de périphériques ou de ses propres signaux.

Je n'ai rien contre les en-têtes de broches sur une carte de systèmes embarqués, ou sur toute autre carte d'ailleurs. Mais, il est difficile de surveiller chaque signal et broche tout en essayant de tester et de déboguer le logiciel ou le firmware exécuté sur la carte. Dans certains cas, vous devez réellement écrire une application juste pour tester votre application. Parfois, si vous voyez une erreur dans les fonctions de votre conception, il n'est pas toujours évident de savoir si la cause principale est dans votre code ou dans votre PCBA.

Sur le côté matériel, concentrez-vous sur l'adoption de cette approche simplifiée de la conception pour le test :

  • Tout n'a pas besoin d'un en-tête de broche. Sortez un signal vers un en-tête si vous prévoyez réellement de le connecter à quelque chose ou si vous allez réellement le mesurer.
  • Placez des connecteurs que vous pouvez réellement utiliser. De cette façon, vous pourriez vous connecter à une carte d'acquisition de données, analyseur logique, oscilloscope, etc.
  • Laissez le logiciel faire le test. N'oubliez pas que votre application embarquée peut lire des signaux de périphériques, ce qui vous permet de construire des cas de test dans votre code.
  • Vous pouvez regarder les données à l'écran, vous avez juste besoin d'une connexion à votre PC, comme via un port série, une carte d'acquisition de données, ou un logiciel propriétaire.

Certains de ces concepts ont été largement discutés par Ari Mahpour dans ses discussions sur les tests et l'intégration continue. Jetez un œil à cet article pour en savoir plus sur cette approche. Si vous souhaitez renvoyer des données vers votre ordinateur, la méthode la plus simple consiste à ajouter une interface USB-vers-série à votre prototype. Regardez ce projet de Zach Peterson et récupérez les fichiers de conception du lien.

tests des systèmes embarqués
Un port série accessible via USB est très utile pour visualiser les données de votre PCB embarqué.

Cas de test dans les logiciels embarqués

Ensuite, si vous exécutez une application embarquée sur votre système, vous pouvez inclure la gestion des erreurs ou des cas de test dans le code pour accélérer les tests. Ajouter les connexions aux interfaces avec des connecteurs, des pastilles de test et une interface série basique sont toutes des étapes importantes qui vous aident à surveiller votre carte embarquée en temps réel. L'objectif est de voir comment l'application logicielle se comporte en parallèle du matériel.

Alors, comment pouvez-vous surveiller les progrès de votre application et du matériel simultanément ? Prenez exemple sur les développeurs de logiciels : ajoutez la gestion des erreurs et des messages pour afficher le statut de chaque fonction dans votre application. Cela peut être aussi simple que d'afficher des messages indiquant si les fonctions importantes ont réussi ou échoué dans l'application. Cela prend un peu de temps supplémentaire pour écrire toutes ces vérifications d'erreurs, avoir un message à l'écran indiquant ce que votre système fait pendant l'exécution de l'application peut éliminer une tonne de débogage.

Voici un exemple qui montre comment cela serait implémenté en C/C++ en utilisant une fonction simple (appelée myFunction()) et une bibliothèque GPIO hypothétique. Supposons que vous travaillez avec une plateforme qui fournit une bibliothèque GPIO simple avec des fonctions comme gpio_init(), gpio_read(), etc. :

#include
#include   // pour std::runtime_error
// Bibliothèque GPIO hypothétique

namespace GPIO {
    void init(int pin) {
        // Initialise le pin donné en entrée
        // Cette fonction est spécifique à la plateforme
    }

    bool read(int pin) {
        // Lit la valeur du pin donné (HAUT ou BAS)
        // Renvoie vrai si HAUT, faux si BAS
        // Cette fonction est spécifique à la plateforme
        return false;  // Place holder, dépendra du matériel réel
    }
}
 

int main() {
    const int GPIO_PIN = 5;  // Numéro de pin pour la lecture GPIO (choisir selon votre configuration)
    GPIO::init(GPIO_PIN);
    double a = 10.0, b = 2.0;
 

    // Si le signal GPIO est HAUT, mettre b à zéro
    if(GPIO::read(GPIO_PIN)) {
        b = 0.0;
    }
    try {
        double result = myFunction(a, b);
        std::cout << "Résultat : " << result << std::endl;
    }
    catch(const std::exception& e) {  // Attrape les exceptions de type std::exception
        std::cerr << "Erreur : " << e.what() << std::endl;  // Affiche le message d'erreur
    }
    catch(...) {  // Gestionnaire attrape-tout pour les autres exceptions
        std::cerr << "Une erreur inconnue s'est produite !" << std::endl;
    }
    return 0;
}

 

Si votre application surveille directement les signaux, elle peut imprimer ces résultats à chaque étape de ses fonctions principales. Afficher ces résultats à l'écran avec vos signaux indicateurs clés vous dira exactement ce qui se passe au fur et à mesure que votre application progresse, et vous n'aurez pas besoin de mesurer manuellement chaque signal sur votre carte avec une unité externe. Certes, cela nécessite de router quelques traces supplémentaires vers les GPIO lors de la conception de la carte, mais vous pourriez découvrir qu'une erreur de logique apparente était en réalité juste une simple erreur de connexion dans votre PCB.

N'oubliez pas, vous pouvez toujours prendre tout autre signal qui doit aller à une sonde vers un connecteur. De cette façon, ces signaux peuvent toujours être mesurés avec un oscilloscope, ou une carte d'acquisition de données. Pendant ce temps, le port série fera beaucoup de travail pour vous aider à interagir avec la logique de votre application.

Peu importe ce que vous souhaitez concevoir, vous pouvez mettre en œuvre des pratiques de conception innovantes pour le test en utilisant l'ensemble complet des fonctionnalités de conception de PCB dans Altium Designer®. Pour mettre en œuvre la collaboration dans l'environnement interdisciplinaire d'aujourd'hui, les entreprises innovantes utilisent la plateforme Altium 365™ pour partager facilement les données de conception et lancer la fabrication des projets.

Nous n'avons effleuré que la surface de ce qui est possible avec Altium Designer sur Altium 365. Commencez votre essai gratuit d'Altium Designer + Altium 365 dès aujourd'hui.

A propos de l'auteur

A propos de l'auteur

Alexsander a rejoint Altium au poste d'ingénieur marketing technique et apporte à l’équipe de nombreuses années d'expertise en ingénierie. Sa passion pour la conception électronique, combinée à son expérience pratique des affaires, ouvre une perspective unique à l'équipe marketing d'Altium. Alexsander est diplômé de l'UCSD, une des 20 meilleures universités au monde, où il a obtenu une licence en ingénierie électrique.

Ressources associées

Documentation technique liée

Retournez à la Page d'Accueil
Thank you, you are now subscribed to updates.