L'essentiel d'Assembleur

Découvrir l'architecture 16 bits PIC24

Testez gratuitement nos 1270 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Comparez les grandes différences entre les PIC18 et les PIC24 au niveau des BUS et de la recopie mémoire (PSV). Denis Réant vous présente également Explorer 16.
07:00

Transcription

Dans cette vidéo, je vais vous présenter l'architecture 16 bits des PIC24. Alors, les PIC24 sont constitués de multiples périphériques et sont de plus en plus nombreux plus nous avançons dans le temps et de plus en plus performants. Nous avons donc plusieurs bus. Le bus qui sert aux périphériques et le bus qui est dédié à la mémoire. La mémoire programme, aussi appelée mémoire flash peut aller jusque 256 KB. Encore là maintenant, vous avez des PIC24... qui explosent complètement le compteur au niveau de la mémoire programme. Il en va de même pour la RAM ici. Et puis à l'intérieur, vous avez le corps du CPU... avec une unité arithmétique et logique sur 16 bits multipliée au hardware... et surtout un contrôleur d'interruption. Ça, c'est très important. Vous allez voir, ça va sauver la vie. Donc, voici à peu près un listing non exhaustif... des périphériques qui sont présents à l'intérieur de ce PIC24. A l'intérieur du CPU maintenant, voyons un peu ce qu'on retrouve. On retrouve notre unité arithmétique et logique, un multiplieur hardware... qui peut directement effectuer les calculs et stocker le tout en RAM. Après, vous devez repasser par le compteur de programme... qu'on retrouve ici. Notre mémoire programme qui est ici... et qui est sur un bus de 24 bits. Le contrôleur d'interruption qui est généré ici... par l'unité arithmétique et logique. Enfin, nous avons le PSV dont nous parlerons un peu plus tard. Parlons tout de suite de la mémoire programme. Ceci est extrait de la page 39 du datasheet. Ici, c'est la zone mémoire où vous allez pouvoir mettre votre programme. Elle commence à partir de l'adresse 200 et se finit un peu plus bas. Au niveau de l'organisation de la mémoire programme... pour pouvoir adresser toutes ces données, il nous faut 23 bits. Alors, ici seulement pour un problème d'alignement hardware on va dire... on va avoir un multiple de 8 en fait, 8, 16 et 32... ici, c'est implémenté, et c'est égal à 0. Donc ça, c'est en fait juste un problème de symétrie. Alors, vous n'aurez que des adresses paires là aussi, comme sur les PIC18. Au niveau de la zone RAM, vous avez les SFR comme d'habitude. Alors, vous allez voir qu'il y a une flopée de registres... pour pouvoir configurer tous nos périphériques. C'est ici que vous allez pouvoir implémenter vos données en RAM. Puis, vous avez une spécificité qui est entre ici et ici... c'est une zone mémoire accessible en un cycle instruction. En effet, des fois il est très utile, lorsqu'on fait du filtrage audio vidéo... d'accéder à ces coefficients très rapidement. Donc, on aura plutôt la possibilité de les placer dans cette zone là de la RAM. Puis après, vous avez le PSV. Qu'est-ce que le PSV ? Parlons-en tout de suite. En fait, c'est une copie de la mémoire programme... que l'on vient directement mettre dans la mémoire RAM. Pourquoi faire ça ? Simplement parce que, quand vous avez des traitements assez lourds... vous n'avez pas assez de place dans la mémoire programme... pour pouvoir tout placer au niveau de vos coefficients. Je pense aux équations récursives, etc. Des fois ça devient un peu compliqué. Donc, vu qu'on a beaucoup d'espace en mémoire programme... on va en profiter puis on va faire des copies... des morceaux de la zone mémoire programme... par le biais en fait, de PSVPAG... qu'il suffira de configurer pour obtenir la copie de la page qui nous intéresse. Alors, concernant les registres remarquables... nous avons, non pas le registre, mais les registres de travail. Notamment, les registres allant de W0 à W4... qui vont servir à la sauvegarde de contexte. Vous avez le W15, qui va permettre de sauvegarder l'adresse de la pile. Après, vous avez la possibilité, avec certains autres registres... de modifier la hauteur de la pile... mais cette fois, vous débordez sur la RAM et non plus sur la pile hardware. Vous venez empiéter sur la mémoire programme pour stocker vos données. Après, vous avez donc l'accès à l'endroit d'une page par le TBLPAG... le PSVPAG dont j'ai parlé juste avant et puis le RCOUNT. Donc un Repeat Loop qui est un peu l'équivalent d'une boucle while en C. Voyez donc qu'on arrive quand même à des fonctionnalités fort intéressantes. Au niveau de la gestion de la pile software. Comment ça se passe ? Donc, on vient se mettre dans la RAM cette fois-ci. On a une interruption, on vient faire notre sauvegarde de contexte... du PCL et de l'adresse courante. Puis, il se passe d'autres événements un call, par exemple... et puis on continue comme ça à avancer. Puis, on va mettre un push en plus. Donc on va pousser un peu tout ça. A partir de là, la pile part plus loin que l'adresse la plus haute autorisée. Donc, dans ce cas là, nous avons deux niveaux... pour sauver le compteur de programme à chaque fois... car rappelons que nous travaillons sur 32 bits... pour pouvoir tout adresser au niveau de la mémoire programme. Donc, on continue comme ça... et si on continue à un moment, on est en overflow. Donc à partir de là, on génère un reset ou une erreur... il faut gérer l’évènement. Puis, si on revient à quelque chose de pendant... on va dire on fait des pop au lieu de push... et on se retrouve en under flow et là, c'est aussi critique. On se retrouve normalement avec un reset. Alors, ce qu'est capable de faire l'unité arithmétique et logique... en un seul cycle d'instruction, par exemple... elle est capable de faire l'addition du contenu de W0... et puis, aller chercher en fait la valeur de b... l'additionner directement avec le contenu du W0 et puis le stocker en c. En fait, je viens de faire c = a + b. Ceci en une seule instruction. Vous pouvez alors travailler directement que dans les registres de travail. Pas besoin de faire appel à la mémoire RAM, donc la mémoire variable. Dans ce cas, vous faites add W0, W1, W2, puis vous faites quoi ? Vous prenez W1 et W0, vous les additionez... et vous stockez le tout dans W2. Vous obtenez donc le résultat que vous pourrez... copier après, dans la variable c, par exemple.

L'essentiel d'Assembleur

Plongez-vous dans le langage bas niveau, nommé Assembleur. Abordez les notions de jeu d'instructions, de pipeline, de registres, de mode d’adressage, de compteur de programme, etc.

4h52 (57 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :26 sept. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !