Systèmes embarqués Cours 4 DSP Systèmes embarqués Sylvain Tisserant - ESIL Expression des besoins Expression des besoins (2) Traitement numérique du signal : Transformée de Fourier discrète, produit de convolution et filtres numériques Sommes de produits Flux de données élevés Arithmétique rapide Optimisation : Manipulation de données (transferts, tris, stockage, etc.) Calculs mathématiques Systèmes embarqués - S. Tisserant - ESIL - 2009 Facile à comprendre : à adapter aux flux entrant et sortant des données et à l’algorithme de traitement Arrivée des données : interruptions Précision étendue Produit de 2 fois 16 bits ⇒ 32 bits Accumulation au moins 40 bits pour éviter les débordements Accès mémoires rapides et efficaces Bus souvent le goulot d’étranglement des architectures Données consécutives ⇒ génération des adresses Transferts simultanés des deux opérandes d’un produit Deux bus de données Adaptation des cycles instruction et mémoire Données suivantes disponibles à la fin de l’instruction Systèmes embarqués - S. Tisserant - ESIL - 2009 1 Expression des besoins (3) Tampon circulaire Tampon circulaire : Filtre à réponse impulsionnelle finie (RIF) M y(n) = ∑ h(k ) x(n − k ) k =0 Les M+1 coefficients ak = h(k) sont périodiques Toujours M+1 termes dans la somme : pour chaque nouvel échantillon il faut éliminer le plus ancien ⇒ écrire le nouveau à la place du plus ancien Gestion circulaire des indices Tampon circulaire : gestion par matériel des pointeurs Boucle sans "frais additionnel" : Boucle gérée par le matériel Systèmes embarqués - S. Tisserant - ESIL - 2009 Arithmétique Systèmes embarqués - S. Tisserant - ESIL - 2009 Barrel shifter Unités MAC Multiplication et accumulation a7 Barrel Shifter Décalages de n bits en un seul cycle Utilisé pour multiplications (et divisions) Utilisé en virgule flottante pour recadrer les mantisses a5 Décalage donné par différence des exposants Virgule fixe ou flottante ? Virgule fixe : moins cher et plus rapide Virgule flottante : pour grande gamme dynamique et meilleure précision Systèmes embarqués - S. Tisserant - ESIL - 2009 b7 a6 b6 b5 a4 b4 a3 b3 a2 b2 a1 b1 a0 b0 "0" c0 c1 c2 Systèmes embarqués - S. Tisserant - ESIL - 2009 2 Barrel shifter (2) Virgule fixe & flottante a7 Virgule fixe : b7 a6 Poids 2-m pour le bit de poids le plus faible n −1 b6 a5 b5 a4 Exemple : C = 5 F b3 a2 b2 b7 b6 b5 b4 b3 b2 b1 b0 = a2 a1 a0 0 0 0 0 0 a1 b1 a0 b0 Norme IEEE 754 k =0 2m = A 2m m bits de poids faible : partie fractionnaire n-m bits de poids fort : partie entière Virgule flottante A = ± M 2E Systèmes embarqués - S. Tisserant - ESIL - 2009 = Décalage vers la gauche de 5 "0" c0 c1 c2 ∑ ak 2 k − m ∑ ak 2k k =0 b4 a3 = n−1 avec 2-1 ≤ M < 1 M : mantisse normalisée E : exposant Systèmes embarqués - S. Tisserant - ESIL - 2009 Norme IEEE 754 32 bits 1 bit de signe 0 ≡ 32 bits à 0 8 bits pour exposant en représentation biaisée (pas de confusion entre 0 et 0,5) 23 bits pour la mantisse à bit caché Mantisse dénormalisée pour v < 0.1 2-127 -127 Par ex : 0.001 2 Si 8 bits de l’exposant à 1 : M = 0 ⇔ ±∞ M ≠ 0 ⇔ NaN S exposant mantisse Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 3 Circuits de logique programmable I3 I2 I1 I0 I3 I2 I1 I0 FPGA Systèmes embarqués - S. Tisserant - ESIL - 2009 Y3 Y2 Y1 Y0 Circuits de logique programmable I1 I0 Horlorge OE Q ClK Q sortie Bloc Logique Bloc Logique D Systèmes embarqués - S. Tisserant - ESIL - 2009 Y3 Y2 Y1 Y0 Macrocellule Bloc Logique I2 Circuits de logique programmable Matrice de connection I3 Y3 Y2 Y1 Y0 Systèmes embarqués - S. Tisserant - ESIL - 2009 4 Circuits de logique programmable Bloc d'entrée/sortie FPGA Field Programmable Gate Array Configuration des connexions dans une mémoire vive (chargée à l’initialisation du système) ou dans une EEPROM ou mémoire flash Réseau de connexion programmable Bloc logique Systèmes embarqués - S. Tisserant - ESIL - 2009 Chaque bit commande une connexion Programmation VHDL, Verilog, AHDL, etc. Environnement de développement Editeur, compilateur, simulateur, chargeur, moniteur Bibliothèque de composants Microcontrôleur intégré Systèmes embarqués - S. Tisserant - ESIL - 2009 Outils de développement Environnement de développement Outre l’environnement classique de développement de code (éditeur, assembleur, compilateur, gestion de projet, etc.), on peut trouver pour un microcontrôleur : Simulateur Emulateur Moniteur Chargeur résident Application résidente en ROM, EPROM, EEPROM ou mémoire flash Au démarrage, ou après réinitialisation, le microcontrôleur lance automatiquement l’exécution du programme à une adresse fixe Aide au débogage Systèmes embarqués - S. Tisserant - ESIL - 2009 5 Simulateur Emulateur Logiciel exécuté sur plateforme de développement Dispositif matériel qui remplace physiquement le (PC) Emule le fonctionnement du microcontrôleur Permet de valider la logique du programme avec les accès aux registres et à la mémoire Par contre, ne permet pas les accès aux entrées/sorties Ne fonctionne évidemment pas aussi vite que le microcontrôleur et ne permet donc pas de tester les aspects temporels Systèmes embarqués - S. Tisserant - ESIL - 2009 microcontrôleur connecté à la plateforme de développement (RS232, JTAG, etc.) Permet l’accès aux entrées/sorties Emulateur temps-réel : si respecte les contraintes temporelles du microcontrôleur Evolution de la complexité des microcontrôleurs et grande variété des gammes ⇒ émulateurs de plus en plus couteux Possibilité de charger les EEPROM ou mémoire flash in situ ⇒ émulateurs ont disparu Systèmes embarqués - S. Tisserant - ESIL - 2009 Moniteur Moniteur (2) Programme résident en ROM du microcontrôleur Fonction désassembleur (code machine → S’exécute automatiquement en l’absence de toute autre application Activation spécifique (une des broches) Permet le dialogue avec la plateforme de développement RS232, JTAG, etc. Chargement de l’application en cours de développement en mémoire (vive ou flash) Lancement de celle-ci Débogage avec insertion de points d’arrêt et examen du contenu de registres et de la mémoire Débogage en mode pas à pas assembleur) Dialogue avec un simple terminal via une liaison RS232 Peut jouer le rôle d’un micronoyau avec une bibliothèque de sous-programmes Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 6 Chargeur résident Les langages On trouve de plus en plus dans les microcontrôleurs Assembleur un programme résident permettant la mise à jour à distance, sur le site d’utilisation, de l’application, en général en mémoire flash La communication se fait via une liaison spécialisée du type JTAG, mais on verra de plus en plus l’utilisation d’Ethernet filaire, WiFi ou même GSM Forth Java C Contraintes de programmation Limiter l’utilisation de la mémoire Performances et sûreté ⇒ programmation différente de vos habitudes Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 Assembleur Assembleur (2) Code machine Registres Compteur Ordinal (CO) ou Program Counter (PC) Registre Instruction Instructions en format binaire (un ou plusieurs mots) Constituées de plusieurs champs (action et opérandes) Décrites par la documentation du microcontrôleur (champs et timing) Impossible de programmer en langage machine Assembleur Syntaxe compréhensible à base de mnémoniques simples (add, ldr, mov, push, mul, etc.) Chaque mnémonique correspond à un type d’instruction machine Souvent chaque terme d’une instruction correspond à un champ du code machine Permet un code compact et d’exécution rapide (calculable) Très proche de l’architecture du microcontrôleur Systèmes embarqués - S. Tisserant - ESIL - 2009 Accumulateur Registres généraux Registres d’index Registres de base Registre d’état (RE), Status Register (SR) ou Processor Status Word Pointeur de pile Systèmes embarqués - S. Tisserant - ESIL - 2009 7 Jeu d’instructions Jeu d’instructions (2) Instructions de transfert ou déplacement Instructions du contrôle du déroulement en fait copie (intégrité de la source préservée) entre mémoire et registre entre registres entre cases mémoires (pas toujours disponible) Instructions arithmétiques addition, soustraction, multiplication, division, MAC Instructions logiques et de manipulations de bits jouent un rôle très important logiques : et, ou, xou, non décalages et rotations échange d’octets manipulations de bits (set, clr, tst, etc.) comparaisons sauts conditionnels (selon bits du registre d’état) ou non boucles appels à une routine (sous-programme ou fonction) Instructions d’entrée-sortie vers ou en provenance d’un périphérique en général transfert via registre ou mémoire parfois instructions spécifiques Instructions diverses gestions des interruptions contrôle du mode de fonctionnement du microcontrôleur (passage en mode basse consommation, etc.) Macros remplacent des groupes d’instructions (code source plus court, pas le code machine) Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 Exemple : une boucle Modes d’adressage Address 00FF 0100 0101 Implicite Opcodes Assembly ... 86 0F LDAA #$0F ... again . . . Immédiat Registre Direct Indirect 01F2 01F3 01F5 4A 26 101 ... DECA BNE again Systèmes embarqués - S. Tisserant - ESIL - 2009 Indexé Relatif Basé Systèmes embarqués - S. Tisserant - ESIL - 2009 8 Java Micro Edition Java Micro Edition (2) Depuis 1999, après un essai infructueux en 1998 Intérêts de Java pour l’embarqué Portabilité Homogénéité Nombreux développeurs formés : réduction des coûts Un sous-ensemble de J2SE Moins de classes Par exemple pas de classe Float ⇒ faire sans ou émuler Moins de fonctionnalités (sécurité, etc.) Parties spécifiques Modulaires Choisir ses composants Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 Architecture J2ME Configurations OS : Windows CE, Palm OS, SavaJe, Android, etc. Machine virtuelle : Spécifique aux équipements et configurations empreinte adaptée au matériel (KVM : Kilobyte Virtual Machine) CLDC : Connected Limited Device Configuration Petits équipements : téléphones portables, Palm Pilot Spécifiée par Sun et 18 entreprises Basée sur KVM à faible empreinte mémoire (Sun et propriétaires) – 160 ko CDC : Connected Device Configuration Equipements embarqués plus puissants : PDA haut de gamme, lecteur DVD, décodeurs, etc. VM classique – 32 bits – 2 Mo de RAM Pas fournie par Sun Implémentations propriétaires spectifiques et coûteuses Systèmes embarqués - S. Tisserant - ESIL - 2009 Systèmes embarqués - S. Tisserant - ESIL - 2009 9 Profil CLDC Profils CDC MIDP : Mobile Information Device Profile Foundation Profile Profil de base (gestion réseau, authentification, etc.) Profil CLDC, le plus utilisé Interface utilisateur en deux couches Haut niveau Portabilité Composants d’interface utilisateur simples Bas niveau Exploitation de toutes les fonctionnalités du terminal Ecran et événements associés aux touches et système de pointage Utilisation des deux niveaux possible mais pas simultanément Cycle de vie des applications Accès aux données et stockage persistant Systèmes embarqués - S. Tisserant - ESIL - 2009 Personal Basis Profile Interfaces graphiques de base Personal Profile Interfaces graphiques évoluées CDC encore confidentiel Qu’en sera-t-il dans l’avenir ? Systèmes embarqués - S. Tisserant - ESIL - 2009 10