Menu English Ukrainian Russe Accueil

Bibliothèque technique gratuite pour les amateurs et les professionnels Bibliothèque technique gratuite


ENCYCLOPÉDIE DE LA RADIOÉLECTRONIQUE ET DU GÉNIE ÉLECTRIQUE
Bibliothèque gratuite / Schémas des appareils radio-électroniques et électriques

Microcontrôleurs pour débutants et au-delà. Encyclopédie de l'électronique radio et de l'électrotechnique

Bibliothèque technique gratuite

Encyclopédie de l'électronique radio et de l'électrotechnique / microcontrôleurs

Commentaires sur l'article Commentaires sur l'article

PREMIÈRE RENCONTRE

D'abord, quelques mots pour ceux à qui le thème du cycle, à en juger par son titre, semble a priori inintéressant ou « étranger ». Peut-être n'avez-vous pas encore utilisé de microcontrôleurs dans vos conceptions (ci-après dénommés MK par souci de concision) et vous pensez que dans un avenir prévisible, vous pourrez vous en passer. Il est également possible que vous supposiez que la construction d'un système de microcontrôleur pour résoudre votre problème serait trop lourde et non viable économiquement. Ne vous précipitez pas : spécialement pour vous, nous voulons donner quelques faits et quelques statistiques.

Par exemple, prenons le parent le plus proche de MK - un ordinateur personnel - et comparons l'intensité de leur utilisation. Selon le cabinet d'analystes Loewenbaum & Co. Inc. (USA), le nombre d'ordinateurs personnels commercialisés dans le monde en 1997 a atteint environ 20 millions d'unités. D'accord, c'est beaucoup. Imaginez maintenant que ce nombre gigantesque ne représente que 0,2% de la production mondiale de MK. Selon la société d'analyse IC Insights Inc. (USA) le marché mondial en 1998 en a absorbé plus de 13,5 milliards !

La conclusion s'impose d'elle-même. Si aujourd'hui encore il est difficile de trouver un domaine de l'activité humaine où l'ordinateur ne serait pas efficacement utilisé, alors que dire de MK ? Pourquoi sont-ils devenus si populaires et littéralement indispensables ? La réponse réside dans la structure même du microcontrôleur. En première approximation de la définition de ce concept, on peut supposer que le MC est un ordinateur situé dans un seul microcircuit. D'où ses principales qualités attractives : petites dimensions, consommation, prix ; haute performance, fiabilité et capacité d'adaptation pour effectuer une grande variété de tâches.

MK diffère d'un microprocesseur en ce qu'en plus de l'unité centrale de traitement (CPU), il contient de la mémoire et de nombreux périphériques d'entrée / sortie: convertisseurs analogique-numérique, canaux d'information série et parallèle, minuteries en temps réel, largeur d'impulsion modulateurs (PWM), générateurs d'impulsions programmables, etc. Dans sa structure et son principe de fonctionnement, le MK, par essence, ne diffère pas d'un ordinateur personnel. Par conséquent, les mots microcontrôleur et micro-ordinateur sont synonymes. Cependant, le premier terme (du mot anglais control - manage) est plus courant, car il reflète son objectif principal - l'utilisation dans les systèmes de contrôle automatique intégrés à une variété d'appareils : cartes de crédit, appareils photo, téléphones portables, chaînes stéréo, téléviseurs, magnétoscopes et caméscopes, machines à laver, voitures, fours à micro-ondes, systèmes d'alarme antivol, systèmes d'allumage de moteurs à essence, entraînements électriques de locomotives, réacteurs nucléaires, et bien plus encore. Les systèmes de contrôle embarqués sont devenus un tel phénomène de masse qu'une nouvelle branche de l'économie s'est en fait formée, appelée Embedded Systems (systèmes embarqués - anglais).

Actuellement, des milliers de variétés de MK sont produites dans le monde. Ils sont fournis dans des boîtiers de 8 à 356 broches, fonctionnent à des températures de -55 à +125oC à des fréquences de 32 kHz à 200 MHz, sont capables de fonctionner à une tension d'alimentation de 1,2 V, tout en consommant un courant ne dépassant pas quelques microampères . . Le prix des produits est également en baisse constante. Certains microcontrôleurs huit bits ne coûtent déjà aujourd'hui pas plus de 50 centimes, ce qui est comparable au coût d'une puce "à logique dure".

Tout cela a conduit au fait qu'aujourd'hui, il est de plus en plus difficile de trouver un domaine d'activité humaine où MC ne trouverait pas d'application, et le processus de leur distribution a un caractère d'avalanche.

Nous espérons que les faits ci-dessus vous ont déjà préparé à une attitude respectueuse envers le personnage principal de notre histoire. En effet, MC est devenu un événement mondial, envahissant presque tous les types d'activité humaine.

Qu'est-ce qui a permis une croissance aussi rapide de la popularité de ces produits, apparus il y a un peu plus de 25 ans ? Quels sont ces dispositifs et quelles sont leurs capacités et perspectives ?

Si vous n'avez pas encore utilisé MC ou des systèmes basés sur eux dans vos activités, alors. peut-être est-il temps d'y penser ? Et si vous décidez d'appliquer MK, alors quelle devrait être la séquence de vos actions ? Quelles difficultés peuvent vous attendre, qu'est-ce qui peut vous aider en cours de route ?

Nous tenterons de répondre à ces questions dans la série d'articles proposée.

LA LOI DE MOORE ET LE PREMIER MK

En 1965, Gordon Moore, l'un des futurs fondateurs de la puissante Intel Corporation, a attiré l'attention sur un fait intéressant. Après avoir tracé la croissance des performances des puces de mémoire, il a découvert un schéma intéressant : de nouveaux modèles de puces apparaissaient tous les 18 à 24 mois, et leur capacité doublait environ à chaque fois. Si cette tendance se poursuit, a suggéré G. Moore, alors la puissance des appareils informatiques augmentera de façon exponentielle sur une période de temps relativement courte.

La prédiction de G. Moore a ensuite été brillamment confirmée, et le modèle qu'il a découvert est observé aujourd'hui, et avec une précision étonnante, étant à la base de nombreuses prévisions de croissance de la productivité. Au cours des 28 années qui se sont écoulées depuis l'avènement du microprocesseur 4004 (1971), le nombre de transistors sur une puce a été multiplié par plus de 12 000 : de 2 300 à 28 000 000 dans la puce Sorrettué.

Eh bien, en 1976, le développement exponentiel de la technologie des semi-conducteurs a conduit à la création par Intel du premier MK - 8048. En plus du processeur, il comprenait une mémoire de programme, une mémoire de données, une minuterie à huit bits et 27 lignes d'E / S. Aujourd'hui, le 8048 fait déjà partie de l'histoire, mais le produit suivant, lancé par Intel en 1980, est toujours bien vivant. Il s'agit du MK 8051.

ARCHITECTURE MK 8051

Ce MK peut être considéré comme un modèle classique, à l'image et à la ressemblance duquel de nombreux autres produits ont été créés par la suite. Son schéma fonctionnel est illustré à la fig. 1. CPU - le nœud principal du MK. Il est associé à un concept aussi important qu'un système de commande.

Microcontrôleurs pour débutants et au-delà

Le jeu d'instructions est un ensemble unique de codes binaires spécifiques à un processeur donné qui définit une liste de toutes ses opérations possibles. Chacun de ces codes définit une opération et est appelé code d'opération ou commande. Plus il y a de codes utilisés dans le jeu d'instructions, plus le processeur peut effectuer d'opérations. MK 8051 est huit bits, donc ses opcodes ont une taille de 8 bits. Théoriquement, il peut y avoir un total de 256 opcodes à huit bits. 8051 utilise 255.

Selon le nombre de codes d'opération utilisés, les systèmes d'instruction sont divisés en deux groupes : CISC et RISC. Le terme CISC désigne un système complexe de commandes et est une abréviation de la définition anglaise de Complex Instruction Set Computer. De même, le terme RISC désigne un jeu d'instructions réduit et provient de l'anglais Reduced Instruction Set Computer. Le système de commande MK 8051 peut être attribué au type C15C.

Cependant, malgré l'utilisation généralisée de ces concepts, il faut reconnaître que les noms eux-mêmes ne reflètent pas la principale différence entre les systèmes de commande CISC et RISC. L'idée principale de l'architecture RISC est une sélection rigoureuse de telles combinaisons de codes d'opération pouvant être exécutées en un cycle du générateur d'horloge. Le principal gain de cette approche est une nette simplification de l'implémentation matérielle du CPU et la possibilité d'augmenter considérablement ses performances.

Initialement, il n'était possible de mettre en œuvre une telle approche qu'en réduisant considérablement l'ensemble de commandes, d'où le nom RISC est né. Par exemple, le jeu d'instructions du MK de la famille Microchir PIC ne comprend que 35 instructions et peut être classé comme RISC. Bien entendu, dans le cas général, plusieurs instructions de l'architecture RISC doivent correspondre à une instruction de l'architecture CISC. Cependant, les gains de performances de l'architecture RISC compensent généralement les pertes du jeu d'instructions moins efficace, ce qui se traduit par une efficacité plus élevée du système RISC dans son ensemble par rapport au CISC. Donc. la commande la plus rapide MK 8051 est exécutée en 12 cycles. Même si trois instructions de contrôleur RISC doivent être exécutées pour chaque instruction, au final, l'architecture RISC fournira une multiplication par quatre des performances.

En cours de route, l'architecture RISC vous permet de résoudre un certain nombre de tâches. En effet, avec la simplification du CPU, le nombre de transistors nécessaires à sa mise en œuvre diminue, donc la surface du cristal diminue. Il en résulte une réduction des coûts et de la consommation d'énergie.

