• Aucun résultat trouvé

Informatique embarqu´ee 1/16

N/A
N/A
Protected

Academic year: 2022

Partager "Informatique embarqu´ee 1/16"

Copied!
22
0
0

Texte intégral

(1)

Introduction

Informatique embarqu´ ee 1/16

J.-M Friedt

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

transparents `ajmfriedt.free.fr

11 janvier 2018

1 / 22

(2)

Introduction

Plan des cours

16 s´eances/3 h

1 registres de config d’un uC, lecture de datasheet, cross compilation, bootloader, flasher, description de l’architecture d’un microcontrˆoleur et p´eriph´eriques

application sur ATMega32 (AVR), optimisations du C

2 C pour microcontroleurs : volatile, tailles de variables, optimisations, C v.s asm, acces aux registres, *(type*)addr=val ;, interruptions, description degccet

´

etapes de compilation

application aux p´eriph´eriques mat´eriels & interruptions de ATMega32 3 protocoles de communication synchrones/asynchrones, bus locaux

4 du 8 au 32 bits : exploitation de biblioth`eques, et en particulier libc, implications sur les ressources ; conversion analogique-num´erique et traitement du signal

cr´eation de sa toolchain ARM Cortex+newlib pour STM32 (stubs) 5 Environnements ex´ecutifs FreeRTOS/NuttX/RTEMS/TinyOSTP

FreeRTOS/RTEMS sur STM32

6 Linux sur un systeme embarqu´e : ordonnanceur, TCP/IP, syst`eme de fichiers ...

buildroot, exploitation du mˆeme programme sur ARM et PC, aspects utilisateur

7 unix sur syst`eme embarqu´e, aspects d´eveloppeur, MMU et acc`es au mat´eriel

kernel module, gestion des interruptions, m´ethodes mises `a disposition par le noyau (mutex/s´emaphore, tasklet)

8 concept de temps-r´eel, maˆıtrise des latences introduites par l’ordonnanceur, extension RT de Linux

Expos´e d’un binˆome: 10 minutes+5 minutes (5-6 transparents)

2 / 22

(3)

Introduction

Introduction

1 qu’est-ce qu’un microcontrˆoleur ?

2 comment appr´ehender un nouveau microcontrˆoleur ? lecture d’une datasheet

3 quels outils pour travailler sur un microcontrˆoleur ?

Quelques exemples de syst`emes embarqu´es grand public.

3 / 22

(4)

Introduction

Introduction

1 qu’est-ce qu’un microcontrˆoleur ?

2 comment appr´ehender un nouveau microcontrˆoleur ? lecture d’une datasheet

3 quels outils pour travailler sur un microcontrˆoleur ?

Quelques exemples de syst`emes embarqu´es (Renesas), et choix des composants num´eriques associ´es.

4 / 22

(5)

Introduction

Qu’est-ce qu’un microcontrˆ oleur ?

• une unit´e de calcul – unit´e arithm´etique et logique – charg´ee de d´ecoder des instructions et de les appliquer sur des op´erandes

p.4 deww1.microchip.com/downloads/en/DeviceDoc/

Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf 5 / 22

(6)

Introduction

Qu’est-ce qu’un microcontrˆ oleur ?

• une unit´e de calcul – unit´e arithm´etique et logique – charg´ee de d´ecoder des instructions et de les appliquer sur des op´erandes

Architecture du processeur 8-bits Atmega 32U4 6 / 22

(7)

Introduction

Qu’est-ce qu’un microcontrˆ oleur ?

• des p´eriph´eriques, souvent int´egr´es au sein de la mˆeme puce (compteur, g´en´erateur de signaux de communication ...)

Architecture du processeur 8-bits Atmega 32U4 7 / 22

(8)

Introduction

Qu’est-ce qu’un microcontrˆ oleur ?

• en entr´ee : alimentation,horloges(circuit synchrone), tensions de r´ef´erence

Architecture du processeur 8-bits Atmega 32U4 8 / 22

(9)

Introduction

Qu’est-ce qu’un microcontrˆ oleur ?

• en sortie : des signaux num´eriques (0/1=mass/alimentation) ou analogiques, des signaux p´eriodiques

Architecture du processeur 8-bits Atmega 32U4 9 / 22

