Beruflich Dokumente
Kultur Dokumente
Priphriques et langages
1 / 52
Priphriques : introduction
Quest-ce quun priphrique ? Dnition : matriel annexe, tendant les possibilits du systme Exemples : disque dur, cran, clavier, souris, carte son, modem ADSL En gnral, inutilisable sans lunit centrale (exceptions : modems intelligents) Connects lordinateur via un bus (change de donnes) et ventuellement des lignes dinterruption (signalement dun vnement)
Priphriques et langages
2 / 52
Exemples de bus
PCI : bus local , qui fonctionnait la mme vitesse que le processeur (33MHz) 32 bits ; maintenant, 133MHz 64 bits Srie : bus lent bidirectionnel un seul priphrique I2 C : bus lent avec adressage des priphrique CAN : bus peu sensible au bruit Ethernet : rapide avec gestion de collision DCC : bus lent superpos lalimentation
Priphriques et langages
3 / 52
Bus srie
Bus minimal : uniquement deux entits sur le bus Bus full duplex : les deux parties peuvent mettre en mme temps Contrle de ux logiciel (chappement) ou matriel (ls supplmentaires) Signaux logiques 1 (-12V, repos) et 0 (12V, actif)
Priphriques et langages
4 / 52
Bus I2C
SCL OUT
SDA IN
SDA OUT
Priphriques et langages
5 / 52
Un matre, des esclaves Le matre impose lhorloge chaque front haut de lhorloge, la ligne de donnes transmet un 0 ou un 1 Descendre la ligne de donnes lorsque lhorloge est haute est un start Monter la ligne de donnes lorsque lhorloge est basse est un stop
Priphriques et langages
6 / 52
Le matre envoie un start puis un mot de 8 bits : 7 bits dadresse du priphrique, 1 bit de lecture (1) ou criture (0) Le priphrique signale un ack au front suivant, en maintenant la ligne de donnes basse, sil a reconnu son adresse
Maitre SCL
SDA Start
A0
A1
A2
A3
A4
A5
A6
R/W
ACK
Maitre
Esclave
Priphriques et langages
7 / 52
Le matre prsente ladresse puis le bit R/W ltat bas Le matre transmet un ou plusieurs mots interprts par lesclave Lesclave les interprte comme il le souhaite (exemple : une adresse pour une EEPROM, ou une commande et des paramtres)
Priphriques et langages
8 / 52
Le matre prsente ladresse puis le bit R/W ltat haut Lesclave renvoie un octet Le matre transmet un ack pour lire un octet suivant, un nack pour arrter
Priphriques et langages
9 / 52
Pour eectuer une commande distante : Le matre envoie un ordre dcriture Le matre transmet des paramtres lesclave Lesclave prpare les donnes Le matre envoie un ordre de lecture Lesclave renvoie les donnes prpares
Priphriques et langages
10 / 52
Bus CAN
Vitesse variable : 1Mbps (40m) 5kbps (10km) Bus direntiel : peu sensible au bruit Messages courts (8 octets de donnes max) Diusion des messages (broadcast) Trs utilis dans le monde automobile
Priphriques et langages
11 / 52
Deux tats :
dominant : transmission dun zro (dirence de potentiel) rcessif : transmission dun un (pas de ddp, rsistance de terminaison du bus)
Au repos, ltat est rcessif Pas de retour au zro entre les bits Il sut dun lment qui impose ltat dominant pour xer cet tat au bus
Priphriques et langages
12 / 52
Un message est compos de : Data Frame : voici la donne X Remote Frame : qui a la donne X ? Error Frame : je nai pas bien compris Overload Frame : je ne suis plus
Priphriques et langages
13 / 52
Un message de donnes comprend : le champ Arbitration : 11 ou 29 bits didentiant (prioritisation possible) le champ Data : de 0 8 octets de donnes le CRC : 15 bits de somme de contrle un slot pour le ack : nimporte quel autre contrleur CAN peut dire quil a correctement reu le message
Priphriques et langages
14 / 52
Deux nuds ne doivent pas transmettre le mme champ Arbitration Chaque contrleur maintient deux compteurs :
erreurs dmission erreurs de rception
Priphriques et langages
15 / 52
Avantage : on peut ajouter nimporte quel quipement sur un des bus exploitant les informations existantes
Priphriques et langages
16 / 52
Bus Ethernet
Utilis dans les rseaux Supporte la gestion de collision En cas de collision, attente dun temps alatoire avant de retransmettre Possibilit de prioritiser en jouant sur ce temps Aucune prdictibilit possible
Priphriques et langages
17 / 52
Bus DCC
Utilis dans les modles rduits de train But : piloter indpendamment chaque locomotive Contraintes :
Ne pas tirer dalimentation supplmentaire (les locomotives ne touchent que deux rails) Ne pas utiliser de radio Permettre un pilotage indpendant des lampes
Priphriques et langages
18 / 52
La dirence de potentiel entre les voies est de 15V La polarit sinverse rgulirement Un 1 est transmis avec deux inversions de 58 microsecondes chaque Un 0 est transmis avec deux inversions de plus de 100 microsecondes chaque
Priphriques et langages
19 / 52
Les vhicules disposent de 15V en permanence Un micro-contrleur est embarqu dans chaque locomotive (en gnral un PIC) et contrle la vitesse avec un PWM Il est possible de piloter une machine analogique en plus des numriques
Priphriques et langages
20 / 52
Priphriques et langages
21 / 52
Autres bus
Bus SPI : bus srie synchrone Bus USB : bus srie avec alimentation Bus AGP :
bus PCI plus 20 signaux additionnels (132 ls) un seul matre, un seul priphrique, uniquement des entres/sorties en mmoire permet lenchanement des requtes (pipelining ) fonctionne diverses vitesse : en 8, horloge 533MHz, bande passante de 2,1Gbps, dirence de tension de 0,8V
Priphriques et langages
22 / 52
Le bus ne sut pas toujours Problme : comment tre prvenu quand un vnement a lieu sur un priphrique ? Solutions :
scruter les donnes utiliser des interruptions
Priphriques et langages
23 / 52
Permet dinterrompre la tche en cours Faible latence Routine dinterruption : minimiser les traitements eectus Pas toujours opportun : dans le cas dun microcontrleur ddi, il peut tre plus judicieux de scruter un vnement
Priphriques et langages
24 / 52
Rappel : sparation entre mode utilisateur et mode noyau Partie noyau, deux possibilits :
soit rception des interruptions et lecture des donnes du priphrique soit autorisation pour un programme en mode utilisateur daccder ces donnes
Priphriques et langages
25 / 52
Type bloc :
Disque Accs une mmoire ash
Type caractre :
Ligne srie Capteur de temprature
Priphriques et langages
26 / 52
Module PlaySkool r
#define MODULE #include <linux/module.h> MODULE_AUTHOR("Samuel Tardieu"); MODULE_DESCRIPTION("My first module"); MODULE_LICENSE("Dual BSD/GPL"); int init_module (void) { printk ("Module loading\n"); return 0; } void cleanup_module (void) { printk ("Module unloading\n"); }
Priphriques et langages
28 / 52
Test du module
% gcc -O -c playskool.c % insmod playskool.o Module loading % rmmod playskool Module unloading % modinfo playskool.o filename: ./playskool.o description: "My first module" author: "Samuel Tardieu" license: "Dual BSD/GPL"
Les macros permettent de stocker certaines informations dans une section spciale .modinfo.
Priphriques et langages
30 / 52
Chargement/dchargement
Lors du chargement, init_module est invoqu et eectue les crations de priphriques (enregistrement majeur/mineur) et enregistre les fonctions associes Lors du dchargement, cleanup_module dsenregistre les oprations et dtruit les priphriques. En protant de ces oprations automatiques, on sinsre trs facilement dans le systme.
Priphriques et langages
31 / 52
Un pilote (en mode caractre ) I2 C doit implmenter : write : envoi de caractres sur le bus I 2 C read : lecture de caractres sur le bus I 2 C ioctl : slection du priphrique et de la vitesse (stocks en donnes prives) Mme open et close ne sont pas obligatoires ; mais ils sont ncessaires pour implmenter du verrouillage.
Priphriques et langages
32 / 52
Stratgie de verrouillage
Si on crit un driver I2 C, quel est la stratgie de verrouillage adopter ? Verrouiller dans open :
Pro : pas besoin de verouillage explicite Cons : pas daccs concurrent possible
Verrouiller explicitement :
Pro : les descripteurs peuvent rester ouverts Cons : il faut verrouiller explicitement
Priphriques et langages
33 / 52
Priphriques et langages
34 / 52
Mise au point
Les techniques de mise au point disponibles sont : les traces (printk) les informations dans /proc la trace des appels systmes avec strace kdb, le dvermineur de noyau
Priphriques et langages
35 / 52
Linux temps-rel
Les priphriques sont souvent non temps-rel. Cependant, ils peuvent tre utiliss avec Linux temps-rel : un ordonnanceur temps-rel est lanc Linux est la tche de plus basse priorit tous les chargements de tches sont faits depuis Linux des les sont utilises pour la communication entre les tches temps-rel et les processus Linux
Priphriques et langages
36 / 52
Utilisation de GDB
GDB peut tre utilis distance Dans la cible, on compile une souche (stub) qui traite les commandes de GDB Sur lhte, on utilise un lien (p.e. srie) pour envoyer des commandes la cible GDB peut tre utilis pour charger un programme, on peut lutiliser comme complment de moniteur Il nest pas ncessaire de charger les symboles sur la cible
Priphriques et langages
37 / 52
Joint Test Action Group Interface pour parler la mmoire (RAM et Flash) Sert pour installer un moniteur ou pour le dverminage Priphrique en gnral install sur le port parallle Peut tre vu depuis Linux comme de la mmoire
Priphriques et langages
38 / 52
Priphriques et langages
39 / 52
Les microcontrleurs
Un microcontrleur est un microprocesseur qui incorpore des fonctions priphriques supplmentaires, par exemple : un ou plusieurs ports srie (synchrones/asynchrones) un contrleur I2 C un contrleur CAN des convertisseurs analogiques/numriques de la mmoire vive, de lEEPROM ou de la Flash
Priphriques et langages
40 / 52
Mise en veille
Les priphriques peuvent conomiser de lnergie : en se mettant en veille en se rveillant sur un vnement extrieur en mettant les priphriques dpendants de lui en veille
Priphriques et langages
41 / 52
Langages de lembarqu
Un systme embarqu peut tre de toute taille Il ny a pas un mais plusieurs langages utiliss dans le monde de lembarqu Parmi eux, on peut citer : les assembleurs, C, C++, Java, Ada, Forth
Priphriques et langages
42 / 52
Assembleur
Autant dassembleur que darchitecture Trs bas niveau Permet un contrle trs n du temps dexcution (au niveau de linstruction) Nore aucun garde-fous Nore que peu de structures complexes Toujours disponible
Priphriques et langages
43 / 52
Proche de lassembleur Na pas les avantages de lassembleur en terme de nesse Ore peu de garde-fous Ore des structures complexes Quasiment toujours disponible
Priphriques et langages
44 / 52
C++
Permet dutiliser des objets facilement Ore peu de garde-fous, mais plus que le C A en gnral un surcot associ lutilisation dobjets Souvent disponible
Priphriques et langages
45 / 52
Java
Oblige utiliser des objets Est trs peu adapt au temps-rel Cache la complexit des oprations eectues (conversion de nombre en chane) A une grosse empreinte mmoire Parfois disponible
Priphriques et langages
46 / 52
Bibliothque rduite Multi-tches rduit Aspect graphique quasi-inexistant Beaucoup plus adapt lembarqu J2ME (Mobile Edition)
Priphriques et langages
47 / 52
Ada
Permet dutiliser des objets facilement Lutilisation de mthodes nest pas coteux (une mthode nest jamais virtuelle, cest le type de ses arguments qui la rend virtuelle) Ore normment de garde-fous Cache partiellement la complexit des oprations Souvent disponible
Priphriques et langages
48 / 52
Prols permettant de dsactiver des oprations dangereuses ou coteuses Ravenscar : modle simpli de multi-tches, do des optimisations trs nombreuses sur les accs concurrents pragma No_Runtime : tout le code est certiable
Priphriques et langages
49 / 52
Forth
Permet de dvelopper un langage spcique au domaine dapplication Langage trs facile implmenter Multi-tches coopratif trs facile implmenter Nore aucun garde-fou Permet dcrire des programmes tellement simples quils nont pas de bugs Souvent disponible
Priphriques et langages
50 / 52
Calculs en virgule xe
La virgule ottante garantit une prcision relative (lie chaque nombre) En embarqu, on utilise souvent les nombres reprsents en virgule xe :
prcision garantie absolue (par exemple 1mm, lie au type) peu de nombres de grande amplitude (1mm et 10000km sur un robot ?) calculs beaucoup plus rapides (sur des entiers)
Priphriques et langages
51 / 52
Adaptation dchelle
Exemple : position dun robot, on souhaite un angle prcis 2 degrs prs. Comment stocker langle ? En degrs, en radians ou autrement ? On souhaite calculer un sinus. Comment faire ? On souhaite calculer un cosinus. Comment faire ?
Priphriques et langages
52 / 52