[Serial] Après plus de dix ans de développement électronique, je vais regarder en arrière et voir à travers le MCU avec tout le monde !

1f4dd5b556310bcf8c4550191d65f45a.jpeg

"Après plus de dix ans de développement de micro-ordinateurs à puce unique, je regarde en arrière sur les micro-ordinateurs à puce unique de ma taille actuelle, ce qui peut être considéré comme sans espoir."

Ce que Zhennan veut introduire ensuite est le "modèle d'architecture de micro-ordinateur à puce unique", qui est détaché de tout type spécifique de puce de micro-ordinateur à puce unique ( 我感觉我要成仙), et il a une forte universalité. Presque tous les microcontrôleurs, ou processeurs ARM, DSP et haut de gamme suivent ce modèle. En d'autres termes, plusieurs éléments majeurs de ce modèle sont nécessaires.

Voir à travers MCU

Modèle de processeur

CPU, c'est-à-dire l'unité centrale de traitement, "c'est le cœur du système informatique, occupe la position suprême et dispose de droits de gestion et de contrôle absolus", comme le montre la figure 1.6.

208ac1544ba620a943931aafb0326bf2.png

Figure 1.6 Le CPU occupe la position centrale dans le système informatique

Les tâches principales du processeur sont 执行指令, par exemple, le calcul de la somme de deux nombres, la lecture et l'écriture de registres, l'exploitation du bus pour lire et écrire la mémoire, etc. 每一个CPU都有自己事先设计好的一套指令集, ou système d'instructions, chaque instruction accomplit une opération et une fonction spécifiques. Mais les jeux d'instructions n'existent pas dans le vide, 每条指令必然都对应着一套电路. Lorsque le CPU exécute une instruction, le circuit correspondant fonctionne réellement. Par conséquent, l'excellence des performances d'un processeur dépend en partie de la richesse du jeu d'instructions, de la puissance de la fonction d'instruction et de la puissance et de l'efficacité du circuit d'instruction.