(10)

Introduction

Qu’est-ce qu’un microcontrˆ oleur ?

• interaction avec le monde ext´erieur au travers de bus de communication

Architecture du processeur 8-bits Atmega 32U4 10 / 22

(11)

Introduction

Qui fait quoi ? les registres

Liaison entre ALU et les p´eriph´eriques : adressage

• bus de donn´ees : quoi

• bus d’adresse : qui

• bus de contrˆole : comment

11 / 22

(12)

Introduction

Qui fait quoi ? les registres

Comment connaˆıtre la position de chaque registre et sa fonction ?

12 / 22

(13)

Introduction

Qui fait quoi ? les registres

Comment connaˆıtre la position de chaque registre et sa fonction ?

Ladatasheetfournit la description compl`ete du processeur. Ici, Atmel,8-bit Microcontroller with 16/32K Bytes of ISP Flash and USB Controller – ATmega16U4 & ATmega32U4, disponible `a ww1.microchip.com/downloads/en/DeviceDoc/

Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf

13 / 22

(14)

Introduction

Masques

1 OU : mettre les bits `a 1 (∀ OU 1 = 1)

2 ET : mettre les bits `a 0 (∀AND 0 = 0)

3 fabriquer le masque du ET : !(1N) met des 1 sur tous les bits sauf le N`eme

4 XOR : intervertir les bits (X XOR 1 = !X alors que X XOR 0 = X)

Tables de v´erit´e :

OR 0 1

0 0 1

1 1 1

AND 0 1

0 0 0

1 0 1

XOR 0 1

0 0 1

1 1 0

14 / 22

(15)

Introduction

Logiciel embarqu´ e

Absence de syst`eme d’exploitation

• le programme commence par une initialisation (pile, variables, p´eriph´eriques)

• le programme se poursuit par une boucle infinie while (1) {...}

• le processeur ne doitjamaisˆetre laiss´e sans instruction `a ex´ecuter

15 / 22

(16)

Introduction

Lien entre le logiciel et le mat´ eriel

1 tout p´eriph´erique communique avec un microprocesseur au travers de 3 bus :data,addressetcontrolLe bus prend son originedans le processeur mais est accessible `a l’ext´erieur.

SBHE#

LA23 LA22 LA21 LA20 LA19 LA18 LA17 MRDC#

MWTC#

KEY GND

SD08 SD09 SD10 SD11 SD12 SD13 SD14 SD15 M16#

IRQ10 IRQ11 IRQ12 IRQ15 IRQ14 DACK0#

DRQ0

DRQ7 DACK7#

DRQ6 DACK6#

DRQ5 DACK5#

GND

GND GND IO16#

+5

RESDRV IRQ9

−5 DRQ2

−12 ENDXFR#

+12 KEY SMWTC#

SMRDC#

DACK3#

DRQ3 DACK1#

DRQ1 CLK IRQ7 IRQ6 IRQ5 IRQ4 IRQ3

OSC TC BALE DACK2#

CHCHK#

CHRDY SA19 SA18 SA17 SA16 SA15 SA14 SA13 SA12 SA11 SA10

+5 GND SD7 SD6 SD5 SD4 SD3 SD2 SD1 SD0 AEN

SA00 SA01 SA02 SA03 SA04 SA05 SA06 SA07 SA08 SA09

IOWC#

IORC#

+5 GND GND GND

1

32 REFRESH#

A B

D C

0

19 MASTER16#

