Sie sind auf Seite 1von 50

Systmes Embarqus: priphriques et langages

Brique ROSE Samuel Tardieu sam@rfc1149.net


cole Nationale Suprieure des Tlcommunications

Samuel Tardieu (ENST)

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)

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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)

Samuel Tardieu (ENST)

Priphriques et langages

4 / 52

Bus I2C

Bus deux ls (plus la masse) Connexion au bus en mode collecteur ouvert


VDD

SCL SDA SCL IN

SCL OUT

SDA IN

SDA OUT

Samuel Tardieu (ENST)

Priphriques et langages

5 / 52

Bus I2C : signalisation

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

Samuel Tardieu (ENST)

Priphriques et langages

6 / 52

Bus I2C : protocole

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

Samuel Tardieu (ENST)

Priphriques et langages

7 / 52

Bus I2C : criture

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)

Samuel Tardieu (ENST)

Priphriques et langages

8 / 52

Bus I2C : lecture

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

Samuel Tardieu (ENST)

Priphriques et langages

9 / 52

Bus I2C : commande bi-directionnelle

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

Priphriques et langages

11 / 52

Bus CAN : signalisation

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

Samuel Tardieu (ENST)

Priphriques et langages

12 / 52

Bus CAN : format des messages

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

Samuel Tardieu (ENST)

Priphriques et langages

13 / 52

Bus CAN : Data Frame

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

Samuel Tardieu (ENST)

Priphriques et langages

14 / 52

Bus CAN : caractristiques

Deux nuds ne doivent pas transmettre le mme champ Arbitration Chaque contrleur maintient deux compteurs :
erreurs dmission erreurs de rception

Un contrleur fautif peut se mettre hors-bus

Samuel Tardieu (ENST)

Priphriques et langages

15 / 52

Bus CAN : exemple

Dans les voitures modernes, on trouve deux bus CAN :


Un bus haute-vitesse contrlant linjection, le freinage, lABS, lESP, le tableau de bord Un bus basse-vitesse contrlant les quipements annexes (auto-radio), les lumires, les portires

Avantage : on peut ajouter nimporte quel quipement sur un des bus exploitant les informations existantes

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

Priphriques et langages

18 / 52

Bus DCC : principes

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

Samuel Tardieu (ENST)

Priphriques et langages

19 / 52

Bus DCC : avantages

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

Samuel Tardieu (ENST)

Priphriques et langages

20 / 52

Bus DCC : petits dcodeurs

Le dcodage est trs ais, les dcodeurs sont minuscules.

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

Priphriques et langages

22 / 52

Gestion des interruptions

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

Samuel Tardieu (ENST)

Priphriques et langages

23 / 52

Principe des interruptions

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

Samuel Tardieu (ENST)

Priphriques et langages

24 / 52

Priphriques sous Linux

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

Partie utilisateur : traitement des donnes Voir http://www.xml.com/ldd/chapter/book/

Samuel Tardieu (ENST)

Priphriques et langages

25 / 52

Choix dun module

Type bloc :
Disque Accs une mmoire ash

Type caractre :
Ligne srie Capteur de temprature

Compil dans le noyau ou charg dynamiquement

Samuel Tardieu (ENST)

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"); }

Samuel Tardieu (ENST)

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.

Samuel Tardieu (ENST)

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.

Samuel Tardieu (ENST)

Priphriques et langages

31 / 52

Exemple : driver I2C ?

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.

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

Priphriques et langages

33 / 52

Problmes lis aux pilotes

Si on a des crneaux trs courts gnrer :


on peut attendre dans le noyau on peut redonner la main lordonnanceur (en risquant de rater une chance)

Lallocation de mmoire est plus complique :


On peut demander allouer avec ou sans attente On peut demander des zones spciales (DMA et mmoire haute) On peut prciser quon cherche de la mmoire pour les tampons dentre-sortie

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

Priphriques et langages

37 / 52

Utilisation dun JTAG

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

Samuel Tardieu (ENST)

Priphriques et langages

38 / 52

Quand utiliser un priphrique ?

Il vaut mieux utiliser un priphrique :


pour dcharger le processeur principal pour eectuer des fonctions qui demandent un timing prcis

Il vaut mieux ne pas utiliser un priphrique :


quand le code du pilote est plus compliqu que faire le travail directement quand laccs au priphrique monopolise le processeur

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

Priphriques et langages

46 / 52

Java : prols rduits

Bibliothque rduite Multi-tches rduit Aspect graphique quasi-inexistant Beaucoup plus adapt lembarqu J2ME (Mobile Edition)

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

Priphriques et langages

48 / 52

Ada : prols rduits

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

Samuel Tardieu (ENST)

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

Samuel Tardieu (ENST)

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)

Samuel Tardieu (ENST)

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 ?

Samuel Tardieu (ENST)

Priphriques et langages

52 / 52

Das könnte Ihnen auch gefallen