A ce stade, on pourrait s'exclamer : l'avenir appartient à l'architecture RISC ! Cependant, la frontière entre ces deux concepts s'estompe rapidement. Par exemple. Les MCU de la famille AVR d'Atmel ont un jeu d'instructions de 120 instructions, ce qui correspond au type CISC. Cependant, la plupart d'entre eux sont exécutés en un seul cycle, ce qui est une caractéristique de l'architecture RISC. Aujourd'hui, il est généralement admis que la principale caractéristique de l'architecture RISC est l'exécution d'instructions dans un cycle du générateur d'horloge. Le nombre de commandes en lui-même n'a plus d'importance.

Le générateur d'horloge génère des impulsions pour synchroniser le fonctionnement de tous les nœuds de l'appareil. La fréquence de leur répétition peut être réglée par un résonateur à quartz ou un circuit RC connecté aux sorties du MK. Dans certains MK, un mode de fonctionnement du générateur d'horloge est fourni sans l'utilisation d'éléments externes. Dans ce cas, la fréquence des impulsions d'horloge dépend des paramètres du cristal, qui sont déterminés lors de sa fabrication.

La ROM est un périphérique de mémoire en lecture seule conçu pour stocker des programmes. Cette mémoire est donc souvent appelée mémoire de code ou mémoire de programme. Jusqu'à récemment, il existait deux principaux types de ROM - masqués et programmables.

Les informations sont saisies dans les ROM de masque pendant le processus de fabrication du MC à l'aide de modèles technologiques - masques. Il ne peut plus être modifié après la fin du cycle de production.

Ces ROM ne sont utilisées que dans les cas où la qualité du programme ne fait aucun doute et où il existe un besoin massif de MK avec ce programme particulier. L'avantage des ROM de masque est le coût le plus bas en production de masse (à partir de plusieurs milliers de pièces).

Les informations de la ROM programmable sont écrites à l'aide d'un dispositif appelé programmeur. Les MK avec de telles ROM sont de deux types: programmables une fois et à plusieurs reprises (reprogrammables). Le premier, comme son nom l'indique, ne permet qu'une programmation unique, après quoi il n'est plus possible d'effacer les informations (MK avec mémoire OTP - de l'anglais. One Time Programmable). Ils sont utilisés dans la production à petite échelle (jusqu'à 1000 pièces). lorsque l'utilisation du masque MK n'est pas économiquement justifiée.

Les microcircuits programmables de manière répétée sont divisés en MK équipés d'une ROM avec effacement par irradiation ultraviolette (disponibles dans des boîtiers avec une "fenêtre"), et MK avec une mémoire reprogrammable électriquement. L'inconvénient du MC avec ROM avec effacement par irradiation ultraviolette est un coût très élevé et un nombre relativement faible de cycles d'écriture/effacement (dépend de la dose totale d'irradiation du cristal et ne dépasse généralement pas 15...20)

Actuellement, une nouvelle technologie pour la mise en œuvre de la ROM devient de plus en plus populaire - la mémoire Flash. Son principal mérite est qu'il est construit sur le principe de la reprogrammabilité électrique. c'est-à-dire qu'il permet l'effacement et l'enregistrement multiples d'informations à l'aide de programmeurs. Le nombre minimum garanti de cycles d'écriture/effacement dépasse généralement plusieurs milliers. Cela augmente considérablement le cycle de vie et augmente la flexibilité des systèmes MC. car il vous permet d'apporter des modifications au programme MC à la fois au stade du développement du système et pendant son fonctionnement dans un appareil réel.

La RAM est une mémoire à accès aléatoire utilisée pour stocker des données, cette mémoire est donc également appelée mémoire de données. Le nombre de cycles de lecture et d'écriture dans la RAM n'est pas limité, mais lorsque la tension d'alimentation est coupée, toutes les informations sont perdues.

L'architecture du MK 8051 implique l'utilisation séparée de la mémoire de programme et de données et s'appelle Harvard. En règle générale, cette architecture est utilisée pour améliorer les performances du système en séparant les chemins d'accès à la mémoire de programme et de données, mais dans le 8051, elle était utilisée pour obtenir une mémoire de programme et de données qui ne nécessitait pas la même taille. L'antipode de Harvard - l'architecture von Neumann - implique le stockage de programmes et de données dans une mémoire partagée et est plus typique pour les microprocesseurs conçus pour être utilisés dans les ordinateurs. Un exemple est la famille de microprocesseurs x86.

Les temporisateurs TO, T1 sont des temporisateurs/compteurs programmables à seize bits qui peuvent être programmés pour exécuter diverses fonctions. Ils peuvent être utilisés pour la formation précise d'intervalles de temps, en comptant les impulsions sur les sorties du MK, en formant une séquence d'impulsions, en synchronisant l'émetteur-récepteur d'un canal de communication série. Les temporisateurs/compteurs sont capables de générer des requêtes d'interruption, de commuter le CPU pour les servir sur des événements et de le libérer de la nécessité d'interroger périodiquement l'état des temporisateurs. Puisque l'application principale de MK se trouve dans les systèmes temps réel, les temporisateurs/compteurs sont leur élément indispensable. Dans certaines modifications, le nombre de minuteries atteint 32.

Le port série est un canal d'échange d'informations entre le MK et le monde extérieur. De tels canaux de communication occupent un nombre minimum de broches de cristal, permettant une communication sur des distances importantes avec des coûts matériels minimaux. Le 8051 implémente un émetteur-récepteur série asynchrone universel (UART) qui prend en charge le protocole standard RS-232C, ce qui permet d'organiser la communication entre ce MK et un ordinateur personnel. En plus du RS-232C, les protocoles les plus populaires dans le monde des systèmes embarqués sont le RS-485. I2C (bus bidirectionnel à deux fils). SPI (interface périphérique série à XNUMX fils). Bitbus (bus de contrôle série), CAN (interface réseau inter-contrôleur), USB (bus série universel) et quelques autres. Pour presque tous les types de canaux série, vous pouvez aujourd'hui trouver un MK qui a un port série correspondant dans sa composition.

Les ports d'E/S parallèles sont également une partie essentielle de tout microcontrôleur. Ils sont généralement utilisés pour communiquer avec l'environnement immédiat - capteurs et actionneurs.

Une caractéristique importante des ports parallèles MK est la possibilité d'être programmé pour exécuter plusieurs fonctions. Par exemple, sur le 8051, les broches de port P0 et P2 peuvent être utilisées soit comme registres d'E/S statiques normaux, soit comme bus d'adresse et de données pour connecter des périphériques externes tels qu'une mémoire de programme supplémentaire, une mémoire de données, des périphériques d'E/S. Cela donne à MK une flexibilité architecturale. Le port RXNUMX peut soit être utilisé comme registre d'E/S statique, soit exécuter des fonctions spéciales pour le fonctionnement d'un canal série, de temporisateurs, d'un contrôleur d'interruption, etc. La reprogrammabilité vous permet d'utiliser toutes les sorties du MC dans l'appareil conçu avec une efficacité maximale.

Le système d'interruption est l'une des parties les plus importantes de MK. Une caractéristique des systèmes en temps réel est que pour eux un paramètre extrêmement important est le temps de réponse aux événements externes. Expliquons avec un exemple simple. Lorsque vous effectuez un calcul mathématique sur un ordinateur, vous exécutez généralement un programme conçu pour effectuer ces calculs, et après qu'il est chargé dans la mémoire de l'ordinateur, entrez l'énoncé du problème et attendez le résultat. Le temps d'attente dans ce cas n'est pas d'une importance fondamentale (dans des limites raisonnables, bien sûr) - le fonctionnement lent de l'ordinateur peut être gênant, mais cela n'affectera pas le résultat. Le système en temps réel suppose une vitesse très spécifique, calculée au stade du développement, de la réponse du système de contrôle aux événements externes. Les retards au-delà de ceux calculés sont tout simplement inacceptables ici - ils peuvent avoir des conséquences catastrophiques.

