• Aucun résultat trouvé

Informatique embarqu´ee 4/16

N/A
N/A
Protected

Academic year: 2022

Partager "Informatique embarqu´ee 4/16"

Copied!
14
0
0

Texte intégral

(1)

Informatique embarqu´ee 4/16

J.-M Friedt

Informatique embarqu´ ee 4/16

J.-M Friedt

FEMTO-ST/d´epartement temps-fr´equence jmfriedt@femto-st.fr

transparents `ajmfriedt.free.fr

11 janvier 2018

1 / 14

(2)

embarqu´ee 4/16

J.-M Friedt

Les bus de communications

Communications´erielledes donn´ees : plus rapide et moins coˆuteux (SATA v.s PATA)

• Notions de bus synchrones (partage de l’horloge) et asynchrone (chaque interlocuteur a sa propre horloge).

• synchrone est g´en´eralement plus rapide mais n´ecessite un signal additionnel pour l’horloge (sauf codage Manchester – ethernet)

• asynchrone n´ecessite l’accord pr´ealable de tous les interlocuteurs sur le d´ebit de communication (baudrate)

• tr`es utilis´e comme bus local entre un microcontrˆoleur et ses p´eriph´eriques (peu de fils = r´eduction des coˆuts de cˆablage)

bus

C1 C2 C3 C4

C1 C2

2 / 14

(3)

Informatique embarqu´ee 4/16

J.-M Friedt

Les protocoles synchrones

SCK CPOL=0CPOL=1 SS

Cycle # 1 2 3 4 5 6 7 8

MISO z 1 2 3 4 5 6 7 8 z

1 2 3 4 5 6 7 8 z

MOSI z

CPHA=0

Cycle # 1 2 3 4 5 6 7 8

MISO z 1 2 3 4 5 6 7 8 z MOSI z 1 2 3 4 5 6 7 8 z

CPHA=1

Figure–Chronogramme SPI