Bus PC104 (photo

http://www.arcom.com/pc104-xscale-titan.htm)

16 / 22

(17)

Introduction

Relation mat´ eriel-logiciel : ISA

#include <stdio.h>

#include <stdlib.h>

#include <sys/io.h>

int main(int argc,char **argv) {unsigned char val;

ioperm(0x378,3,1); // autorisation d’acces if (argc==1) {val=0xff;printf("%s val\n",argv[0]);}

else val=atoi(argv[1]);

outb(val,0x378);sleep(1);

}

74688

composant (ADC)

CS#

adresse carte (constante) ALE E#

P=Q#

D0−D7 74574 74138

composant2 composant3

composant4

A3−A9

A0−A2

Sch´ema g´en´erique de connection d’un composant `a un bus

Diff´erence entre Motorola et Intel : dans le premier cas tout est m´emoire, dans le second cas distinction entre in/outetmov.

17 / 22

(18)

Introduction

P´ eriph´ eriques mat´ eriels : GPIO

General Purpose Input Output: entr´ee-sortie num´erique

• Unlatch, aussi appel´e GPIO, m´emorise son entr´ee sur un coup d’horloge ou un niveau de commande

• Fonction souvent partag´ee avec une autre fonctionnalit´e (`a s´electionner `a l’initialisation)

• un port aime g´en´eralementabsorberdu courant

• un port est bidirectionnel : sa direction est d´efinie par le programmeur

• un port en entr´ee doitavoir un ´etat connu. Un interrupteur ne reste pas flottant : r´esistances de tirage.

18 / 22

(19)

Introduction

P´ eriph´ eriques mat´ eriels : timers

• Un microprocesseur est un composant num´erique synchrone : base de temps cadence toutes les op´erations

• Des compteurs internes sont configur´es pour diverses tˆaches :

d´eclencher p´eriodiquement un ´ev`enement (e.g.ordonnanceur pr´eemptif de Linux (kernel/timer.c

signed long __sched schedule_timeout(signed long timeout) { struct timer_list timer;

unsigned long expire;

switch (timeout)

{case MAX_SCHEDULE_TIMEOUT:

schedule();

goto out;

default:

if (timeout < 0) {dump_stack();

current->state = TASK_RUNNING;

goto out;

} }

expire = timeout + jiffies;

setup_timer_on_stack(&timer, process_timeout, (unsigned long)current);

__mod_timer(&timer, expire, false, TIMER_NOT_PINNED);

schedule();

...

} 19 / 22

(20)

Introduction

P´ eriph´ eriques mat´ eriels : timers

• Un microprocesseur est un composant num´erique synchrone : base de temps cadence toutes les op´erations

• Des compteurs internes sont configur´es pour diverses tˆaches :

d´eclencher p´eriodiquement un ´ev`enement (e.g.ordonnanceur pr´eemptif de Linux (kernel/timer.c

d´eclencher une ´ev`enement sur un GPIO sans contrˆole explicite du logiciel (oscillation p´eriodique, largeur d’impulsion – PWM)

capturer un ´ev`enement (Input Capture) pour le dater

commander l’activation d’autres p´eriph´eriques

20 / 22

(21)

Introduction

Outils de compilation

• Toutes nos applications exploiterontgccpour convertir un code source en C vers un binaire ex´ecutable sur la cible

• la cible n’estpasbas´ee sur l’architecture x86 d’intel du PC⇒ cross-compilation

• gccest exploitable pour `a peu pr`es toutes les architectures : liste des cibles support´ees pargcc1

* Alpha

* ARM

* Atmel AVR

* Blackfin

* HC12

* H8/300

* IA-32 (x86)

* x86-64

* IA-64

* Motorola 68000

* MIPS

* PA-RISC

* PDP-11

* PowerPC

* R8C/M16C/M32C

* SPU

* System/390/zSeries

* SuperH

* SPARC

* VAX

⇒un outil unique `a maˆıtriser pour s’affranchir des limitations sur le logiciel

1. http://www.gnu.org/software/gcc/backends.html

21 / 22

(22)

Introduction

Outils de compilation

• lebootloaderse charge de r´eceptionner les octets ´emis par le PC `a destination du microcontrˆoleur et de les ´ecrire en m´emoire

• un programme sp´ecifique sur le PC fournit les donn´ees dans le format attendu (programmeur)

• binutilsfournit les outils de conversion entre formats :objdump etobjcopy

Mise en pratique Premier pas sur l’Atmega 32U4

• Outils : sous Debian/GNU Linux, paquetsavrdude,gcc-avret avr-libc

• Carte : Olimex

22 / 22

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´

Le comportement d’un appel syst` eme est similaire ` a celui que nous avons vu lorsqu’un appel POSIX est transmis ` a un pilote pour faire appel aux entr´ ees de la structure de

a une ´ epoque o` u aucun superviseur (noyau) n’impl´ ementait d’appels syst` emes logiciels – tandis que la seconde est utilis´ ee pour rediriger les appels syst` emes