En termes de complexité, les jeux d'instructions CPU sont principalement divisés en deux types : 复杂指令集(CISC)与精简指令集(RISC). La plupart des processeurs embarqués sont RISC, ce qui se reflète dans le nombre d'instructions : moins d'instructions, moins de circuits correspondants, ce qui peut réduire considérablement la difficulté de conception du processeur et réduire la consommation d'énergie ; D'une part, cela se manifeste dans le niveau de fonction du instruction : l'instruction elle-même n'est généralement pas adaptée à la mise en œuvre de fonctions trop complexes, ce qui rend l'efficacité d'exécution de l'instruction relativement élevée. CISC est différent (x86 est le jeu d'instructions CISC le plus classique), il possède un grand nombre d'instructions (il y en a environ 300 au moins, et même plus de 500, alors que RISC ne dépasse généralement pas 100), et les fonctions des instructions sont relativement puissants. Cela signifie que le processeur utilisant le jeu d'instructions CISC est très difficile dans la conception de circuits et que le cycle de développement est relativement long. Mais il est hors de portée de RISC en termes de fonction et de performances (le travail effectué par une instruction CISC peut nécessiter plusieurs instructions RISC pour être terminé). "C'est pourquoi les processeurs d'instruction CISC sont principalement utilisés dans les systèmes informatiques tels que les grands serveurs et les stations de travail."

b5c372458d65bbeb9c01053c5e99704a.jpeg

En fait, CISC et RISC ne sont produits que pour répondre à des besoins différents, ils ne s'opposent pas l'un à l'autre, mais pour se promouvoir et apprendre l'un de l'autre. Certaines instructions RISC ont commencé à être ajoutées au CISC, et certains processeurs avec des instructions CISC sont également apparus dans le domaine intégré. Un nouveau type de processeur qui combine les jeux d'instructions doubles CISC et RISC sera la tendance de développement future.

Ce qui précède est une brève introduction de Zhennan au jeu d'instructions CPU. En fait, il existe certaines technologies clés étroitement liées au jeu d'instructions, telles que le pipeline, la prélecture d'instructions, l'exécution dans le désordre, etc., qui rendent les performances du processeur plus amélioré (Zhennan a travaillé à l'Intel China Research Institute au début, principalement à la recherche de cette technologie, il a donc été profondément touché). Cependant, Zhennan ne l'expliquera pas ici, et les lecteurs intéressés peuvent l'étudier par eux-mêmes.

Jusqu'à présent, de nombreuses personnes m'interrogent encore sur les principes de base de l'informatique, l'architecture système, la composition matérielle, etc. l'apprendre au début ?" Qu'en est-il des études en informatique ?" Je comprends en fait que beaucoup de gens sont un peu aveugles lorsqu'ils postulent à l'examen d'entrée à l'université.

Quelle est l'essence de la commande? Est-ce que a=0 en langage C ? est-ce que MOV est en langage d'assemblage ? Non, les instructions que vous voyez ne sont que l'expression d'instructions. "L'instruction est essentiellement une séquence binaire d'une certaine longueur (telle que 0101111010101010 ou 1011010111011011, etc.)." Une fois que le CPU a reçu l'instruction, "d'abord, le circuit de décodage d'instruction en sépare l'opcode et l'opérande", comme indiqué dans Figure 1.7 (Prenez l'instruction MOV de 51 comme exemple pour illustration).

0669efc247808253143ed8643e65a307.png

Figure 1.7 Décodage des codes d'instruction

01110100 est l'instruction 74H, et sa fonction est de transférer l'opérande suivant (00010000, soit 10H) dans le registre A (accumulateur en 51 CPU). Si cette instruction est exprimée en langage assembleur, il s'agit de MOV A, #10H. Après traduction par l'assembleur, il s'agit du code d'instruction 16 bits de la figure ci-dessus. "La proposition du langage assembleur est uniquement d'encapsuler le plus instructions binaires primitives du processeur.Utilisez des balises faciles à mémoriser, telles que MOV, ADD, INC, etc. exécution."

Zhennan imagine souvent comment les gens saisissaient les instructions dans le processeur au début du processeur - "bande de papier perforée", comme le montre la figure 1.8.

07831e7984c626a5478639822a8b0912.png

Figure 1.8 Les gens utilisent du ruban adhésif pour percer des trous afin d'entrer des instructions dans le CPU

Avant la génération du langage d'assemblage, la préparation des instructions du programme était entièrement manuelle. 人们将编好的若干条指令通过纸带打孔方式输入到CPU中,让它可以依次执行,最终完成整个计算任务(Les « trous » et les « pleins » sur la bande représentent les 1 et les 0). En un sens, la "bande papier" est le langage de programmation de première génération et le "langage d'assemblage" est le langage de programmation de deuxième génération. Ce sont tous les langages les plus proches des instructions CPU, nous les appelons donc "langages de bas niveau". Enfin, le langage C a été produit, qui est très proche du langage naturel (l'anglais) que nous, les humains, utilisons tous les jours, ce qui signifie qu'il est loin des instructions du processeur. Il nécessite un compilateur spécial pour le prétraitement, l'analyse sémantique, la compilation, etc. pour générer du code intermédiaire (assemblage), puis un assemblage, une connexion, etc. supplémentaires pour obtenir le code d'instruction exécutable par le CPU. donc,C语言被称为“高级语言”。

Pour résumer, 我们可以认为CPU就是一个取指令执行的机器c'est la fonction principale et le travail du CPU. Mais l'architecture du CPU n'est pas si simple, 如何协调取指令的过程,防止出错?指令存储在哪里?CPU如何从存储器中取出指令?nous devons avoir une compréhension approfondie de ces questions, sinon le langage C et les micro-ordinateurs à puce unique ne peuvent pas être vraiment compétents.

modèle de mémoire

La mémoire est cruciale pour l'ensemble du système informatique : "Instructions de programme pour l'exécution du CPU, variables et données pendant l'exécution du programme..." , elles utilisent toutes la mémoire comme support. Par conséquent, dans l'application et le développement réels, les gens espèrent toujours que la capacité de RAM et de ROM de la puce de micro-ordinateur à puce unique peut être aussi grande que possible. De cette façon, plus d'instructions de code peuvent être stockées et des programmes plus grands et plus complexes peuvent être exécutés. De plus, la vitesse de lecture et d'écriture de la mémoire elle-même est devenue l'un des plus gros goulots d'étranglement des performances du processeur. Une description plus vivante est présentée à la figure 1.9.

664e439d9dbf194d87f842f3af6e848d.png

Figure 1.9 Le CPU récupère les instructions de la mémoire et stocke les variables et les données

ROM, c'est-à-dire mémoire morte, "c'est-à-dire que le contenu qui y est stocké ne peut pas être directement modifié par le CPU " . (Habituellement, seul un programmeur dédié peut être utilisé pour modifier les données qu'il contient, mais maintenant, certaines nouvelles puces de micro-ordinateur monopuce peuvent déjà modifier les données ROM pendant le fonctionnement du processeur, cette technologie s'appelle "IAP") Par conséquent, la ROM est généralement utilisée. pour solidifier et stocker les codes d'instructions du programme et certaines données qui n'ont pas besoin d'être modifiées, telles que les polices, les polices, les constantes, etc.

Contrairement à la ROM, la RAM est lisible et inscriptible, elle est donc appelée mémoire de lecture-écriture aléatoire. Pendant le processus d'exécution du processeur, toutes les données de la RAM peuvent être lues, écrites et modifiées. C'est la base physique de l'implémentation sous-jacente des instructions d'affectation en langage C, telles que "int a; a=0", ce qui signifie écrire une valeur de 0 sur une certaine unité de stockage dans la RAM. Mais si c'est "code int a; a=0", une erreur sera signalée lors de la compilation. (Le mot clé de code est utilisé dans le langage C du micro-ordinateur monopuce 51 pour indiquer que l'emplacement de la "variable" est dans la ROM. La même définition utilise const sur l'ARM.) De plus, la vitesse de lecture et d'écriture de La RAM est beaucoup plus rapide que celle de la ROM (c'est 所以CPU在运行程序的时候,通常都会把一些代码指令拷贝到RAM中来,尤其是那些会被频繁执行的部分le segment .text en langage C, c'est-à-dire le segment de code). Mais la RAM est généralement beaucoup plus chère que la ROM (vous devriez avoir une perception macro de ce point, un disque 16G U ne coûte que 10 yuans, mais les clés USB coûtent des centaines de dollars), c'est pourquoi les fabricants utilisent des puces de micro-ordinateur à puce unique. raison pour laquelle le ratio de RAM est très avare, et le ratio de ROM est légèrement généreux.

Afin de mieux expliquer le contenu suivant, tout le monde doit être clair sur la mémoire, qui relève également du bon sens : elle est composée de plusieurs unités de stockage avec des adresses consécutives, comme le montre la figure 1.10.

c2a7c0c249724a80ff00eef3598c5fc8.png

Figure 1.10 La mémoire est composée d'unités de stockage avec des adresses consécutives

D'une manière générale, "la mémoire est un conteneur d'instructions et de données, et elle est solidaire du CPU" , ce qui permet à l'ensemble du système informatique de fonctionner normalement. À ce moment, une question extrêmement importante se pose : "Comment le processeur récupère-t-il avec précision les instructions et les données de la mémoire, et comment écrit-il des données dans la mémoire ?" Cette question est simple à dire, mais c'est une technologie clé étendue - "bus"!

modèle d'autobus

Si la CPU est considérée comme une "capitale impériale" et la mémoire comme une "Acropole", s'ils veulent communiquer entre eux, il faut construire des routes, et cette route peut continuer à étendre des embranchements et relier de nombreuses villes en série. . Ainsi, "il est possible de passer entre deux villes. Cette "route", c'est le bus !", comme le montre la figure 1.11. (Ces "villes" connectées sont comme les "périphériques CPU" dont Zhennan parlera plus tard).

ed0c5e3a0cfc32a4bcee47d0ce6f554f.png

Figure 1.11 Modèle structurel du bus

Eh bien, maintenant il y a ce chemin entre le CPU et la mémoire. A ce moment, si le CPU veut lire un octet à l'adresse addr dans la mémoire, que doit-il faire ? Ce processus est principalement divisé en trois étapes : (Avez-vous pensé à "combien d'étapes y a-t-il pour mettre un éléphant dans un réfrigérateur ?")

  1. Le CPU indique d'abord à la mémoire l'adresse à lire ;

  2. Attendez que la mémoire récupère les données à l'adresse correspondante ;

  3. Le CPU récupère les données.

be4c6a1ace305f56d8b8bb294f4b9d81.jpeg

Une illustration plus vivante est présentée à la figure 1.12.

1486aa5750c0449236211648b4283460.png

Figure 1.12 Le processus principal d'accès du CPU à la mémoire

Si l'on y réfléchit bien, la réalisation de ce processus implique en réalité plusieurs enjeux : CPU如何将地址给存储器? CPU如何知道存储器已将数据准备好? CPU又如何将数据取走?... En résumé, il s'agit principalement de la transmission d'adresses et de données, ainsi que de la coordination et du contrôle entre elles. Pour résoudre ce problème, nous proposons ce modèle, voir Figure 1.13.

9ebf30e1321ada1c6e30edbba1294654.png

Figure 1.13 Modèle de bus entre CPU et mémoire (données de lecture)

Le câblage vu sur l'image est le fil réel utilisé pour transmettre des signaux binaires (0 ou 1). Le processeur envoie d'abord l'adresse au bus d'adresse (évidemment, le nombre de lignes d'adresse détermine la plage d'espace que le processeur peut adresser), puis définit le signal RD sur 0 (RD est généralement 1), (le nombre de lignes de données détermine le 告诉存储器地址已经给出,请准备好数据并将其输出到数据总线上CPU Le débit de données, qui est aussi une mesure du nombre de bits du CPU, 51单片机是8位单片机,则它每次只能读到一个字节的数据,ARM是32位的,所以它可以一次性读取一个字). La CPU lit le bus de données, puis définit le signal RD sur 1, et l'ensemble du processus est terminé.

Comment le CPU écrit-il des données dans la mémoire ? En fait, la raison est la même, comme le montre la figure 1.14.

fd29fcf38fcb4b644fcdf481fd762f0c.png

Figure 1.14 Modèle de bus entre CPU et mémoire (données d'écriture)

C'est toujours le CPU qui donne d'abord l'adresse, puis donne les données à écrire sur le bus de données, puis met le signal WR à 0, indiquant à la mémoire que l'adresse et les données sont prêtes, veuillez les traiter. Enfin, réglez le signal WR sur 1. Pour résumer, il existe trois bus principaux dans le CPU : le bus d'adresse, le bus de données et le bus de contrôle. Ce modèle se termine comme le montre la figure 1.15.

e984e54ed1ddc47868ee959577e44f7d.png

Figure 1.15 Modèle de bus entre CPU et mémoire

Si nous dessinons un diagramme schématique du niveau de chaque signal de bus changeant avec le temps pendant le processus d'accès au processeur, cela ressemblera à ceci, comme le montre la figure 1.16.

85c1d1702c9cba78eb2f3613f92444c7.png

Figure 1.16 Chronogramme du fonctionnement du bus CPU

La figure ci-dessus est le chronogramme (Timing Digram) du fonctionnement du bus CPU. C'est la forme la plus intuitive pour décrire la synchronisation d'interface et les protocoles de signal. "La compréhension du diagramme de synchronisation est la base fondamentale pour nous d'apprendre l'électronique et la technologie à puce unique, et d'utiliser le langage C pour écrire correctement le pilote sous-jacent."

dfacd11bb3d7f4716e39c82d7e6bd8da.jpeg

Modèle périphérique

Nous savons déjà comment le CPU lit et écrit la mémoire à travers le bus, nous savons aussi que la largeur du bus d'adresse détermine l'espace d'adressage du CPU, et la largeur du bus de données détermine le nombre de bits du CPU (le quantité de données pouvant être lues et écrites à la fois). Le bus de contrôle affecte la vitesse d'accès à la mémoire dans une certaine mesure (plus le temps où WR et RD sont à 0 est court, plus la vitesse d'accès à la mémoire est rapide, et bien sûr la vitesse d'accès à la mémoire la vitesse doit suivre). Avec le processeur et la mémoire, et le bus qui les relie, cela suffit pour créer un système informatique complet et fonctionnel. "Nous pouvons y mettre des algorithmes à exécuter, mais le micro-ordinateur à puce unique (processeur intégré) n'est pas seulement utilisé pour le calcul, son plus grand rôle est de contrôler" (ainsi l'abréviation anglaise de micro-ordinateur à puce unique est MCU, c'est-à- dire , unité de microcontrôleur, unité de microcontrôle). IO est l'interface de contrôle la plus directe et la plus couramment utilisée. Nous pouvons le régler sur 1 ou l'effacer pour produire un niveau haut ou bas, afin de réaliser le contrôle de circuits ou de mécanismes externes.

Expliquez la confusion de Zhennan à un niveau plus basique : "Comment le langage C a-t-il un impact sur le monde physique ?"

Dans la figure 1.6, avec le CPU comme cœur, outre la mémoire (RAM et ROM), il y a de nombreux contrôleurs autour de lui, tels que des contrôleurs IO, des contrôleurs de port série, etc. Ce sont les soi-disant "périphériques CPU". Les périphériques sont en fait des circuits utilisés pour réaliser une fonction spécifique. Ces circuits doivent être contrôlés par le CPU, donc une interface spéciale (registre) est réservée dans la conception du circuit. La lecture et l'écriture de cette interface sont en ligne avec la synchronisation du bus CPU, elle peut donc être directement connectée au bus CPU et coexister avec la mémoire et d'autres périphériques (mais ils appartiennent à des plages d'adresses différentes, et le CPU lit et écrit données à ces adresses, différentes fonctions du circuit). Voir la figure 1.17 pour une illustration plus vivante.

7d4dd61a836c7a2619a0ab55c6c9f704.png

Figure 1.17 Modèle structurel des périphériques CPU

Évidemment, "L'ensemble de l'espace d'adressage du CPU (sa taille est déterminée par la largeur du bus d'adresse) n'est pas exclusivement occupé par la mémoire. La mémoire n'en occupe qu'une certaine partie, et d'autres espaces d'adressage sont alloués à divers périphériques , et More peut être réservé à une utilisation inactive." Quelqu'un peut demander : "Si tel est le cas, nous pouvons connecter le circuit que nous avons créé au bus CPU pour étendre les périphériques pour le CPU." C'est vrai, tant que la puce CPU passe le bus Lorsque les broches externes sont ouvertes, nous pouvons brancher notre propre circuit et laisser le CPU accéder directement au contrôle, comme brancher un écran LCD avec une interface 8080. (Les xdata de 51 et le FMC de STM32 sont des exemples du cœur du processeur ouvrant le bus au monde extérieur, et vous verrez plus tard quelques exemples d'application astucieux du bus externe du micro-ordinateur monopuce).

MCU fonctionne

"D'accord, avec le processeur, la mémoire, le bus et les périphériques, nous les emballons organiquement ensemble, puis faisons sortir les signaux de chaque périphérique, bus, alimentation et masse à travers les broches. Il s'agit d'un micro-ordinateur monopuce complet. Puce . Attendez, il semble qu'il manque quelque chose pour faire fonctionner le microcontrôleur ? Oui, il y a une horloge !"

système d'horloge

Si les éléments mentionnés ci-dessus ne sont que la coque de la puce du micro-ordinateur monopuce, alors 时钟就是在其中流动的血液和跳动的脉搏. L'horloge est cruciale pour le microcontrôleur, c'est la motivation de tout le système. 它是否稳定、是否精确、是否高速都直接影响了单片机中所有电路的运作, y compris CPU, bus, périphériques, etc. Une horloge est essentiellement un signal carré, comme le montre la figure 1.18.

5bcf73e8a0a0ba9edfb84f27b7d8ec09.png

Figure 1.18 L'horloge joue un rôle vital dans le microcontrôleur

Certaines personnes disent: "Puisque la vitesse de l'horloge détermine la vitesse du micro-ordinateur monopuce, tant que la fréquence d'horloge est augmentée autant que possible, les performances du micro-ordinateur monopuce peuvent être améliorées!" En principe, c'est vrai, mais en raison de nombreux facteurs, tels que les caractéristiques des matériaux semi-conducteurs, le processus de fabrication des puces, etc., de sorte que la fréquence d'horloge ne peut pas être augmentée sans limite (un signal d'horloge à fréquence trop élevée entraînera le circuit de la puce unique micro-ordinateur fonctionne anormalement, et le problème se produit principalement dans l'intégrité du signal). Voir la figure 1.19 pour une explication à ce sujet.

96e3f65a0b3b2f7eb7c0cc68ee2bfe5a.png

Figure 1.19 Une fréquence d'horloge trop élevée entraînera une intégrité du signal compromise

Pour le dire plus clairement, c'est comme si 人的心跳不能太快, sinon, le sang serait décédé avant d'avoir pu envoyer de l'oxygène et des nutriments à divers tissus. Dans le même temps, les vaisseaux sanguins ne peuvent pas transporter une pression artérielle et une vitesse sanguine aussi élevées, ce qui conduit finalement à un trouble du fonctionnement global du corps humain. Au contraire, le rythme cardiaque ne peut pas être trop lent, sinon le sang ne pourra pas non plus terminer le travail de transport des fournitures ( 单片机的时钟过慢可能无法满足我们的应用需求,所以实际应用过程中,选取一个合适的工作时钟是非常重要的).

Mais encore une fois, nous espérons vraiment que le microcontrôleur fonctionnera aussi vite que possible, comme certains algorithmes en temps réel avec beaucoup de calculs, l'acquisition de signaux, l'enregistrement et la lecture audio et vidéo, etc. Par conséquent, d'innombrables ingénieurs et scientifiques travaillent pour améliorer les performances matérielles, augmenter la fréquence d'horloge, améliorer le niveau de technologie de traitement et même essayer de nouveaux matériaux semi-conducteurs ou améliorer la structure des circuits. Mais malgré cela, la fréquence d'horloge aura toujours un plafond insurmontable. Et on constate que plus l'horloge est rapide, plus la consommation d'énergie est importante lorsque le circuit fonctionne. Ces dilemmes et la recherche constante de hautes performances et d'une faible consommation d'énergie ont conduit au développement de puces CPU dans le sens du multicœur (la fréquence d'horloge n'est plus augmentée, mais les performances globales sont améliorées en augmentant le nombre de cœurs CPU dans la puce).

Zhennan a dit plus haut que plus l'horloge est rapide, plus la consommation d'énergie est élevée. Il n'est pas difficile de comprendre que la consommation d'énergie doit être minimale lorsque le circuit ne fonctionne pas ; une fois qu'il commence à fonctionner avec une horloge, la consommation d'énergie doit augmenter. Ce principe est la base fondamentale pour réaliser une faible consommation d'énergie dans de nombreuses puces de micro-ordinateur monopuce. "Le concepteur du micro-ordinateur monopuce configure un commutateur d'horloge pour chaque circuit périphérique" (ces commutateurs sont également des registres de fonctions spéciales connectés au bus CPU, de sorte qu'ils peuvent être directement contrôlés par le CPU), afin que les périphériques puissent être contrôlé pour s'arrêter ou travailler. Cela réduit considérablement la consommation électrique globale du microcontrôleur. Il s'agit d'un nouveau concept dans certains microcontrôleurs avancés - configuration d'horloge (CC). Il peut en fait être plus puissant, "Non seulement vous pouvez désactiver l'alimentation de l'horloge d'un périphérique, mais vous pouvez également régler la fréquence de l'horloge afin que le périphérique puisse fonctionner au niveau de consommation d'énergie le plus approprié."

binaire

"Binary" est retiré comme une section distincte car il s'agit d'un concept extrêmement basique. Cependant, beaucoup de gens n'ont pas une compréhension visuelle du binaire, et même certaines personnes qui ont déjà commencé et qui ont un peu d'expérience en développement en ont encore une vague compréhension. Par conséquent, Zhennan estime qu'il est nécessaire de se concentrer sur son élaboration d'une manière plus vivante, populaire et profonde, afin de jeter des bases solides pour notre future étude.

Nous, les humains, utilisons une méthode de comptage considérée comme très naturelle depuis l'Antiquité, c'est-à-dire le système décimal. Son principe est très simple, c'est-à-dire "un décimal complet" (pourquoi c'est décimal, la cause première est que nous avons dix doigts). Si "XY" est un nombre décimal à 2 chiffres, alors dix nombres de 0 à 9 peuvent apparaître dans chacun de ses chiffres. Un certain bit est actuellement 9, s'il est +1, il reviendra à 0, et en même temps, il sera 1 à son bit supérieur. C'est ainsi que fonctionne le comptage (quelle que soit la base).

Puisque les humains sont habitués à utiliser le décimal, pourquoi utiliser le binaire dans les microcontrôleurs ? N'est-il pas mauvais de le concevoir sous forme décimale ? Dans les premiers jours de l'avènement des ordinateurs, ou parmi certains fanatiques de la technique, certaines personnes ont essayé de créer des ordinateurs d'autres bases. Mais quel que soit le système de base utilisé, les différents contenus de base du système CPU introduits par Zhennan plus tôt doivent être suivis et mis en œuvre, tels que la recherche et l'exécution d'instructions, le fonctionnement du bus, etc. Eh bien, Na Zhennan prendra un lien dans le fonctionnement du bus - "le CPU donne au bus d'adresse l'adresse de l'unité de stockage dans la mémoire à laquelle accéder" comme exemple, et l'implémentera en décimal.

Supposons que l'adresse à laquelle accéder soit (3456) 10, voir Figure 1.20.

cb4cc21325e9476f50f9a63b65312af3.png

Figure 1.20 Le CPU génère des adresses vers la mémoire en décimal

Évidemment, pour transmettre la valeur 3456 en décimal, nous devons utiliser 4 lignes d'adresse, et chaque ligne d'adresse transmet les quatre chiffres 3, 4, 5 et 6 respectivement. Osez demander à tout le monde, comment cela doit-il être transmis ? Comment une ligne peut-elle exprimer les dix nombres de 0 à 9 ? Quelqu'un a dit: "Oui! Je divise 5V en 10 parties, 0V ~ 0,5V représente 0, 0,5V ~ 1V représente 1, et ainsi de suite, 4,5V ~ 5V représente 9." Oui, très intelligent, c'est la légende Le " l'approche de l'ordinateur analogique dans Sa ligne de signal transmet des signaux de tension analogiques au lieu de signaux numériques.

Bien que l'approche ci-dessus soit possible, de nombreux facteurs empêchent les gens de le faire :

  • La réalisation du circuit est relativement difficile, et la conception du circuit analogique est beaucoup plus compliquée que celle du circuit logique de données ;

  • La vitesse de transmission n'est pas élevée et la génération, la collecte et la réception de signaux analogiques sont plus lentes que les signaux numériques.

  • La stabilité et la capacité anti-interférence sont relativement faibles et la valeur de transmission n'est déterminée que par la différence de tension de 0,5 V, qui est sujette aux erreurs.

  • La consommation d'énergie est difficile à réduire, la complexité et l'échelle du circuit analogique et d'autres facteurs condamnent sa consommation d'énergie à être relativement importante.

……

Concernant l'article 3, quelqu'un a un jour posé une question : "Je peux augmenter la tension. Je peux définir 5V comme 10V ou 20V, donc la différence de tension sera élargie ?"

Implémentons-le en mode binaire. (3456)10 converti en binaire est (110110000000)2, veuillez consulter la Figure 1.21.

1db6908c94bd1086a5260999ad5aa5b4.png

Figure 1.21 Le CPU génère des adresses vers la mémoire en mode binaire

Le binaire est un binaire complet, la conversion d'une valeur décimale en binaire augmentera le nombre de chiffres, nous avons donc besoin de plus de lignes d'adresse. Chaque bit d'un nombre binaire ne peut représenter que les deux nombres 0 et 1, ce qui correspond à l'utilisation de deux niveaux sur la ligne d'adresse, tels que 0V et 5V (en fait, il peut s'agir de 0V~2.xV signifie 0, 2 .xV~5V signifie 1). Les avantages de cela sont évidents, la difficulté de conception du circuit a beaucoup diminué et la capacité anti-interférence est relativement forte. Plus important encore, le débit de transmission du signal peut être rendu relativement élevé, et finalement les performances globales du système informatique peuvent être améliorées. De plus, le binaire permet également de réduire considérablement la consommation d'énergie de la puce, car nous pouvons définir le niveau haut comme 3,3 V, 1,8 V ou même 1,2 V. (Plus la tension de niveau haut est faible, plus le signal du microcontrôleur passe rapidement du niveau bas au niveau haut. 因此,降低电平电压将有利于时钟频率的提高。)

En résumé, tout le monde devrait avoir une meilleure compréhension de l'importance de l'utilisation du binaire dans les systèmes informatiques. Le binaire est le fondement de l'ordinateur et la base de la mise en œuvre du matériel CPU sous-jacent et de nombreux circuits associés. Par conséquent, dans de nombreux travaux de développement et de recherche liés aux micro-ordinateurs à puce unique, de nombreux concepts et applications binaires seront impliqués.

mécanisme d'interruption

Le mécanisme d'interruption est le plus important dans les systèmes à puce unique et embarqués, et nous devons le comprendre en profondeur. Tout d'abord, nous devons comprendre une chose : CPU执行指令代码,并非一直顺序地逐条执行,而是可能突然跳到某段代码上去的. Parce que la priorité de ce code est plus élevée, ou qu'il est plus urgent, le CPU doit temporairement mettre le travail en cours et l'exécuter immédiatement, sinon cela peut entraîner des conséquences néfastes, voire des accidents graves. Ce « saut soudain » est parfois prévisible, ou intentionnel par le concepteur, mais parfois il est aléatoire, et le moment précis de son apparition ne peut pas être déterminé à l'avance. C'est l'expression la plus courante d'« interruption », comme le montre la figure 1.22.

6356536e3a29ae65c42e9abd01bcdac4.png

Figure 1.22 Expression du "mécanisme d'interruption"

Certaines personnes disent : " L'interruption semble perturber le CPU. Elle interrompt toujours l'exécution normale du programme. " Oui, mais on ne peut pas dire qu'elle soit " gênante ", car l'existence d'interruptions est raisonnable et doit résoudre problèmes réels découlant du problème. Par exemple, un micro-ordinateur à puce unique fonctionne normalement et doit également recevoir des données du port série en même temps, mais il ne sait pas quand les données arriveront.Pour résoudre ce problème, nous pouvons utiliser l'interrogation du processeur méthode, c'est-à-dire, vérifiez constamment s'il y a de nouvelles données à venir, si c'est le cas, recevez-les. Le plus gros problème avec cela est de gaspiller le temps d'exécution du processeur, ce qui peut affecter l'efficacité d'exécution d'autres tâches. "Si la méthode d'interruption est utilisée, le processeur sera libéré et il pourra effectuer d'autres travaux en toute tranquillité avant qu'aucune donnée n'arrive." Le contrôleur de port série (périphérique du processeur) notifie activement le processeur après avoir reçu de nouvelles données (le processus de notification En fonction du circuit de contrôle d'interruption spécial et de la source d'interruption de la CPU), la CPU passe immédiatement au code de traitement préconçu (ISR, routine de service d'interruption) à exécuter et termine la réception et le traitement des données. Enfin, revenez au "point d'arrêt" d'origine et continuez à terminer le travail en cours.

En ce qui concerne les interruptions, il contient en fait beaucoup de contenu, comme la maintenance sur site, les vecteurs d'interruption, la priorité des interruptions, la vitesse de réponse aux interruptions, l'imbrication des interruptions, etc. Pour intégrer tout cela, nous pouvons être à l'aise dans le processus de développement proprement dit. Cependant, les interruptions sont souvent plus compliquées qu'on ne l'imaginait : si le programme principal génère une interruption lors de l'exécution séquentielle, le CPU se tourne immédiatement vers la routine de service d'interruption, puis si une interruption est à nouveau générée lors de l'exécution de la routine de service d'interruption, où le processeur va? C'est le problème à résoudre par "l'emboîtement des interruptions" mentionné ci-dessus (voici juste un bref exposé, afin que chacun puisse avoir une compréhension préliminaire).

f22b19868e1d7728e5562fc3c751a6dd.jpeg

Eh bien, ce chapitre se termine ici. Zhennan espère qu'à travers ce chapitre, tout le monde pourra comprendre fondamentalement et véritablement l'essence de l'architecture et du mécanisme de fonctionnement du processeur et du micro-ordinateur à puce unique, et établir un modèle visuel dans son esprit. Avec cette base, la compréhension de chacun des micro-ordinateurs à puce unique peut vraiment être en trois points, et l'apprentissage et la compréhension peuvent obtenir le double du résultat avec la moitié de l'effort.

"Le micro-ordinateur monopuce et le langage C ne sont en fait pas difficiles. En un sens, c'est juste un "métier spécialisé", le plus important est de "se lancer". Avec les bases et notre ingéniosité, tout le monde peut devenir un maître !"

Après une année de préparation, M. Yu Zhennan a combiné avec des années d'expérience pratique pour créer un nouveau cours systématique " Ten Days to the Top of Embedded C Language (Master C) ", avec un total de 100 conférences et un temps de classe total de plus de 2 000 minutes. Déchiffré de nombreux problèmes que vous ne connaissez pas et faites souvent des erreurs dans le langage C embarqué pour nous.

J'espère que cet ensemble de cours pourra permettre à ceux qui ont déjà commencé le langage C et qui errent encore [à mi-chemin] de passer à un autre niveau, et enfin d'atteindre le summum du langage C embarqué ! !

9c8563572f476000735873d71887ba36.jpeg

ffac56eb9b357607da72261d55b80468.jpeg

Cliquez pour lire le texte original pour vous inscrire et apprendre avec vos amis !

Je suppose que tu aimes

Origine blog.csdn.net/karaxiaoyu/article/details/131346091
conseillé
Classement