(http://en.wikipedia.org/wiki/Image:SPI_timing_diagram.svg).

Protocole synchrone : l’horloge est explicitement distribu´ee sur le bus.

• bus asym´etrique : maˆıtre6= esclave, CS# d´esigne le(s) destinataire(s)

• version 2 fils d’un protocole synchrone : I2C (bus de donn´ees est bidirectionnel).

3 / 14

(4)

embarqu´ee 4/16

J.-M Friedt

Protocole synchrone (I

2

C, SPI)

Acc`es mat´eriel : degr´es de libert´e (´etat au repos de l’horloge, front d’´echantillonnage, ordre des bits

Impos´e dans I2C, libre dans SPI (CPHA, CPOL)

SPI s´electionne par CS#, I2C par l’adressedu destinataire (impos´ee par le mat´eriel). I2C : MSB first6= SPI : LSB ou MSB first. I2C @ ?

4 / 14

(5)

Informatique embarqu´ee 4/16

J.-M Friedt

Protocole synchrone (I

2

C, SPI)

Acc`es mat´eriel : degr´es de libert´e (´etat au repos de l’horloge, front d’´echantillonnage, ordre des bits

Impos´e dans I2C, libre dans SPI (CPHA, CPOL)

SPI s´electionne par CS#, I2C par l’adressedu destinataire (impos´ee par le mat´eriel). I2C : MSB first6= SPI : LSB ou MSB first. I2C @ ?

S 1 0 1 0 0 0 1 0 0

A 2

W#

DATA CLOCK

5 / 14

(6)

embarqu´ee 4/16

J.-M Friedt

Attention aux biblioth` eques

Exemple de code Arduino `a [1]

#i n c l u d e " W i r e . h "

#d e f i n e P C F 8 5 6 3 a d d r e s s 0 x 5 1 [ . . . ]

v o i d s e t P C F 8 5 6 3 ( )

// t h i s s e t s t h e t i m e and d a t e t o t h e ,→PCF8563

{

W i r e . b e g i n T r a n s m i s s i o n ( P C F 8 5 6 3 a d d r e s s ) ; W i r e . w r i t e ( 0 x 0 2 ) ;

[ . . . ]

Datasheet : adresses 0xA2, 0xA3 mais appel `a

i n t 8 t I 2 C w r i t e (c o n s t u i n t 8 t a d d r e s s , ,→u i n t 8 t∗d a t a , u i n t 8 t n ) {i n t 8 t d ;

i n t i ; d = I 2 C s t a r t ( ) ;

i f( ( d != 0 x 0 8 ) && ( d != 0 x 1 0 ) ){

I 2 C s t o p ( ) ;r e t u r n d ; }

TWDR=a d d r e s s ; // s e n d t h e s l a v e a d d r e s s i f ( ( d=I 2 C a c t i o n ( 0 ) ) != 0 x 1 8 ){

I 2 C s t o p ( ) ; r e t u r n d ; }

f o r( i =0; i<n ; i ++){

TWDR=(∗d a t a++) ;

i f ( ( d=I 2 C a c t i o n ( 0 ) ) != 0 x 2 8 ){

I 2 C s t o p ( ) ; r e t u r n d ; }

} I 2 C s t o p ( ) ; r e t u r n 0 ; }

[ . . . ]

#d e f i n e PCF8563 0 xA2

I 2 C w r i t e ( PCF8563 , ( u i n t 8 t ∗) t i m e , 8 ) ;

pour communiquer (0xA26=0x51 !)

[1]http://tronixstuff.com/2013/08/13/

tutorial-arduino-and-pcf8563-real-time-clock-ic/

6 / 14

(7)

Informatique embarqu´ee 4/16

J.-M Friedt

Attention aux biblioth` eques

Datasheet : adresses 0xA2, 0xA3

1 0x51=0xA2>>1

2 m´ethode Wire de Arduino [1]

appelle beginTransmission qui appelle

twi writeTo(txAddress ...)

3 twi writeTo se trouve (par exemple) `a [2] :

t w i s l a r w = TW WRITE ; t w i s l a r w |= a d d r e s s<<1 ;

⇒biblioth`eque appel´ee par Arduino fait un d´ecallage et ajoute 1 si lecture [3]

Opensource : capacit´e `a suivre le cheminement des traitements

[1]github.com/esp8266/Arduino/blob/master/libraries/Wire/Wire.cpp [2]www.libelium.com/v11-files/api/waspmote/d5/d8c/twi_8c_source.html [3]robotika.yweb.sk/skola/!Diplomovka/avr498/avr498/doc/twi__lib_8h.html dit queTWI READvaut 1 etTWI WRITEvaut 0

7 / 14

(8)

embarqu´ee 4/16

J.-M Friedt

Emulation logicielle du protocole ´

synchrone (SPI)

Pourquoi ?

• impl´ementer un mode non-support´e par le mat´eriel (e.g.

9 bits/message)

• manque de ressource mat´erielle

Exercice : impl´ementer l’envoi d’une com- mande et d’une donn´ee

`

a un ´ecran LCD Nokia

8 / 14

(9)

Informatique embarqu´ee 4/16

J.-M Friedt

Emulation logicielle du protocole ´

synchrone (SPI)

Envoi de commande/donn´ee `a un ´ecran LCD Nokia

#d e f i n e c s l o PORTB &= ˜ ( 1<<PORTB5)

#d e f i n e c s h i PORTB|= ( 1<<PORTB5)

#d e f i n e m o s i h i PORTB|= ( 1<<PORTB7)

#d e f i n e m o s i l o PORTB &= ˜ ( 1<<PORTB7)

#d e f i n e c k h i PORTC|= ( 1<<PORTC7)

#d e f i n e c k l o PORTC &= ˜ ( 1<<PORTC7) v o i d a t t e n d ( ){}// t e mp s d ’ a t t e n t e , s c k v o i d s e n d B y t e ( b o o l cmd , u8 d a t a ) {i n t k ;

c k u p ; c s l o ;

i f ( cmd==0) m o s i l o ; e l s e m o s i h i ; c k d o w n ; a t t e n d ( ) ;

c k u p ; a t t e n d ( ) ; f o r ( k =7; k>=0;k−−)

{i f ( ( ( d a t a>>k ) &0x 0 1 ) ! =0 ) m o s i h i ; e l s e m o s i l o ;

c k d o w n ; a t t e n d ( ) ; c k u p ; a t t e n d ( ) ; }

c s h i ; }

9 / 14

(10)

embarqu´ee 4/16

J.-M Friedt

Les protocoles asynchrones

0 1T t

START

1 0 0 0

2T 3T 4T 5T 6T 7T 8T

lsb msb

9T

STOP

1 0 1 0

T=1000/baud ms

Figure–Chronogramme RS232. Pour 1200 bauds,T = 833µs. En sortie du MAX232, les niveaux sont sym´etriques (±12 V)et invers´es. Protocole asynchrone :T doit ˆetre connu par les deux interlocuteurs.

RS232 : liaison point `a point (2 interlocuteurs)1

1. RS232 reste le mode privil´egi´e pour initier une connexion avec un syst`eme embarqu´e :Hack All The Things : 20 Devices in 45 Minutes, DefCon 22 (2014), `a https://www.youtube.com/watch?v=h5PRvBpLuJs

10 / 14

(11)

Informatique embarqu´ee 4/16

J.-M Friedt

Les protocoles asynchrones

0 5000 10000 15000 20000 25000 30000 35000

-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8

time (us)

signal (a.u.)

Figure–Chronogramme RS232. Pour 1200 bauds,T = 833µs. En sortie du MAX232, les niveaux sont sym´etriques (±12 V)et invers´es. Protocole asynchrone :T doit ˆetre connu par les deux interlocuteurs.

RS232 : liaison point `a point (2 interlocuteurs) 11 / 14

(12)

embarqu´ee 4/16

J.-M Friedt

Les protocoles asynchrones

3000 4000 5000 6000 7000 8000 9000 10000

-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8

time (us)

signal (a.u.)

Figure–Chronogramme RS232. Pour 1200 bauds,T = 833µs. En sortie du MAX232, les niveaux sont sym´etriques (±12 V)et invers´es. Protocole asynchrone :T doit ˆetre connu par les deux interlocuteurs.

RS232 : liaison point `a point (2 interlocuteurs) 12 / 14

(13)

Informatique embarqu´ee 4/16

J.-M Friedt

Les protocoles asynchrones

S11110110s S01010000s S00110110s

S00110110s S10100110s S00010010s

stopMSB

LSBStart

H e l l o \n

−1

−0.5 0 0.5 1

8000 9000 10000 11000 12000 13000 14000 15000 16000 17000

signal (a.u.)

time (us)

Figure–Chronogramme RS232. Pour 1200 bauds,T = 833µs. En sortie du MAX232, les niveaux sont sym´etriques (±12 V)et invers´es. Protocole asynchrone :T doit ˆetre connu par les deux interlocuteurs.

RS232 : liaison point `a point (2 interlocuteurs)

13 / 14

(14)

embarqu´ee 4/16

J.-M Friedt

Bus locaux sous GNU/Linux

lm-sensors donne acc`es aux informations du processeur et de la carte m`ere

$ sensors acpitz-virtual-0 Adapter: Virtual device

temp1: +50.4C (crit = +110.0C) temp2: +50.4C (crit = +130.0C) coretemp-isa-0000

Adapter: ISA adapter

Physical id 0: +52.0C (high = +87.0C, crit = +105.0C) Core 0: +49.0C (high = +87.0C, crit = +105.0C) Core 1: +49.0C (high = +87.0C, crit = +105.0C)

D´emonstration avec le mise en œuvre du LM74 sur Atmega32U4.

14 / 14

Références

Documents relatifs

• thread : occupe les mˆ emes ressources m´ emoire que le p` ere mais contient sa propre pile ⇒ partage de ressources mais ´ elimine les probl` emes de communication entre

2 un ´ emulateur permet de connaˆıtre l’´ etat interne du processeur et de pr´ evenir l’utilisateur d’erreurs ...

• Pourquoi un syst` eme d’exploitation : un scheduler, un gestionnaire de m´ emoire (multitˆ ache), une couche d’abstraction suppos´ ee cacher le mat´ eriel au programmeur,

• m´ emoire mat´ erielle : une adresse sur le bus d’adresse pour identifier un p´ eriph´ erique. • chaque p´ eriph´ erique d´ ecode le bus d’adresse pour savoir si le

• N´ ecessit´ e de connaˆıtre la version et la configuration du noyau courant : uname -a. • N´ ecessit´ e de connaˆıtre l’emplacement des sources du noyau

Plusieurs tˆ aches g` erent une mˆ eme donn´ ee ⇒ risque d’incoh´ erence Trois m´ ethodes pour prot´ eger une donn´ ee :. • s´

• Partant de l’exemple de module avec timer en /dev, impl´ ementer une m´ ethode read qui se d´ ebloque ` a intervalles de temps r´ eguliers (utiliser un mutex). • Proposer

• depuis le CPU (Linux) : pilote noyau pour communiquer avec les p´ eriph´ eriques. • description de la configuration mat´ erielle par le m´ ecanisme des devicetree consult´ e par