C'est un gros sujet et je ne peux pas donner de réponse simple mais ...
Vous pouvez vous rapprocher un peu plus de cette réponse en faisant des divisions et des conquêtes, et puisque l'autre réponse essaie d'attaquer ce problème d'un point de vue matériel, j'essaierai d'une vue SW de haut niveau.
Si vous écrivez un logiciel en disons du code c (un niveau d'abstraction très élevé), vous ne voyez pas vraiment ce qui se passe, vous ne comprenez pas vraiment tout ce que vous demandez.
Mais commençons par là quand même.
Un programme simple qui inclut juste une variable.
int main(void)
{
int i=0;
while(1) {
i++;
}
}
Ensuite, nous devons obtenir le code assembleur afin de comprendre ce qui se passe. Cette étape peut être effectuée sur n'importe quelle plate-forme que vous utilisez, mais pour rester simple, j'utilise gcc sur un PC (mais cela n'a pas d'importance ...)
gcc -O0 -S main.c -o main.lst
Ensuite, nous nous retrouvons avec quelque chose comme ceci:
.file "main.c"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $16, %esp
movl $0, -4(%ebp)
.L2:
addl $1, -4(%ebp)
jmp .L2
.size main, .-main
.ident "GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3"
.section .note.GNU-stack,"",@progbits
Ensuite, vous essayez de comprendre chaque ligne de code et ce qu'elle fait.
Et puis vous commencez à regarder comment chaque instruction est mise en œuvre ... Par exemple, le subl
subl $16, %esp
À ce stade, il est différent sur différentes architectures et x86, arm, pic est un peu différent ... Mais puisque mon exemple était x86.
Et à ce niveau, lorsque vous lisez la copie, la plupart des actions donneront l'impression que vous ne faites que déplacer des nombres, et dans un certain sens, c'est ce qui se passe. Nous avons un programme prédéfini que nous parcourons, ce programme est stocké dans une sorte de mémoire flash qui est généralement une sorte de logique électronique qui emprisonnera un niveau logique.
Si vous voyez une sorte de " Flip-flop " pour chaque bit, alors vous êtes un peu proche, et nous en avons besoin de beaucoup. Ici, nous commençons à trouver vos uns et vos zéros.
Ensuite, pour qu'une action se produise, nous ajoutons une logique cool qui peut transformer un nombre en un autre (le CPU lui-même).
Et puis nous suivons le programme une étape à la fois, et pour savoir où nous en sommes, nous avons un compteur de programmes (PC). Et déplacez les nombres vers l'arrière et le quatrième et stockez ceux dans une autre mémoire qui est également une sorte de grille avec des bascules.
Mais revenons à nouveau à un exemple spécifique, afin de mieux comprendre le CPU, nous pouvons jeter un œil à l' ALU et à cette image simplifiée . Lorsque vous pouvez voir que lorsque nous déplaçons des données dans ce bloc logique et sélectionnons une opération avec les broches OP, nous obtiendrons un nouveau résultat à la sortie. Que nous pouvons à notre tour revenir dans un endroit de la mémoire.
Et de maudire votre ALU dans votre partie CPU de votre MCU est bien plus complexe que celui-ci, mais il fonctionne avec le même principe de base.
À ce stade, nous pouvons en quelque sorte voir un circuit logique qui fait le "travail" d'un côté, et un certain stockage de l'autre côté. Et le stockage comprend deux parties, une pour le programme et une pour les données. Mais comment pouvons-nous réellement "bouger" alors, ceux-ci doivent être connectés d'une manière ou d'une autre ...
Et c'est là que nous connectons ces pièces avec certains un bus.
Un bus est juste quelques fils qui connectent les différentes parties ensemble, puis la logique de contrôle indique à la mémoire quelles données envoyer sur ce bus, et quelle partie du CPU qui doit écouter ces données qui ont été envoyées. Et cela se fait avec des lignes de contrôle parallèles qui activeront / désactiveront les différentes parties.
...
Donc, si vous prenez votre MCU de choix et disséquez un très petit programme, et tant que vous ne comprenez pas ce qui se passe, vous le disséquez encore plus jusqu'à ce que vous ayez un joli petit puzzle qui peut être utilisé pour créer un "MCU".
Et n'oubliez pas de lire la fiche technique de votre MCU et de voir avec quel type de pièces il a été fabriqué, comme le type de mémoire, l'alu, les bus, etc.
Espérons que cela aide un peu ???
Bonne chance