Les problèmes de réponse rapide aux événements sont résolus en organisant un système d'interruptions. Cela implique que pour chacun de ces événements, un "morceau" de code séparé est développé, qui forme la réaction du MK à celui-ci. Ce "morceau" de code est appelé une routine de demande d'interruption (le terme routine d'interruption est souvent utilisé par souci de brièveté) et est placé dans la mémoire du programme à une adresse connue. Au moment de l'apparition d'un événement donné, un signal à ce sujet est envoyé à l'entrée du contrôleur d'interruption. Ce dernier est un dispositif qui établit une correspondance biunivoque entre le signal d'entrée relatif à un événement qui s'est produit et l'adresse de la mémoire programme à laquelle se trouve le point d'entrée de la routine de traitement de demande d'interruption à partir de cet événement. Le contrôleur interrompt l'exécution CPU du programme en cours et initie sa transition vers l'exécution de la routine de service d'interruption. Le temps écoulé entre le moment où l'événement s'est produit et le début de l'exécution de la première instruction de la routine d'interruption est appelé le temps de réponse du MK à l'événement. Une fois le traitement terminé, la CPU revient automatiquement à l'exécution du programme interrompu.

Une autre fonction du contrôleur d'interruption est de hiérarchiser les événements. Le concept de priorité signifie qu'une routine d'interruption en cours d'exécution ne peut être interrompue par un autre événement que si elle a une priorité supérieure à celle en cours. Sinon, la CPU passera au traitement d'un nouvel événement après avoir terminé de traiter le précédent. Le contrôleur d'interruption, qui fait partie du MK 8051, dispose de cinq entrées d'événement : deux provenant d'appareils externes, deux provenant de temporisateurs et une provenant du canal série.

Habituellement, lorsqu'ils parlent d'un MK, ils mentionnent toujours la famille à laquelle il appartient. Une famille comprend des produits qui ont le même noyau, qui est compris comme un ensemble de concepts tels qu'un système d'instructions, un diagramme de séquence de fonctionnement du processeur, l'organisation de la mémoire de programme et de la mémoire de données, un système d'interruption et un ensemble de base de périphériques. . En fait, sur la Fig. 1 montre le noyau, qui est devenu la base de la création de centaines d'autres modifications de la famille 8051.

Les différences entre ses différents représentants résident principalement dans la composition des périphériques et la quantité de mémoire de programme ou de données. Depuis la gamme de tâches résolues par MK. extrêmement large, leurs fabricants essaient de sortir autant de modifications pour satisfaire les besoins les plus divers des consommateurs. Dans de nombreuses familles, le nombre de modifications approche la centaine voire dépasse cette valeur.

La caractéristique la plus importante de la famille est la compatibilité logicielle au niveau du code binaire de tous les MK inclus. Cela permet aux développeurs de systèmes de remplacer une famille de microcontrôleurs par d'autres sans perdre leurs développements logiciels. Naturellement, plus le nombre de variétés incluses dans la famille est élevé, plus il est susceptible de choisir la meilleure option, plus cette famille est attrayante pour le développeur. La question du bon choix d'une famille MC pour un nouveau développement est stratégique, car le problème du transfert de logiciels entre produits de différentes familles est extrêmement complexe, et même l'utilisation de langages de haut niveau ne permet pas toujours de résoudre cela sans grandes pertes. Nous reviendrons sur la question des critères de sélection dans les articles suivants du cycle.

Le développement du programme est l'une des étapes les plus importantes dans la création d'un appareil basé sur MK. Sans cela, il est "mort", ne répond pas aux influences extérieures et n'émet pas de signaux de contrôle.

Lors de la mise sous tension, le MCU commence immédiatement à exécuter le programme situé dans la mémoire programme (généralement ROM) qui lui est connectée. Son exécution commence à partir d'une adresse fixe, le plus souvent zéro. Une adresse est simplement un numéro de cellule ROM.Le processus se déroule comme suit : le MCU lit le numéro stocké dans la mémoire programme et, en fonction de sa valeur, appelée code machine, effectue certaines actions sur le contenu des registres ALU. . mémoire, ports, etc. Par exemple, en lisant le nombre 32H de la mémoire programme. MK "comprend" que vous devez lire la valeur du port d'entrée numéro 2 et la placer dans le registre de l'accumulateur. Souvent, un octet ne suffit pas pour décrire l'action, puis le MK lit des octets supplémentaires dans la mémoire.

Après avoir effectué l'action, le MK lit la valeur de la cellule de mémoire suivante dans l'ordre, etc. L'ensemble d'octets décrivant une action effectuée par le MK est appelé une commande machine (instruction), et l'ensemble de ces commandes que le MK " comprend ». - son système de commande ou jeu d'instructions (Instruction Set). Les MK de différentes familles ont des systèmes de commande différents, c'est-à-dire que leurs codes machine ont des significations différentes, bien qu'ils effectuent des actions similaires.

Ainsi, le programme pour MK est une séquence de nombres dont les valeurs lui indiquent les actions à effectuer. Le résultat du développement d'un programme est un fichier informatique contenant ces codes machine. Avec l'aide d'un programmeur ROM, il est entré («cousu») dans la mémoire de programme MK.

Comment est la composition de cette séquence de codes machine - un programme pour MK ? Le développeur a-t-il vraiment besoin de se souvenir des valeurs des codes machine et de définir manuellement leur séquence ? Les premiers programmes pour MK ont été créés de cette manière. et cela s'appelait la programmation en codes machine. Il est clair que cette façon de développer des programmes prend beaucoup de temps et est inefficace.

La première étape pour faciliter le processus de création de programmes était un programme informatique - le soi-disant traducteur du langage d'assemblage. L'idée était d'exprimer les actions effectuées par le MK dans un langage plus lisible par l'homme, puis de convertir ces expressions en codes machine. Dans l'exemple d'instruction machine ci-dessus qui lit la valeur du port 2 et la place dans l'accumulateur, l'action entreprise peut être grossièrement désignée par MOV A.P2.

Ici, le mot MOV (de l'anglais move), appelé mnémonique d'instruction, désigne le transfert d'une valeur, et A et P2, appelés opérandes, indiquent d'où obtenir la valeur et où la mettre. Cette notation est appelée langage d'assemblage. programme écrit dessus. traité par un traducteur qui convertit les constructions du langage d'assemblage en codes machine.

La programmation en langage assembleur est largement répandue à ce jour. Les traducteurs de langage d'assemblage pour toutes les familles de microcontrôleurs populaires sont gratuits.

Malgré les avantages évidents de la programmation en assembleur par rapport à la programmation en code machine, dans de nombreux cas, l'assembleur n'est pas assez efficace pour implémenter les tâches du développeur. Le fait est que le MK n'est capable d'effectuer que les opérations les plus simples comme les opérations arithmétiques sur les nombres entiers, les transferts, les comparaisons, etc. Pour les tâches plus complexes, par exemple les opérations sur les nombres à virgule flottante, les développeurs ont dû écrire des routines spéciales peu pratiques pour utilisation et encombrant. La prochaine étape dans le développement de programmes pour MK a été la création de programmes informatiques spéciaux - des traducteurs de langages de programmation de haut niveau ou des compilateurs. Le langage de programmation le plus utilisé est le C.

Avec l'avènement des traducteurs, le développement de programmes pour MK a été considérablement simplifié. Si, par exemple, vous devez ajouter deux nombres dans le programme, il suffit maintenant d'écrire a = b + c. et le traducteur convertit cette expression en la séquence nécessaire d'instructions machine en fonction des types de variables a, b et c.

L'utilisation d'un langage de haut niveau permet au développeur de faire abstraction du système de commande d'un microcontrôleur particulier et d'opérer dans des catégories plus simples et plus compréhensibles pour une personne. Le développeur est uniquement tenu de connaître l'architecture générale du microcontrôleur. principes de fonctionnement des périphériques embarqués nécessaires à la résolution de la tâche et compétences en programmation en langage C. Le contenu fonctionnel du programme est implémenté à l'aide des outils du langage C. qui contient un grand nombre de sous-programmes (fonctions) divers : arithmétique, pour travailler avec des chaînes de caractères, et bien d'autres.

Considérez le processus de création d'un programme pour MK en langage C. Le processus de développement nécessitera un ordinateur personnel.

Après avoir compris la tâche, le développeur écrit le code source de son programme en langage C à l'aide de n'importe quel éditeur de texte. Il exécute ensuite le programme de traduction C. qui convertit le texte source en un fichier objet intermédiaire. Le traducteur est contrôlé par un ensemble de clés (leur description peut être trouvée dans sa documentation) qui sont spécifiées sur sa ligne de commande. Si le développeur a fait des erreurs de syntaxe lors de l'écriture du programme, le traducteur en affiche une liste à l'écran avec une indication pour chaque numéro de ligne dans le fichier texte source. Le développeur doit corriger tous les bugs. Une fois la traduction réussie, les fichiers objets doivent être traités par l'éditeur de liens (linker), qui génère le fichier programme en codes machine.

Il y a un problème lors de l'utilisation d'un langage de haut niveau. Le compilateur est responsable de la conversion des constructions de langage en codes machine, et cette conversion peut être effectuée avec divers degrés d'efficacité. Les critères d'efficacité sont la taille du code machine (plus il est petit, bien sûr, mieux c'est) et la vitesse du code machine. La tâche de générer du code compact et rapide est très difficile, et la qualité globale du compilateur dépend de sa solution. Les compilateurs C modernes utilisent l'optimisation à plusieurs niveaux, les fonctionnalités d'architecture d'un MK particulier, vous permettent de créer des programmes mixtes dans lesquels certaines des sous-routines sont écrites en assembleur.

Le processus décrit semble plutôt lourd : le développeur doit lancer manuellement divers programmes (éditeur de texte, compilateur C, éditeur de liens pour mémoriser les clés de contrôle, rechercher les erreurs dans le programme par les numéros de ligne dans le fichier. La dernière étape en date pour faciliter le travail de le développeur de programmes pour MK a été l'émergence d'environnements intégrés de développement (Integrated Development Environment. IDE).L'environnement de développement intégré est un programme informatique qui relie toutes les étapes de développement d'un programme.Il combine un éditeur de texte pour l'écriture du code source, des traducteurs de l'assembleur et du C, un éditeur de liens, un débogueur, des informations de référence sur MK et d'autres outils nécessaires au développeur. il vous suffit de cocher les cases aux bons endroits. .

L'émergence d'environnements de développement de logiciels intégrés a encore augmenté l'efficacité de la création de programmes pour MC, a permis au développeur de se concentrer sur l'essence du problème à résoudre et de faire abstraction des détails spécifiques de sa mise en œuvre.

Des progiciels de développement de logiciels intégrés sont produits par plusieurs sociétés. Les packages de différents fabricants ont des fonctions similaires, mais diffèrent par les capacités de service, la facilité d'utilisation et la qualité du code machine généré.

Les principales caractéristiques des kits de développement les plus populaires sont présentées dans le tableau.

Microcontrôleurs pour débutants et au-delà
(cliquez pour agrandir)

DÉBUGAGE SYMBOLIQUE DES PROGRAMMES POUR MK

À de rares exceptions près, les programmes pour MK, en raison des erreurs qu'ils contiennent, ne commencent pas à fonctionner la première fois et nécessitent un débogage. Les développeurs traitent les problèmes de débogage de différentes manières. Certains d'entre eux pensent qu'il suffit d'analyser soigneusement le texte source, de voir avec un oscilloscope ce qui se passe sur les sorties MK, et toutes les erreurs peuvent être corrigées. Cette méthode est applicable si le développeur a une grande expérience, connaît parfaitement le MK utilisé et dispose d'un traducteur qui génère toujours le bon code (généralement un assembleur), et d'un temps suffisant.

D'autres utilisent des moniteurs de débogage faits maison dans leur pratique - des ensembles de sous-programmes spéciaux qui sont chargés dans le MK avec le programme principal. Ce dernier appelle les sous-programmes de surveillance aux points de contrôle, et ils fournissent des informations sur l'état des ressources MK. Presque tous les programmes peuvent être débogués de cette manière, mais ils présentent des inconvénients qui peuvent être importants. Premièrement, le moniteur de débogage doit disposer d'une partie des ressources MC pour le travail : au moins une partie de l'espace d'adressage du code et un certain nombre de cellules de pile, et au maximum, également une partie de la RAM et des périphériques appareils du MC. utilisé par le moniteur pour afficher des informations. Il peut être difficile d'allouer des ressources au moniteur de débogage si le programme principal lui-même charge activement le MK. Par exemple, le PIC 16С5х (Microchip) MK n'a que deux cellules de pile et il est difficile d'utiliser les appels de sous-programme de débogage. Deuxièmement, les appels de moniteur prennent du temps à partir du programme principal et, par conséquent, ils ne peuvent pas être appelés à partir de parties critiques du programme. Troisièmement, la création d'un moniteur de débogage, en soi, prend du temps.

Le moyen le plus efficace de déboguer des programmes pour MK consiste à utiliser des outils de débogage professionnels spécialisés, notamment des débogueurs de simulateur et des émulateurs en circuit.

Avant de parler des possibilités offertes par de tels débogueurs, il est nécessaire d'aborder le choix du compilateur, à l'aide duquel les textes sources des programmes sont convertis en code machine. Dans la grande majorité des cas, la programmation dans un langage de haut niveau est préférable. L'utilisation de l'assembleur est nécessaire si des exigences très strictes sont imposées sur la taille et la vitesse du code généré. Actuellement, de tels cas deviennent de moins en moins nombreux, car vous pouvez presque toujours prendre un MK "plus rapide" avec plus de mémoire. De plus, les packages d'outils croisés modernes facilitent l'écriture de programmes mixtes, dans lesquels certains modules sont écrits en C. et les pièces les plus critiques pour les performances sont en assembleur. Les compilateurs C permettent également d'insérer des instructions d'assemblage dans le code source.

Quels sont les avantages de la programmation en C par rapport à la programmation en assembleur ? Brièvement, ils sont les suivants :

  • il n'y a pas besoin de s'inquiéter des opérations avec des nombres de grande capacité. Le compilateur générera automatiquement le code correct pour l'opération a+b. si a et b sont des nombres de 8, 16, 32 bits, des nombres à virgule flottante et des nombres pairs de types différents ;
  • Le compilateur est livré avec une vaste bibliothèque de fonctions (sous-routines) qui implémentent diverses opérations mathématiques (fonctions trigonométriques, exponentiation, etc.). travailler avec des chaînes de caractères, des entrées/sorties formatées, etc. ;
  • de nombreuses erreurs de programmation sont diagnostiquées par le compilateur : par exemple, il ne vous permettra pas de passer le mauvais nombre de paramètres ou des paramètres de mauvais types à une fonction, d'oublier de mettre une instruction return, etc. ;
  • le code source écrit en C est beaucoup plus facile à lire, plus compact, plus facile à modifier ;
  • programmes écrits en C. sont plus facilement transférés aux députés d'autres familles.

Afin de déboguer efficacement des programmes écrits dans un langage de haut niveau, le développeur doit disposer d'outils de débogage offrant des possibilités adéquates d'affichage des données utilisées dans le programme, ainsi que de suivi de l'exécution du programme à partir de son code source. . Deux conditions sont nécessaires pour que cela soit possible :

  • le compilateur doit fournir suffisamment d'informations sur la structure du programme et les données qu'il utilise. Cette information est appelée symbolique (débogage) ;
  • le débogueur doit pouvoir interpréter ces informations. Tous les compilateurs et assembleurs modernes génèrent des informations symboliques sous une forme ou une autre, mais aucun format universel n'a encore été développé, et chaque compilateur les génère dans son propre format. Cela crée des difficultés supplémentaires pour les débogueurs qui doivent être capables de "comprendre" plusieurs formats de caractères.

Voyons maintenant comment le débogueur doit interpréter les informations symboliques et quelles options doivent être fournies à l'utilisateur à cet égard.

SUIVI DE L'EXECUTION DU PROGRAMME SELON SON TEXTE SOURCE

En général, une ligne de texte source est convertie par le compilateur en plusieurs instructions machine. Même un programme assembleur contient presque toujours des macros qui se développent en plusieurs instructions de processeur lorsqu'elles sont traduites. Il n'est pas pratique de déboguer un tel programme en utilisant le désassembleur de son code, de sorte que les compilateurs insèrent un tableau de numéros de ligne dans les informations de débogage. Il contient des informations sur la correspondance des numéros de ligne de texte source et des noms de fichier de texte source avec les adresses absolues du code de programme. Le débogueur affiche le code source du programme à l'écran. suivant ce tableau, il peut exécuter le programme "ligne par ligne", en exécutant en une seule étape toutes les instructions machine générées par le compilateur pour la ligne courante.

Le tableau des numéros de ligne vous permet également d'effectuer des actions contextuelles avec le texte du programme, par exemple, l'exécuter "jusqu'au curseur", c'est-à-dire à un endroit spécifié par l'utilisateur dans le texte source, définir des points d'arrêt sur des lignes spécifiées, etc. Actions contextuelles sont pratiques car le développeur n'a pas besoin de connaître les adresses correspondant aux lignes du texte source : le débogueur lui-même les déterminera à partir de la table. Le débogueur doit également "connaître" les adresses des sous-programmes, des fonctions et des étiquettes de code, et être capable de trouver le texte source d'une fonction par son nom.

AFFICHAGE DES DONNÉES UTILISÉES DANS LE PROGRAMME QUE VOUS DÉBUGEZ

Pour un débogage complet, le développeur doit pouvoir visualiser à tout moment les données manipulées par le programme. Le débogueur doit "pouvoir" afficher toutes les données utilisées par le programme de la manière la plus appropriée.

En règle générale, les développeurs utilisent des données nommées dans les programmes, c'est-à-dire que chaque objet utilisé dans le programme reçoit un nom. Les objets peuvent être de complexité variable - de simples cellules de mémoire à des structures complexes de langages de haut niveau telles que des structures, des tableaux, etc.

DONNÉES DANS LES PROGRAMMES D'ASSEMBLAGE

Les programmes d'assemblage utilisent principalement des données simples, c'est-à-dire des cellules de mémoire. Les tableaux sont également utilisés. Pour afficher correctement des données simples, le débogueur doit "savoir" :

  • nom de l'objet :
  • l'adresse de l'objet en mémoire ;
  • Espace d'adressage MK dans lequel se trouve l'objet. De nombreux microcontrôleurs ont plus d'une zone de données. Par exemple, la famille MCS-51 dispose d'une mémoire de données interne, d'une mémoire de données externe et d'un espace de bits ;
  • le nombre de bits de l'objet, c'est-à-dire le nombre d'octets qu'il occupe. Les microcontrôleurs 16 bits, tels que les membres de la famille MCS-96, « savent comment » fonctionner 8-. 16-. Données 32 bits. Un point important doit être noté ici. Pour le développeur, quelle est la taille logique de l'objet est important. Par exemple, les MK huit bits de la famille PIC (Microchip) n'opèrent que des octets. S'il est nécessaire d'avoir dans le programme, par exemple, un compteur 16 bits, alors chaque octet doit être manipulé séparément. Mais lors du débogage, le programmeur souhaite voir non pas chaque octet du compteur séparément, mais les deux octets à la fois, sous la forme d'une variable 16 bits. Les assembleurs croisés populaires n'offrent pas une telle opportunité. L'exception est l'assembleur croisé PASM-PIC de Fiton, qui vous permet de déclarer dans le programme des données de la taille des octets, un mot, un double mot, ainsi que des tableaux de tels objets. Lors du débogage de programmes écrits avec PASM-PIC. tous les objets sont affichés sous une forme correspondant à leur taille et structure logiques ;
  • portée de l'objet. Si le programme se compose de plusieurs modules, le programmeur a la possibilité de localiser la portée du nom dans un module. Ainsi, dans différents modules, il peut y avoir des objets avec les mêmes noms, mais différents autres attributs. Le débogueur doit "découvrir" quel objet est actif et l'afficher correctement. Notez cependant que la pratique consistant à utiliser les mêmes noms dans différents modules conduit souvent à des confusions et des erreurs. Si l'objet est déclaré global (PUBLIC) et visible dans tous les modules, il n'y a pas de difficultés d'interprétation.

Avec les informations ci-dessus, le débogueur devrait, après avoir reçu le nom de l'objet de l'utilisateur, afficher sa valeur en fonction du type. Les débogueurs les plus "avancés" peuvent en plus afficher le reste des attributs de l'objet.

DONNÉES DANS LES PROGRAMMES EN LANGAGES DE HAUT NIVEAU

L'affichage des objets utilisés dans les langages de haut niveau est beaucoup plus difficile en raison de la variété des structures d'objets, de la manière dont ils sont stockés en mémoire et des portées. Pour des exemples, nous utiliserons le langage C, comme le plus populaire parmi les développeurs.

STRUCTURE DES OBJETS

En plus des variables simples de différentes longueurs, les programmes C utilisent également des variables à virgule flottante, des structures (struct), des unions ou des unions (union), des pointeurs, des tableaux unidimensionnels et multidimensionnels. Ces derniers peuvent être constitués aussi bien d'objets simples que d'objets complexes (structures, unions, pointeurs).

L'utilisation d'objets complexes dans les programmes est certainement pratique. Cependant, en raison de la complexité de leur structure, il est hautement souhaitable de pouvoir l'afficher correctement lors de l'étape de débogage. Dans les débogueurs de Fiton, les objets complexes peuvent être affichés à la fois sous forme compressée (liste de valeurs d'éléments) et sous forme développée, indiquant l'adresse, la valeur et le type de chaque élément de tableau et/ou membre de structure. L'implémentation des pointeurs dans différents compilateurs est différente. Le fait que le MK ait généralement plusieurs espaces d'adressage crée des difficultés supplémentaires, car lorsque l'on travaille avec un pointeur, en plus de l'adresse, l'espace d'adressage vers lequel pointe le pointeur doit être connu. Dans certaines implémentations, l'identifiant de l'espace d'adressage fait partie de la valeur du pointeur ; dans d'autres, le compilateur "sait" cela à l'avance et génère le code approprié.

De plus, le composant d'adresse dans un pointeur peut avoir une taille de 8 à 32 bits. Lors de l'affichage des valeurs de pointeur, le débogueur doit "connaître" tous les détails de leur implémentation dans chaque compilateur.

MÉTHODES DE LOCALISATION D'OBJETS EN MÉMOIRE

En plus des objets statiques, dont les adresses ne changent pas pendant l'exécution du programme, dans un programme écrit dans un langage de haut niveau, il peut y avoir des objets dits automatiques, dont la mémoire est temporairement allouée dans la pile MK . Les adresses de tels objets ne sont pas absolues, mais sont déterminées dynamiquement au stade de l'exécution du programme. Ils sont généralement mesurés à partir de la valeur actuelle d'une variable statique appelée pointeur de cadre de pile (Base Pointer ou BP). Étant donné que la valeur de BP est générée dynamiquement par le programme lors de l'exécution, les valeurs des objets automatiques ne sont disponibles que dans leur périmètre, c'est-à-dire avec une valeur BP valide. Le débogueur, lors de l'affichage des valeurs des objets automatiques, doit "connaître" la façon dont les adresses sont déterminées, ainsi que surveiller l'exactitude de la valeur BP

Il est également possible de placer temporairement des variables dans des registres MK. Dans ce cas, le débogueur doit "savoir" quelles variables sont placées dans quels registres et pour combien de temps. Et, enfin, il y a souvent une situation où le même objet au cours de sa vie change la façon dont il est placé en mémoire, et plus d'une fois. Cela peut se produire, par exemple, lorsqu'une fonction reçoit un ou plusieurs paramètres dans des registres, puis les pousse sur la pile.

CHAMP DE VISIBILITÉ DE L'OBJET

Comme dans les programmes assembleurs, les programmes C ont des objets globaux qui sont accessibles par leur nom depuis n'importe quel module, et des objets qui sont localisés dans le module (ces objets sont déclarés statiques). Cependant, les variables automatiques et de registre compliquent l'affichage de leurs valeurs par les débogueurs. Le fait est que. premièrement, la durée de vie d'un objet automatique est limitée par sa portée, et deuxièmement, les portées englobantes peuvent avoir leurs propres objets automatiques avec les mêmes noms. Illustrons cela avec un exemple de fonction qui a plusieurs étendues imbriquées :

Microcontrôleurs pour débutants et au-delà

La variable nommée "a" existe tant que la fonction f est en cours d'exécution, mais selon la partie de la fonction qui est en cours d'exécution, le nom "a" représente différentes variables. Lors du traçage de la fonction f, le débogueur doit, selon la variable active, afficher correctement sa valeur.

Lors de la création d'un programme, le développeur ne se soucie pas des détails de la mise en œuvre des concepts qu'il a utilisés dans le programme. En termes de catégories « pour acquis », il ne soupçonne souvent pas à quel point il était difficile pour les développeurs de compilateurs et de débogueurs de les implémenter. Ces derniers doivent résoudre le problème de combiner dans un seul shell à la fois une interface simple et intuitive, une richesse de fonctionnalités et une étude détaillée de tout ce qui concerne la mise en œuvre des fonctionnalités de l'architecture et du fonctionnement d'un MK particulier. Si le débogueur ne fournit pas au développeur des outils de débogage adaptés à la complexité du problème à résoudre, alors le développeur perd inévitablement en productivité. Qui d'entre nous n'a pas eu à passer des heures et des jours à chercher une erreur ou une faute de frappe gênante dans le texte source ? !

Au cours du processus de développement et de création d'un système à microprocesseur, il arrive tôt ou tard un moment où il est finalement incorporé dans le matériel et commence à montrer des signes de vie. Cependant, dans la plupart des cas, ces signes s'avèrent imprévisibles, le système commence à vivre sa propre vie. De nombreux programmeurs conviendraient probablement que chaque nouveau programme contient des bogues. C'est en partie pour cela que le nouveau MK se comporte d'abord comme une boîte « noire ».

Afin de faciliter le processus de débogage des systèmes, toute une classe d'outils a été développée. Leur objectif principal est de rendre le processus de fonctionnement du MK débogué "transparent", c'est-à-dire facilement contrôlé, contrôlé arbitrairement et modifié à la volonté du développeur. Une bonne boîte à outils professionnelle peut en outre fournir au développeur de nombreux services, facilitant ainsi grandement son travail, éliminant les opérations de routine.

Les principaux outils de débogage comprennent les émulateurs en circuit, les simulateurs de logiciels, les cartes de développement (cartes d'évaluation), les moniteurs de débogage et les émulateurs ROM. Il existe également des appareils et des ensembles combinés.

ÉMULATEURS EN CIRCUIT

Un émulateur en circuit (ICE) est un outil matériel-logiciel qui peut remplacer un processeur émulé dans un appareil réel. VSE est l'outil de débogage le plus puissant et le plus polyvalent.

Sur le plan fonctionnel, les VE sont divisés en ceux connectés à un ordinateur externe (généralement un PC compatible IBM) et fonctionnant de manière autonome. Ces derniers disposent de leurs propres ressources informatiques et installations d'entrée/sortie, donc, à capacités égales, ils sont beaucoup plus chers que les premiers, et au même prix, ils leur sont nettement inférieurs en termes de fonctionnalités et de capacités de service.

Le système étant débogué, le VSE est généralement connecté par un câble à une tête d'émulation spéciale. Relativement récemment, des modèles VSE sont apparus dans lesquels une telle tête est structurellement combinée avec l'unité principale et est insérée dans le système en cours de débogage à la place du MC. Si ce dernier ne peut pas être retiré (les broches sont soudées à la carte), l'utilisation du VSE est autorisée, à condition que ce MC dispose d'un mode de débogage dans lequel toutes ses broches sont dans le troisième état (haute impédance). Dans ce cas, pour connecter le VSE, un adaptateur de clip spécial est utilisé, qui est connecté directement aux sorties du MK émulé.

Moins. VSE contient un débogueur, un nœud d'émulation MK. mémoire d'émulation et sous-système de point d'arrêt. Les TSE plus avancés peuvent en outre inclure un traceur, un processeur de points d'arrêt, un profileur (analyseur d'efficacité du code de programme), une minuterie en temps réel, des outils logiciels et matériels qui vous permettent de lire et de modifier les ressources du processeur émulé "à la volée" , outils logiciels et matériels qui assurent la gestion synchrone et nécessaires à l'émulation dans les systèmes multiprocesseurs, un environnement de développement intégré.

Le débogueur est une sorte de passerelle entre le développeur et l'outil de débogage. Un bon débogueur garantit que les programmes en cours de débogage sont chargés dans la mémoire système, que les états et le contenu de tous les registres et de la mémoire (et, si nécessaire, leurs modifications) sont affichés sur le moniteur et que le processus d'émulation est contrôlé.

Des débogueurs plus puissants (communément appelés débogueurs de haut niveau ou de haut niveau) le permettent également.

  • effectuer un débogage symbolique (du fait que le débogueur, à l'aide d'informations spéciales fournies par le compilateur, "connaît" les adresses de toutes les variables, tableaux et structures symboliques). Dans ce cas, l'utilisateur peut opérer avec des noms symboliques plus acceptables pour une personne, sans se soucier de se souvenir de ses adresses ;
  • contrôler et analyser non seulement le texte désassemblé, mais aussi le code source d'un programme écrit dans un langage de haut niveau, et même avec ses propres commentaires.

Un tel débogueur permet à l'utilisateur de contrôler simultanément l'avancement du programme et de voir la correspondance entre le texte source, l'image du programme en codes machine et l'état de toutes les ressources du microcontrôleur émulé.

Il convient de noter qu'un débogueur de haut niveau ne fournit les performances de toutes ses fonctions que si un compilateur croisé est utilisé qui fournit des informations de débogage complètes et correctes (tous les compilateurs, en particulier leurs versions piratées, n'en sont pas capables), et à en même temps le format de sa présentation "familier" au débogueur.

La mémoire d'émulation est utilisée dans le processus de débogage au lieu de la ROM du système en cours de développement. De plus, il vous permet de déboguer le programme en l'absence d'un système réel ou de sa mise en page. Si vous devez apporter des modifications au programme en cours de débogage, il suffit de charger un programme nouveau ou modifié dans la mémoire de l'émulateur, plutôt que de reprogrammer la ROM.

Il y a des TPE. qui permettent à l'utilisateur de "substituer" la mémoire d'émulation au lieu de la ROM non seulement dans son intégralité, mais également bloc par bloc (dans certains modèles, la taille de bloc minimale est de 1 octet). dans l'ordre spécifié par l'utilisateur. Pour ce faire, il lui suffit de définir la répartition de la mémoire de données et de la mémoire de programme, conformément à laquelle le processeur accédera à la fois au contenu de la ROM dans le système en cours de débogage et au contenu de la mémoire d'émulation du TSE. Une telle mémoire est généralement appelée mémoire avec possibilité de mappage.

Le traceur est un analyseur logique qui fonctionne de manière synchrone avec le processeur et capture le flux d'instructions en cours d'exécution et l'état des signaux externes sélectionnés. Il existe des VSE qui permettent de suivre non seulement les signaux externes, mais également les états des ressources internes du MC. par exemple les registres. Dans de tels appareils, des versions spéciales de MK (cristaux d'émulation) sont utilisées.

Le processeur de point d'arrêt permet d'arrêter l'exécution du programme ou d'effectuer d'autres actions (par exemple, démarrer ou arrêter le traceur) lorsque les conditions spécifiées par l'utilisateur sont remplies, contrairement au mécanisme de point d'arrêt habituel, le processeur vous permet de former et de suivre les conditions de presque n'importe quel complexité au niveau matériel, tout en étant émulé le processus n'est pas déduit de l'échelle temps réel. Dans certains modèles VSE, le processeur de points d'arrêt peut éventuellement être utilisé pour contrôler dynamiquement le traceur.

Le profileur (analyseur d'efficacité du code de programme) permet, sur la base des résultats de l'exécution du programme débogué, d'obtenir des informations sur le nombre d'appels aux différentes sections du programme et le temps consacré à leur exécution. L'analyse des informations statistiques fournies par le profileur permet d'identifier les sections "mortes" ou surchargées de programmes et, par conséquent, d'optimiser la structure du programme en cours de débogage.

Un environnement de développement intégré est un ensemble d'outils logiciels qui prend en charge toutes les étapes du développement logiciel, de l'écriture du code source d'un programme à sa compilation et son débogage, et fournit une interaction simple et rapide avec un débogueur-simulateur et un programmeur de logiciel.

La présence d'un éditeur, d'un gestionnaire de projet et d'un système de contrôle intégrés dans le shell logiciel VSE facilite grandement le travail du développeur, lui évitant de nombreuses actions de routine. Pour lui, la frontière entre l'écriture d'un programme, son édition et le débogage est floue. Le passage de l'édition du texte source au débogage et inversement s'effectue de manière "transparente" et synchrone avec l'activation des fenêtres correspondantes. Le gestionnaire de projet démarre automatiquement la compilation selon les besoins et active la fenêtre d'interface de programme correspondante. Vous pouvez tout aussi facilement procéder au débogage du projet à l'aide du débogueur de simulateur existant ou commencer à flasher la ROM avec un programme débogué.

Certaines UTI offrent aux utilisateurs d'autres fonctionnalités supplémentaires. Parmi eux, il convient en particulier d'en noter un, bien qu'assez spécifique, mais dans certains cas d'une importance fondamentale, la capacité de construire des complexes multi-émulateurs nécessaires au débogage des systèmes multiprocesseurs.Une caractéristique distinctive d'un tel complexe est le contrôle synchrone (à partir d'un ordinateur) de plusieurs émulateurs.

Dans le cas général, la capacité du TSE à contrôler et gérer le fonctionnement des équipements débogués peut être limitée (par exemple, mauvaise gestion des interruptions en mode pas à pas, interdiction d'utiliser un port série, etc.). Il est également nécessaire de se rappeler que chaque modèle VSE possède sa propre liste de microcontrôleurs et de compilateurs pris en charge.

Cependant, pour la majorité des microcontrôleurs populaires, des VSE ont été développés qui n'ont pas de restrictions sur l'utilisation des ressources de cristaux débogués. Nous allons illustrer les possibilités d'un tel ESS en prenant comme exemple le modèle PICE-51 de la société Fiton.

Le PICE-51 est un dispositif créé à l'aide d'un circuit intégré logique programmable (FPGA). Cela a permis de réduire considérablement la taille du VSE, de minimiser les écarts de ses caractéristiques électriques et de fréquence par rapport aux caractéristiques du MC émulé, et ainsi d'atteindre une précision d'émulation maximale à des fréquences allant jusqu'à 33 MHz à des tensions d'alimentation de 3,3 à 5 V La structure matérielle rechargeable du R╡SE-51 permet d'émuler presque tous les MK de la famille MCS-51. Le support logiciel fonctionne dans l'environnement Windows.

Le PICE-51 se compose d'une carte principale, d'un adaptateur remplaçable pour un groupe MK spécifique et d'une tête d'émulation remplaçable également pour un type de boîtier spécifique. Un traceur et un processeur de point d'arrêt sont assemblés sur la carte principale, et un processeur d'émulation pour un type spécifique de MK est installé sur la carte adaptateur remplaçable. Les têtes d'émulation permettent d'installer l'appareil dans les prises DIP et PLCC de la carte utilisateur. L'alimentation est fournie par un bloc avec une tension de sortie de +5 V (0,5 A) ou par un appareil en cours de débogage. La communication avec un ordinateur se fait via un canal RS-232C isolé galvaniquement à une vitesse de 115 kbauds.

Les autres caractéristiques et capacités du PICE-51 sont les suivantes :

  • émulation précise - l'absence de toute restriction sur l'utilisation par le programme utilisateur des ressources MK;
  • jusqu'à 256 Ko de programme émulé et de mémoire de données. Prise en charge du modèle de mémoire en banque. Allocation de mémoire entre l'ESS et l'appareil de l'utilisateur avec une précision de 1 octet ;
  • jusqu'à 512K points d'arrêt matériels pour l'accès aux programmes et à la mémoire de données,
  • prise en charge matérielle des programmes de débogage dans les langages de haut niveau ;
  • tracer huit signaux externes arbitraires ;
  • quatre sorties de synchronisation d'équipement utilisateur ;
  • traceur temps réel avec un buffer de 16 à 64K trames (tableaux) de 64 bits avec accès à la volée. Suivi de l'adresse, des données, des signaux de contrôle, de la minuterie en temps réel et de huit signaux d'utilisateur externes ;
  • filtre de trace programmable ;
  • processeur de point d'arrêt matériel avec la possibilité de définir une condition d'arrêt d'émulation complexe par une combinaison d'adresse, de données, de contrôle, de huit signaux externes, d'un temporisateur en temps réel, de compteurs d'événements et d'un temporisateur :
  • quatre points d'arrêt complexes qui peuvent être utilisés indépendamment ou en combinaisons pour les conditions AND / OR / IF-THEN ;
  • minuterie en temps réel 48 bits ;
  • émulation "transparente" - accès "à la volée" à la mémoire émulée, aux points d'arrêt, au processeur de points d'arrêt, au tampon de trace, au temporisateur en temps réel ;
  • générateur d'horloge contrôlé pour le MK émulé. La possibilité de le faire passer en douceur de 500 kHz à 40 MHz ;
  • système intégré d'autodiagnostic des équipements VSE. Le développement de programmes au niveau de la gestion de projet pour le macro-assembleur МСА-51 ("Fiton"/"Microcosm"), ainsi que pour les packages d'outils croisés de Keil Software et IAR Systems est pris en charge ;
  • prise en charge du débogage symbolique complet des programmes créés à l'aide des compilateurs suivants : assembleur ASM51 d'Intel, compilateur PL/M d'Intel, assembleurs et compilateurs C d'Avocet Systems. Hi-Tech. logiciel de gestion des tâches ;
  • enregistrement et chargement automatiques des fichiers de configuration matérielle, des options d'interface et de débogage. Assurer la compatibilité des fichiers de configuration avec le simulateur PDS-51 et la portabilité des projets entre PICE-51 et le simulateur PDS-51 ;
  • la possibilité de personnaliser les couleurs, les polices et d'autres paramètres pour toutes les fenêtres en même temps et pour chaque fenêtre séparément.

Une telle gamme de fonctionnalités fait de VSE l'outil de débogage le plus puissant et le plus polyvalent.

SIMULATEURS

Simulateur - un outil logiciel qui peut simuler le fonctionnement du MK et de sa mémoire. En règle générale, il se compose d'un débogueur, d'un modèle de processeur et de mémoire. Les appareils plus avancés contiennent des modèles de périphériques intégrés (minuteries, ports, ADC et systèmes d'interruption).

Le simulateur doit "pouvoir" charger des fichiers de programme dans tous les formats courants, afficher des informations sur l'état des ressources du microcontrôleur simulé aussi complètement que possible. et offrent également des possibilités de simuler l'exécution du programme chargé dans divers modes. Pendant le débogage, le modèle exécute le programme et l'état actuel du modèle s'affiche sur l'écran de l'ordinateur.

En chargeant le programme dans le simulateur. l'utilisateur peut l'exécuter en mode pas à pas ou continu, définir des points d'arrêt conditionnels ou inconditionnels, contrôler et modifier librement le contenu des cellules mémoire et des registres du microcontrôleur simulé. Le simulateur vous permet de vérifier rapidement la logique d'exécution du programme, l'exactitude des opérations arithmétiques.

Selon la classe de débogueur utilisée, certains modèles de simulateur prennent en charge le débogage symbolique de haut niveau des programmes.

Le simulateur peut également contenir un certain nombre d'outils logiciels supplémentaires, tels qu'une interface d'environnement externe. La présence d'une telle interface vous permet de créer et d'utiliser de manière flexible un modèle de l'environnement externe du MK. fonctionnement et affectant le programme débogué selon un algorithme donné.

Dans un système réel, le MC est généralement "engagé" dans la lecture des informations des dispositifs externes (capteurs) qui lui sont connectés, les traite et émet des signaux de commande vers les actionneurs. Afin de simuler le fonctionnement d'un capteur dans un simulateur simple, vous devez modifier manuellement l'état actuel du modèle du périphérique auquel le capteur est connecté dans un système réel. Si, par exemple, lors de la réception d'un octet via un port série, un certain indicateur est défini et que l'octet lui-même tombe dans un certain registre, ces deux actions doivent être effectuées manuellement dans le simulateur. Dans certains modèles, ce problème a été résolu : les simulateurs ont des outils intégrés pour créer des modèles d'appareils externes connectés au MK, y compris des outils pour l'affichage graphique des informations.

Une caractéristique évidente des simulateurs logiciels est que que les programmes qui y sont chargés sont exécutés dans une échelle de temps autre que le temps réel. Cependant, le faible prix, la possibilité de déboguer même en l'absence d'une maquette de l'appareil en cours de débogage, font des simulateurs logiciels un outil de débogage très attractif. Il convient également de noter qu'il existe toute une classe d'erreurs qui ne peuvent être détectées qu'à l'aide d'un simulateur.

MONITEURS DE DÉBOGAGE

Un moniteur de débogage est un programme spécial qui est chargé dans la mémoire du système en cours de débogage. Il oblige le MK à effectuer, en plus de la tâche appliquée, également des fonctions de débogage :

  • chargement des codes d'application utilisateur dans la mémoire sans moniteur ;
  • définir des points d'arrêt ;
  • démarrer et arrêter le programme chargé en temps réel ;
  • passer le programme utilisateur pas à pas ;
  • visualisation, édition du contenu des registres de mémoire et de contrôle.

Le programme moniteur fonctionne "en conjonction" avec un ordinateur ou un terminal passif, sur lequel s'effectuent la visualisation et le contrôle du processus de débogage. L'avantage de cette approche

  • coûts très faibles tout en conservant la possibilité de déboguer en temps réel, principal inconvénient ;
  • distraction des ressources MK pour les procédures de débogage et de communication (le moniteur occupe de la mémoire, des interruptions, un canal série). Récemment, des programmes sont apparus qui n'occupent pratiquement pas les ressources matérielles du MK (ils seront discutés dans la section "Émulateurs ROM").

CONSEILS DE DÉVELOPPEMENT

Conseils de développement ou, comme on les appelle généralement dans la littérature étrangère, conseils d'évaluation (comités d'évaluation). - constructeurs originaux pour le prototypage de systèmes appliqués. Récemment, de nombreuses entreprises manufacturières ont lancé de nouveaux modèles de MK. offre et les cartes de développement correspondantes. Il s'agit généralement d'une carte de circuit imprimé avec un MK installé dessus et de tous les éléments nécessaires à son fonctionnement normal, ainsi que des systèmes de communication avec un ordinateur. En règle générale, la carte offre un espace libre pour le montage de l'appareil utilisateur en cours de développement. Parfois, il existe également un "câblage" prêt à l'emploi pour l'installation de périphériques supplémentaires recommandés par l'entreprise (ROM, RAM, écran LCD, clavier, ADC, etc.). Les cartes modifiées par l'utilisateur peuvent être avantageusement utilisées comme contrôleurs monocarte intégrés dans des produits de petite taille (5...20 pcs.).

Pour la commodité de l'utilisateur, les cartes de développement sont également équipées d'un outil de débogage simple basé sur le moniteur de débogage. Deux approches différentes ont émergé ici : l'une est utilisée pour MK. ayant un bus externe, et le second - pour les MK qui ne l'ont pas.

Dans le premier cas, le moniteur de débogage est fourni sous forme de puce ROM. qui est installé dans une prise spéciale sur la carte de développement. La carte dispose également d'une RAM pour les programmes utilisateur et d'un canal de communication avec un ordinateur ou un terminal. Un exemple est la carte de développement développée par Intel pour la famille MK MCS-51.

Dans le second cas, la carte de développement contient des systèmes de programmation intégrés pour la ROM interne du MK. qui sont contrôlés par un ordinateur. Le programme du moniteur est entré dans la ROM du MK avec l'application préparée en conséquence (les appels des routines de débogage du moniteur sont insérés aux bons endroits). Ensuite, un essai de fonctionnement est effectué. Pour apporter des corrections au programme en cours de débogage, il est effacé de la ROM et celui corrigé y est écrit. Le programme d'application terminé est obtenu à partir du programme débogué en supprimant le moniteur et tous les appels à ses fonctions. Les cartes de développement pour les MK des familles PIC-micro (Microchip), 80C750 (Philips), 89C2051 (Atmel) sont conçues pour un tel algorithme de débogage.

Les cartes de développement sont parfois équipées de programmes de débogage qui s'exécutent sur un ordinateur externe "en conjonction" avec un moniteur. Ces programmes sont récemment devenus sensiblement plus complexes et disposent souvent d'un ensemble hautement professionnel de fonctions de débogage (par exemple, un débogueur-simulateur) ou de divers éléments qui ne sont inhérents qu'aux environnements de développement intégrés dans leur forme pure. Les kits peuvent également inclure des programmes appliqués que l'on rencontre le plus souvent dans la pratique.

Les capacités de débogage du kit "carte de développement plus moniteur" ne sont pas aussi universelles que celles de l'ESS. en outre, certaines des ressources MC en cours de débogage sont sélectionnées pour que le moniteur fonctionne. Néanmoins, la disponibilité d'un ensemble complet d'outils logiciels et matériels prêts à l'emploi qui vous permettent de commencer à installer et à déboguer le système appliqué sans perte de temps est dans de nombreux cas un facteur décisif. Surtout quand on sait qu'un tel kit coûte plusieurs fois moins cher qu'un émulateur plus polyvalent.

ÉMULATEURS ROM

Un émulateur ROM est un outil logiciel et matériel qui vous permet de remplacer la ROM de l'appareil en cours de débogage par de la RAM. dans lequel vous pouvez télécharger le programme depuis votre ordinateur via l'un des canaux de communication standard. Il permet à l'utilisateur d'éviter plusieurs cycles de clignotement de la ROM. L'émulateur ROM est utilisé uniquement pour le débogage des programmes MK capables d'accéder à la mémoire de programme externe. En termes de complexité et de coût, ce dispositif est comparable aux cartes de développement. Il a un gros avantage - la polyvalence. L'émulateur ROM peut fonctionner avec n'importe quel MK.

Les premiers émulateurs ROM permettaient uniquement de charger, d'exécuter et d'arrêter un programme à l'aide d'une réinitialisation générale. Ensuite, il y avait des modèles compliqués avec génération matérielle de signaux de trace vers l'oscilloscope lorsqu'il atteignait une certaine adresse. La mémoire émulée de ces produits était disponible pour visualisation et modification, mais le contrôle des registres de contrôle internes du MK était jusqu'à récemment impossible.

Récemment, des émulateurs de ROM dits intelligents sont apparus. Ils vous permettent de "regarder" à l'intérieur du MC sur la carte utilisateur et sont similaires dans le contrôle de débogage au VSE.Cactus présente même son émulateur de ROM réellement intelligent comme le VSE de la série MK, il est donc impossible de faire la distinction entre travailler avec un et l'autre En fait, le processeur dans ce cas n'est pas remplacé, et celui sur les frais d'utilisation est utilisé.

L'émulateur ROM intelligent est un hybride de l'émulateur ROM normal. un moniteur de débogage et un système permettant de basculer rapidement le bus de l'un à l'autre. Cela crée l'effet comme si le moniteur de débogage était installé sur la carte de l'utilisateur, et en même temps, il ne prend pratiquement pas de ressources matérielles du MK, à l'exception d'une petite zone (environ 4 Ko) d'étapes logicielles. Un tel émulateur a été développé, par exemple, par la société Fiton pour tous les MK existants et futurs dotés du cœur 8051, mais qui sont en outre saturés de divers périphériques d'entrée / sortie. Le produit prend en charge de nombreux MC différents de Philips, Siemens. OK JE.

ENVIRONNEMENTS DE DÉVELOPPEMENT INTÉGRÉ

Strictement parlant, les environnements de développement intégrés ne font pas partie des outils de débogage, cependant, il serait faux d'ignorer cette classe d'outils logiciels qui facilitent et accélèrent grandement le processus de développement et de débogage des systèmes à microprocesseur.

Avec l'approche traditionnelle, l'étape initiale d'écriture d'un programme est construite comme suit. Le texte source est saisi à l'aide d'un éditeur de texte. Une fois la saisie terminée, le travail avec l'éditeur de texte s'arrête et le compilateur croisé démarre. En règle générale, un nouveau programme contient des erreurs de syntaxe et le compilateur les signale à la console opérateur. Ensuite, l'éditeur de texte est redémarré, et l'opérateur recherche et élimine les erreurs identifiées. Dans le même temps, les messages sur leur nature, affichés par le compilateur, ne sont plus visibles, puisque l'écran est occupé par un éditeur de texte.

Ce cycle peut se répéter plus d'une fois. Et si le programme est relativement complexe, est assemblé à partir de différentes parties, est sujet à édition ou modernisation, alors même cette étape initiale peut nécessiter beaucoup d'efforts et de temps de la part du programmeur.

Pour éviter une grande quantité de travail de routine et ainsi augmenter considérablement la productivité d'un programmeur, les environnements de développement dits intégrés (shells) de développement (Integrated Development Environment IDE) qui sont apparus et gagnent rapidement en popularité permettent.

En règle générale, un bon environnement intégré combine les outils de débogage disponibles (émulateur en circuit, simulateur de logiciel, programmeur) et fournit au programmeur des textes de programme de style "Turbo".

L'environnement intégré permet :

  • utiliser l'éditeur de texte multi-fichiers intégré, spécialement conçu pour travailler avec les textes sources du programme ;
  • observer simultanément (en mode multi-fenêtres) les diagnostics des erreurs détectées lors de la compilation et le texte source du programme, disponible pour édition ;
  • travailler sur plusieurs projets en parallèle. Le gestionnaire de projet vous permet d'utiliser n'importe quel projet comme modèle pour un projet nouvellement créé. Les options des compilateurs utilisés et la liste des fichiers source du projet sont définies dans les menus de la boîte de dialogue et enregistrées dans le projet, éliminant ainsi le besoin de travailler avec des fichiers batch peu pratiques ;
  • recompiler uniquement les modules édités ;
  • charger le programme en cours de débogage dans les outils de débogage disponibles et travailler avec eux sans quitter le shell ;
  • connecter au shell presque n'importe quel logiciel.

Récemment, les fonctions des environnements de développement intégrés sont devenues partie intégrante des interfaces de programmation des émulateurs et débogueurs-simulateurs les plus "avancés". Une telle fonctionnalité, combinée à une interface conviviale, accélère considérablement le travail du programmeur.

Ainsi, lors du choix des outils de débogage, il est conseillé de prendre en compte l'ensemble d'indicateurs suivant : la liste des microcontrôleurs supportés, les restrictions sur les ressources des microcontrôleurs émulés/simulés, la possibilité de débogage symbolique, la liste des compilateurs supportés, et, enfin, les capacités de service.

Auteurs : Yu.Zobnin, Sh.Kobakhidze, Moscou

Voir d'autres articles section microcontrôleurs.

Lire et écrire utile commentaires sur cet article.

<< Retour

Dernières nouvelles de la science et de la technologie, nouvelle électronique :

Machine pour éclaircir les fleurs dans les jardins 02.05.2024

Dans l'agriculture moderne, les progrès technologiques se développent visant à accroître l'efficacité des processus d'entretien des plantes. La machine innovante d'éclaircissage des fleurs Florix a été présentée en Italie, conçue pour optimiser la phase de récolte. Cet outil est équipé de bras mobiles, lui permettant de s'adapter facilement aux besoins du jardin. L'opérateur peut régler la vitesse des fils fins en les contrôlant depuis la cabine du tracteur à l'aide d'un joystick. Cette approche augmente considérablement l'efficacité du processus d'éclaircissage des fleurs, offrant la possibilité d'un ajustement individuel aux conditions spécifiques du jardin, ainsi qu'à la variété et au type de fruits qui y sont cultivés. Après avoir testé la machine Florix pendant deux ans sur différents types de fruits, les résultats ont été très encourageants. Des agriculteurs comme Filiberto Montanari, qui utilise une machine Florix depuis plusieurs années, ont signalé une réduction significative du temps et du travail nécessaires pour éclaircir les fleurs. ...>>

Microscope infrarouge avancé 02.05.2024

Les microscopes jouent un rôle important dans la recherche scientifique, car ils permettent aux scientifiques d’explorer des structures et des processus invisibles à l’œil nu. Cependant, diverses méthodes de microscopie ont leurs limites, parmi lesquelles la limitation de la résolution lors de l’utilisation de la gamme infrarouge. Mais les dernières réalisations des chercheurs japonais de l'Université de Tokyo ouvrent de nouvelles perspectives pour l'étude du micromonde. Des scientifiques de l'Université de Tokyo ont dévoilé un nouveau microscope qui va révolutionner les capacités de la microscopie infrarouge. Cet instrument avancé vous permet de voir les structures internes des bactéries vivantes avec une clarté étonnante à l’échelle nanométrique. En général, les microscopes à infrarouge moyen sont limités par leur faible résolution, mais le dernier développement des chercheurs japonais surmonte ces limitations. Selon les scientifiques, le microscope développé permet de créer des images avec une résolution allant jusqu'à 120 nanomètres, soit 30 fois supérieure à la résolution des microscopes traditionnels. ...>>

Piège à air pour insectes 01.05.2024

L'agriculture est l'un des secteurs clés de l'économie et la lutte antiparasitaire fait partie intégrante de ce processus. Une équipe de scientifiques du Conseil indien de recherche agricole et de l'Institut central de recherche sur la pomme de terre (ICAR-CPRI), à Shimla, a mis au point une solution innovante à ce problème : un piège à air pour insectes alimenté par le vent. Cet appareil comble les lacunes des méthodes traditionnelles de lutte antiparasitaire en fournissant des données en temps réel sur la population d'insectes. Le piège est entièrement alimenté par l’énergie éolienne, ce qui en fait une solution respectueuse de l’environnement qui ne nécessite aucune énergie. Sa conception unique permet la surveillance des insectes nuisibles et utiles, fournissant ainsi un aperçu complet de la population dans n'importe quelle zone agricole. "En évaluant les ravageurs cibles au bon moment, nous pouvons prendre les mesures nécessaires pour lutter à la fois contre les ravageurs et les maladies", explique Kapil. ...>>

Nouvelles aléatoires de l'Archive

La conductivité du cristal est augmentée de 400 fois 23.11.2013

Les scientifiques ont accidentellement découvert que la conductivité électrique d'un cristal augmente de 400 fois s'il est exposé à la lumière - en utilisant cet effet, les physiciens peuvent augmenter considérablement la capacité et la vitesse des dispositifs de stockage ; les résultats de l'étude ont été publiés dans la revue Physical Review Letters.

Marianne Tarun de l'Université de Washington et ses collègues ont mené une étude sur le titanate de strontium. Pendant qu'ils travaillaient, ils ont remarqué que sa conductivité électrique augmentait soudainement. Au début, ils ne pouvaient pas comprendre ce qui se passait, et ce n'est qu'alors que la conductivité électrique augmentait lorsque les cristaux étaient exposés à la lumière.

Ensuite, les scientifiques ont mené une expérience: ils ont laissé les cristaux sous une lumière vive pendant 10 minutes, puis les ont retirés dans l'obscurité. Il s'est avéré que l'effet de l'augmentation de la conductivité électrique dure plusieurs jours - les chercheurs expliquent cela par le fait que la lumière libère des électrons dans le matériau, leur permettant de transporter plus de courant électrique.

Cette capacité, la soi-disant photoconductivité résiduelle, n'a rien à voir avec la supraconductivité - l'absence totale de résistance électrique, que les physiciens ne peuvent atteindre qu'à des températures proches du zéro absolu - Tarun et ses collègues ont trouvé leur effet dans des conditions normales.

"L'apparition de cet effet à température ambiante ouvre de nouvelles possibilités. Dans la mémoire informatique standard, les informations sont accumulées à la surface des puces ou des disques durs, et dans les appareils utilisant la photoconductivité résiduelle, les informations peuvent être stockées dans l'ensemble du cristal", a déclaré Matthew. McCluskey, co-auteur de l'étude, dont les propos sont cités dans un message de l'université.

Cette approche a été appelée mémoire holographique et est considérée comme un remplacement potentiel des technologies de données à haute capacité. Ainsi, si maintenant sur des supports magnétiques et optiques, les données sont enregistrées sur une ou deux couches, alors dans la mémoire holographique, elles seront enregistrées sur tout le volume de l'appareil, et la vitesse d'écriture et de lecture des informations augmentera.

Autres nouvelles intéressantes :

▪ Convertisseurs DC-DC économiques Mean Well SPA02 et SPB03

▪ L'Antarctique est ensemencé

▪ Le téléphone surveille l'enfant

▪ Nouvelle version du système de goulotte ASTRO 25

▪ Immersion totale dans la réalité virtuelle

Fil d'actualité de la science et de la technologie, nouvelle électronique

 

Matériaux intéressants de la bibliothèque technique gratuite :

▪ rubrique du site Audiotechnics. Sélection d'articles

▪ article Planteur de pommes de terre Tracer. Conseils pour le maître de maison

▪ Comment le temps était-il déterminé dans le monde antique ? Réponse détaillée

▪ article Parker. Instruction standard sur la protection du travail

▪ article Schéma de l'équipement électrique de la voiture VAZ-2107. Encyclopédie de l'électronique radio et de l'électrotechnique

▪ article Comparateurs de micropuissance série TS3V339. Encyclopédie de l'électronique radio et de l'électrotechnique

Laissez votre commentaire sur cet article :

Nom:


E-mail (facultatif) :


commenter:





Toutes les langues de cette page

Page principale | bibliothèque | Articles | Plan du site | Avis sur le site

www.diagramme.com.ua

www.diagramme.com.ua
2000-2024