Maison Problème commun Plusieurs routines et techniques pratiques de développement intégré

Plusieurs routines et techniques pratiques de développement intégré

Jul 31, 2023 pm 03:04 PM
嵌入式 嵌入式开发

Il existe de nombreuses techniques pour développer des systèmes embarqués de haute fiabilité, depuis des cycles de développement bien réglementés jusqu'à une exécution stricte et des vérifications du système.

Je vous présente 7 conseils faciles à utiliser et pouvant être utilisés pendant longtemps. Ils sont très utiles pour garantir un fonctionnement plus fiable du système et détecter les comportements anormaux
Astuce 1. - Utilisez une ROM Value Filled connue
Les développeurs de logiciels ont tendance à être un groupe très optimiste et veulent simplement que leur code s'exécute fidèlement pendant longtemps et c'est tout. Il semble assez rare qu'un microcontrôleur sorte de l'espace applicatif et s'exécute dans un espace de code involontaire. Cependant, le risque que cela se produise n'est pas moins probable qu'un débordement de tampon ou qu'un mauvais pointeur perd sa référence. Cela arrive ! Le comportement du système après cela ne sera pas défini, car l'espace mémoire est entièrement 0xFF par défaut, ou parce que la zone mémoire n'est généralement pas écrite, la valeur qu'elle contient ne peut être connue que de Dieu.
Cependant, il existe des techniques d'éditeur de liens ou d'IDE assez complètes qui peuvent être utilisées pour aider à identifier de tels événements et à récupérer le système. L'astuce consiste à utiliser la commande FILL pour remplir la ROM inutilisée avec un modèle de bits connu. Pour remplir la mémoire inutilisée, il existe de nombreuses combinaisons possibles, mais si vous souhaitez construire un système plus fiable, le choix le plus évident consiste à placer des gestionnaires de pannes ISR à ces emplacements. Si quelque chose ne va pas dans le système et que le processeur commence à exécuter du code en dehors de l'espace programme, l'ISR est déclenché et offre la possibilité de stocker le processeur, le registre et l'état du système avant de décider d'une action corrective.
Astuce 2 – Vérifiez le CRC de votre application
Un grand avantage pour les ingénieurs embarqués est que notre IDE et notre chaîne d'outils peuvent générer automatiquement la somme de contrôle du programme ou de l'espace mémoire des applications (Somme de contrôle ) pour vérifier si l'application est intacte sur la base de cette somme de contrôle. Il est intéressant de noter que dans bon nombre de ces cas, la somme de contrôle n'est utilisée que lors du chargement du code du programme sur l'appareil.
Cependant, si le CRC ou la somme de contrôle est conservé en mémoire, il est extrêmement important de vérifier que l'application est toujours intacte au démarrage (ou même périodiquement pour les systèmes qui fonctionnent depuis longtemps) pour garantir qu'aucun imprévu ne se produise. chemin.
De nos jours, la probabilité qu'une application programmée change est très faible, mais compte tenu des milliards de microcontrôleurs expédiés chaque année et de l'environnement de travail potentiellement difficile, le risque de crash de l'application n'est pas nul. Plus probablement, une faille dans le système pourrait provoquer une écriture flash ou un effacement flash sur un secteur, compromettant ainsi l'intégrité de l'application.
Astuce 3 – Effectuez une vérification de la RAM au démarrage
Afin de construire un système plus fiable et plus solide, il est important de s'assurer que le matériel du système fonctionne correctement . Après tout, le matériel peut tomber en panne. (Heureusement, le logiciel n'échoue jamais, il fait simplement ce que le code lui dit de faire, que ce soit bien ou mal). Vérifier qu'il n'y a aucun problème interne ou externe à la RAM au démarrage est un bon moyen de garantir que le matériel fonctionne comme prévu.
Il existe de nombreuses façons différentes d'effectuer une vérification de la RAM, mais une méthode courante consiste à écrire sur un modèle connu, puis à attendre un court laps de temps avant de le relire. Le résultat devrait être que ce qui est lu est ce qui est écrit. La vérité est que dans la plupart des cas, la vérification de la RAM réussit, ce que nous souhaitons. Cependant, il existe une très faible possibilité que la vérification échoue, ce qui constitue une excellente opportunité pour le système de signaler un problème matériel.
Astuce 4 - Utilisez un Stack Monitor
Pour de nombreux développeurs embarqués, la pile semble être une force plutôt mystérieuse. Lorsque des choses étranges ont commencé à se produire, les ingénieurs ont finalement été perplexes et ont commencé à penser qu'il se passait peut-être quelque chose dans la pile. Le résultat est un ajustement aveugle de la taille et de la position de la pile, etc. Mais l’erreur est souvent indépendante de la pile, mais comment peut-on en être si sûr ? Après tout, combien d’ingénieurs ont réellement effectué une analyse de la taille de la pile dans le pire des cas ?
La taille de la pile est allouée statiquement au moment de la compilation, mais la pile est utilisée de manière dynamique. Au fur et à mesure de l'exécution du code, les variables, les adresses de retour et d'autres informations nécessaires à l'application sont stockées en permanence sur la pile. Ce mécanisme entraîne une croissance continue de la pile dans la mémoire allouée. Cependant, cette croissance dépasse parfois la limite de capacité déterminée au moment de la compilation, ce qui entraîne une corruption des données dans les zones mémoire adjacentes.
Une façon d'être absolument sûr que votre pile fonctionne correctement est d'implémenter un moniteur de pile dans le cadre du code « santé » de votre système (combien d'ingénieurs feraient cela ?). Le moniteur de pile crée une zone tampon entre la pile et l'"autre" zone mémoire, remplie de modèles de bits connus. Le moniteur surveille ensuite en permanence le modèle pour déceler tout changement. Si cette configuration binaire change, cela signifie que la pile est devenue trop grande et est sur le point de pousser le système dans un enfer sombre ! À ce stade, le moniteur peut enregistrer l'apparition d'événements, l'état du système et toute autre donnée utile pour une utilisation ultérieure dans le diagnostic des problèmes.
Un moniteur de pile est disponible dans la plupart des systèmes d'exploitation en temps réel (RTOS) ou des systèmes à microcontrôleur qui implémentent une unité de protection de mémoire (MPU). Ce qui est effrayant, c'est que ces fonctionnalités sont désactivées par défaut ou sont souvent désactivées intentionnellement par les développeurs. Une recherche rapide sur le Web montre que de nombreuses personnes recommandent de désactiver le moniteur de pile dans le système d'exploitation en temps réel pour économiser 56 octets d'espace flash.Attendez, cela n'en vaut pas la peine !
Astuce 5 – Utiliser un MPU
Dans le passé, il était difficile de trouver une unité de protection de la mémoire (MPU) dans un microcontrôleur petit et bon marché, mais cette situation a commencé à changer. Les microcontrôleurs du haut de gamme au bas de gamme disposent désormais de MPU, et ces MPU offrent aux développeurs de logiciels embarqués la possibilité d'améliorer considérablement la robustesse de leur micrologiciel.
Les MPU ont été progressivement couplés au système d'exploitation pour créer des espaces mémoire où le traitement est séparé ou où les tâches peuvent exécuter leur code sans craindre d'être piétinées. Si quelque chose se produit, le traitement incontrôlé sera annulé et d'autres mesures de protection seront mises en œuvre. Gardez un œil sur les microcontrôleurs dotés de ce composant et si c'est le cas, profitez de cette fonctionnalité.
Astuce 6 - Créez un système de surveillance puissant
L'une des implémentations de surveillance les plus populaires que vous trouverez souvent Oui, où le chien de garde est activé (ce qui est un bon début ), mais aussi où le chien de garde peut être effacé avec une minuterie périodique ; l'activation de la minuterie est complètement indépendante de tout ce qui se produit dans le programme.
Le but de l'utilisation du chien de garde est de garantir que si une erreur se produit, le chien de garde ne sera pas effacé, c'est-à-dire que lorsque le travail est suspendu, le système sera obligé d'effectuer une réinitialisation matérielle (réinitialisation matérielle) afin pour récupérer. L'utilisation d'une minuterie indépendante de l'activité du système permet au chien de garde de rester effacé même en cas de panne du système.
Les développeurs embarqués doivent examiner et concevoir soigneusement la manière dont les tâches d'application sont intégrées dans le système de surveillance. Par exemple, une technique pourrait permettre à chaque tâche exécutée pendant une certaine période d’indiquer qu’elle a réussi sa tâche. Dans ce cas, le chien de garde n'est pas effacé et est forcé de se réinitialiser. Il existe également des techniques plus avancées, telles que l'utilisation d'un processeur de surveillance externe, qui peut être utilisé pour surveiller les performances du processeur principal et vice versa.
Pour un système fiable, il est important d'établir un système de surveillance puissant. Parce qu'il existe trop de technologies, il est difficile de les couvrir entièrement dans ces paragraphes, mais je publierai des articles sur ce sujet à l'avenir.
Astuce 7 - Évitez les allocations de mémoire volatiles
Les ingénieurs qui ne sont pas habitués à travailler dans un environnement aux ressources limitées peuvent être tentés d'exploiter les fonctionnalités de leur langage de programmation , un langage qui leur permet d'utiliser l'allocation de mémoire volatile. Après tout, il s’agit d’une technique souvent utilisée dans les systèmes de calcul, où la mémoire n’est allouée que lorsque cela est nécessaire. Par exemple, lors du développement en C, les ingénieurs peuvent avoir tendance à utiliser malloc pour allouer de l'espace sur le tas. Une opération sera effectuée, et une fois terminée, free pourra être utilisé pour restituer la mémoire allouée afin que le tas puisse être utilisé.
Dans un système aux ressources limitées, cela pourrait être un désastre ! L'un des problèmes liés à l'utilisation de l'allocation de mémoire volatile est que des erreurs ou des techniques inappropriées peuvent entraîner des fuites de mémoire ou une fragmentation de la mémoire. Si ces problèmes surviennent, la plupart des systèmes embarqués ne disposent pas des ressources ou des connaissances nécessaires pour surveiller le tas ou le gérer correctement. Et lorsqu’ils le font, que se passe-t-il si une application fait une demande d’espace, mais que l’espace demandé n’est pas disponible ?
Les problèmes causés par l'utilisation de l'allocation de mémoire volatile sont très compliqués, et on peut dire que c'est un cauchemar de gérer correctement ces problèmes ! Une alternative consiste simplement à allouer de la mémoire directement de manière statique. Par exemple, au lieu de demander un tampon mémoire de cette taille via malloc, créez simplement un tampon dans votre programme d'une longueur de 256 octets.Cette mémoire allouée est conservée tout au long de la durée de vie de l'application sans se soucier des problèmes de tas ou de fragmentation de la mémoire.
Conclusion

Ce ne sont là que quelques façons dont les développeurs peuvent commencer à créer des systèmes embarqués plus fiables. Il existe de nombreuses autres techniques, telles que l'utilisation de bonnes normes de codage, la détection des retournements de bits, la vérification des limites des tableaux et des pointeurs et l'utilisation d'assertions. Toutes ces technologies sont le secret qui permet aux concepteurs de développer des systèmes embarqués plus fiables

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Lequel a les meilleures perspectives, Java ou embarqué ? Lequel a les meilleures perspectives, Java ou embarqué ? Oct 24, 2023 am 09:32 AM

Java et les systèmes embarqués sont tous deux des domaines techniques très importants dans le domaine informatique, et ils ont chacun des scénarios d'application et des perspectives de développement différents. Ci-dessous, j'analyserai les perspectives de Java et des systèmes embarqués sous l'angle du marché du travail, du développement technologique, des besoins de l'industrie et des tendances de développement.

Utiliser C++ pour réaliser la fonction de contrôle à distance du système embarqué Utiliser C++ pour réaliser la fonction de contrôle à distance du système embarqué Aug 25, 2023 pm 05:24 PM

Utiliser C++ pour réaliser la fonction de contrôle à distance des systèmes embarqués Avec le développement rapide de l'Internet des objets, les systèmes embarqués deviennent un élément indispensable de notre vie quotidienne. Pour les développeurs de systèmes embarqués, la manière de mettre en œuvre les fonctions de contrôle à distance est une question importante. Grâce au langage de programmation C++, nous pouvons facilement implémenter la fonction de contrôle à distance du système embarqué. Cet article explique comment utiliser C++ pour écrire du code permettant d'implémenter cette fonction, ainsi que des exemples de code. Tout d’abord, nous devons préparer du matériel. En tant que système embarqué,

SPARKLE lance la carte graphique intégrée Intel Arc, offrant une assistance jusqu'à 5 ans SPARKLE lance la carte graphique intégrée Intel Arc, offrant une assistance jusqu'à 5 ans Apr 22, 2024 am 11:52 AM

Selon les informations de ce site Web du 22 avril, SPARKLE Technology a annoncé le lancement de cartes graphiques embarquées Intel Arc, y compris les versions PCIe des versions A310E, A380E et MXM des cartes graphiques A350E et A370E, avec un engagement de support technique jusqu'à 5 ans. . Carte graphique SPARKLE Intel ArcA380E IA30GC-TN4E Cette carte graphique a un TBP (note sur ce site : TotalBoardPower) de 75 W. Elle adopte une conception à double emplacement et un seul ventilateur, 6 Go de mémoire vidéo GDDR6, fournit 1 interface HDMI et 3 interfaces DisplayPort et dispose. Services d'assistance de 5 ans. SPARKLE Intel Ruixuan ArcA380E carte graphique mi-hauteur IA30GBL-TN4E cette carte graphique mi-hauteur T

Le premier design ultra-fin de 28 cm de Chai Mi ! Lancement de la série SpaceMaster Master de robots de balayage et de nettoyage intégrés Le premier design ultra-fin de 28 cm de Chai Mi ! Lancement de la série SpaceMaster Master de robots de balayage et de nettoyage intégrés Oct 21, 2023 pm 05:17 PM

Grâce aux innovations technologiques en matière d'intelligence et de performances de nettoyage des balayeuses, les robots de balayage et de nettoyage intégrés sont devenus de plus en plus un nouveau standard clé en matière d'appareils de décoration d'intérieur au niveau mondial ces dernières années, et leur tendance à être chargés à l'avant et intégrés dans la décoration d'intérieur est devenue de plus en plus fréquente. évident. Afin de promouvoir le progrès de l'industrie et d'aider les consommateurs à résoudre les principaux problèmes tels que l'encastrement et les rénovations d'eau et d'électricité, Zhumi Technology, en tant que marque leader mondiale d'appareils de nettoyage intelligents, a récemment apporté une nouvelle façon de résoudre les problèmes et a lancé de manière innovante un nouveau produit d'une hauteur de seulement 28 cm. Robot intégré de balayage et de nettoyage intégré à la station de base ultra-mince - série Space Master Master (ci-après dénommée "Zhunmi Space Master Master Series"). Ce produit combine cinq avantages techniques pionniers majeurs de Chumi. des concepts de conception embarqués de pointe pour atteindre une position de leader dans le monde. La mise à niveau et le saut de l'industrie aideront davantage de familles à réaliser leur rêve.

Limites du langage Go : ne convient pas au développement embarqué Limites du langage Go : ne convient pas au développement embarqué Apr 08, 2024 pm 01:24 PM

Le langage Go n'est pas adapté au développement embarqué pour les raisons suivantes : Consommation élevée de mémoire : le garbage collector de Go nécessite de la mémoire supplémentaire et n'est pas adapté aux appareils embarqués avec une mémoire limitée. Mauvaises performances en temps réel : le garbage collector et le modèle de concurrence peuvent introduire des retards inacceptables et ne conviennent pas aux systèmes embarqués sensibles au facteur temps. Grande taille de code : Go génère des binaires plus volumineux que d'autres langages tels que C ou C++, ce qui le rend irréalisable pour les appareils contraints.

Arduino répond à l'impact de la fin du support du système embarqué Mbed : une alternative a été trouvée et la première version bêta sortira avant la fin de l'année Arduino répond à l'impact de la fin du support du système embarqué Mbed : une alternative a été trouvée et la première version bêta sortira avant la fin de l'année Jul 26, 2024 am 11:32 AM

Selon les informations de ce site Web du 26 juillet, Arm a publié une annonce le 9 juillet annonçant qu'elle mettrait fin au support du système d'exploitation embarqué open source MbedOS en juillet 2026 et qu'elle ne continuerait plus à le maintenir à ce moment-là. Le site Web Mbed sera archivé et ne sera plus disponible. Créez des projets via des outils en ligne. Cette nouvelle a suscité de nombreuses discussions au sein de la communauté des développeurs embarqués et a affecté les projets soutenus par Arm tels que micro:bit, Arduino et Raspberry Pi. La société Arduino a publié un article de blog le 24 juillet, déclarant qu'elle avait commencé à chercher des solutions alternatives il y a quelques années, elle a donc rejoint le projet Zephyr en 2023 et est devenue membre Silver du projet, et a trouvé une bonne alternative dans ZephyrOS. Ardu

Aetina lance la carte graphique embarquée Arc A380E : mono-slot, conception mi-hauteur, consommation électrique de 50 W Aetina lance la carte graphique embarquée Arc A380E : mono-slot, conception mi-hauteur, consommation électrique de 50 W Apr 26, 2024 am 08:04 AM

Selon les informations de ce site du 25 avril, Aetina, un fabricant d'équipements AIoT, a lancé aujourd'hui la carte graphique embarquée Intel ArcA380E avec une conception à emplacement unique et mi-hauteur, modèle IA380E-QUFL, et offre une garantie à long terme de cinq ans. engagement d’approvisionnement en produits. Cette carte graphique utilise le cœur Intel ArcA380E, avec 8 cœurs Xe et 128 cœurs Intel XMX, avec une fréquence de base de 2 000 MHz et une fréquence d'accélération de 2 250 MHz. Elle dispose d'une puissance de calcul de 4,096 TFLOPS et prend en charge le traçage de rayons matériel. Mémoire vidéo de 6 Go GDDR6 et convient aux applications de pointe en matière d'informatique visuelle et de raisonnement par intelligence artificielle. Cette carte graphique adopte une conception à emplacement unique mi-hauteur, ne consomme que 50 W et peut être alimentée directement à partir de l'emplacement PCIe sans alimentation externe.

Aller aux applications embarquées Aller aux applications embarquées Apr 08, 2024 pm 02:42 PM

Applications embarquées dans Go Le langage Go convient au développement d'applications embarquées, qui s'exécutent généralement sur des appareils contraints. Pour commencer, vous devez installer la chaîne d'outils Go et le compilateur TinyGo. La structure du code de l'application Go intégrée comprend main.go (point d'entrée), board.go (code de la carte matérielle) et app.go (logique de l'application). TinyGo prend en charge la compilation croisée sur diverses cartes matérielles embarquées, telles que Arduino UNO. A titre d'exemple, une application écrite en Go peut faire clignoter une LED sur un Arduino UNO.