• Aucun résultat trouvé

Syst`emes embarqu´es 1/7

N/A
N/A
Protected

Academic year: 2022

Partager "Syst`emes embarqu´es 1/7"

Copied!
13
0
0

Texte intégral

(1)

embarqu´es 1/7 J.-M Friedt

Introduction

Syst` emes embarqu´ es 1/7

J.-M Friedt

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

transparents `ajmfriedt.free.fr

7 septembre 2017

1 / 13

(2)

embarqu´es 1/7 J.-M Friedt Introduction

Rappels

• Travail sur microcontrˆoleur : pas de processus, un programme en C converti en assembleur s’ex´ecute sur le processeur

• Unique risque de perturber l’ex´ecution s´equentielle du programme : interruptions

• Aucune abstraction, ´ecriture directe dans les registres de configuration du mat´eriel

• Aucun m´ecanisme de partage des ressources ou de protection de la m´emoire entre tˆaches

• ⇒environnements ex´ecutifs (FreeRTOS, RTEMS, NuttX) donnent l’impression de ces m´ecanismes dans un ex´ecutable statique

• Syst`eme d’exploitation (Linux) :

environnement portable avec interfaces standardis´ees (POSIX)

m´ecanismes d’abstraction du mat´eriel (pilotes,/devet/sys/bus)

notion de processus, chaque tˆache poss`ede sa m´emoire

m´ecanisme d’abstraction des plages m´emoires : MMU

2 / 13

(3)

embarqu´es 1/7 J.-M Friedt Introduction

Plan

1 Transition M1–M2 : rappels

pourquoi GNU/Linux sur syst`eme embarqu´e ?

Cross-compilation et architecture de buildroot. R´eseaux IP. Contrˆole du mat´eriel depuis l’espace utilisateur (absence d’arbitration par le noyau), lien entre m´emoire virtuelle et mat´erielle

2 Programmation en espace noyau – pilote d´edi´e et module noyau charg´e dynamiquement. Communication par l’interface/dev+ ioctl(), m´ecanismes fournis par le noyau (timer)

3 Diverses interfaces utilisateur-noyau :/dev →plateformes /sys/bus, IIO

4 Description du mat´eriel par le devicetree, acc`es aux informations depuis un module noyau, m´ecanismes fournis par le noyau (s´emaphores, tˆaches dans l’ordonnanceur)

5 Acc`es `a des ressources du FPGA depuis le processeur

6 sources de latences, applications temps-r´eel, extension Linux au temps r´eel : Xenomai

7 gestion des interruptions mat´erielles

3 / 13

(4)

embarqu´es 1/7 J.-M Friedt Introduction

Plateforme Redpitaya

• Xilinx Zynq1 : architecture mat´erielle comprenant un processeur g´en´eraliste (PS) et un FPGA (PL)

• →tirer le meilleur parti des deux architectures (interface utilisateur, r´eseau, algorithmes complexes en PS, grande bande passante et calcul parall`ele dans

PL)

• bus AXI2

• 2 ADC 125 MS/s

• 2 DAC 125 MS/s

• ADCs lents, GPIO, USART, USB, ethernet ...

1. www.xilinx.com/products/silicon-devices/soc/zynq-7000.html, concurrent de Intel/Atera SOCwww.altera.com/products/soc/overview.htmlou Microsemi/Actel SmartFusion liant FPGA et Cortex-M3

www.microsemi.com/products/fpga-soc/soc-fpgas 2. 32 bits @ 150 MHz = 1.2 GB/s

4 / 13

(5)

embarqu´es 1/7 J.-M Friedt Introduction

Plateforme Redpitaya

Connecteur E2 (1 bord de carte cot´e SATA)3

Pin Description

1 +5V

2 -3.4V (50mA)1

3 SPI(MOSI) PS MIO10 4 SPI(MISO) PS MIO11 5 SPI(SCK) PS MIO12 6 SPI(CS#) PS MIO13 7 UART(TX) PS MIO08 8 UART(RX) PS MIO09 9 I2C(SCL) PS MIO50 10 I2C(SDA) PS MIO51 11 Ext com.mode GND (default)

12 GND

13 Analog Input 0 0-3.5V 14 Analog Input 1 0-3.5V 15 Analog Input 2 0-3.5V 16 Analog Input 3 0-3.5V 17 Analog Output 0 0-1.8V 18 Analog Output 1 0-1.8V 19 Analog Output 2 0-1.8V 20 Analog Output 3 0-1.8V

21 GND

22 GND

23 Ext Adc CLK+

24 Ext Adc CLK-

25 GND

26 GND MIO connect´e au PS, EMIO au PL

3. redpitaya.readthedocs.io/en/latest/developerGuide/125-14/extent.html

5 / 13

(6)

embarqu´es 1/7 J.-M Friedt Introduction

Objectif du cours

• voir ensemble comment acc´eder depuis Linux aux ressources du FPGA (LEDs)

• n´ecessite de

cross-compiler,

acc´eder aux ressources mat´erielles depuis Linux (on commence par les LEDs connect´ees au processeur),

configurer le FPGA depuis GNU/Linux et informer le noyau des ressources requises

maıˆıtriser les divers interfaces entre espaces noyau et utilisateur de Linux

• vous refaites sur le convertisseur analogique-num´erique (XADC)

6 / 13

(7)

embarqu´es 1/7 J.-M Friedt Introduction

Rappel des commandes utiles et architecture r´ eseau

• Modules noyau :lsmod,insmod,rmmod,modprobe, modules dans /lib/modules

• syst`eme :dmesg, uname

• r´eseau4:ifconfig,route, DNS dans/etc/resolv.conf, NFS dans/etc/exports

⇒mount IP:source dest

eth0

Redpitaya 192.168.2.200

eth0

Redpitaya 192.168.2.200

eth0

Redpitaya 192.168.2.200

PC passerelle eth0

internet

eth1

PC

interface 2 interface 1 eth0

192.168.2.1

eth1

PC

interface 2 interface 1 eth0

192.168.2.1

eth1

PC

interface 2 interface 1 eth0

192.168.2.1

192.168.1.3 192.168.1.5 192.168.1.7

192.168.1.1

eth1

4. ssh root@192.168.2.200: pas de compte utilisateur,nobodypour serveurs

7 / 13

(8)

embarqu´es 1/7 J.-M Friedt Introduction

Acc` es au mat´ eriel depuis l’espace utilisateur

Au travers de/sys/class

• ´echange d’informations en trames ASCII

• configuration au travers du fichier appropri´e (pas de ioctl)

• particuli`erement appropri´e pour une interaction avec l’utilisateur (programmationshell)

# echo "1" > /sys/class/gpio/gpio906/value

Attention en C :fseek `a l’offset 0 enSEEK SETpour plusieurs acc`es sans refairefopen etfclose

Sur Redpitaya, indice du MIOx est 906+x

8 / 13

(9)

embarqu´es 1/7 J.-M Friedt Introduction

Rappels sur l’environnement de d´ eveloppement

Bootloader: uboot

Kernel: Linux script.bin devicetree.dtb Root filesystem applications

cross−compilation (PC) ARM

target

host

• Buildroot = environnement homog`ene pour fournir chaˆıne de compilation crois´ee, biblioth`eques, noyau et ex´ecutables

• host=PC x86, target=Redpitaya ARM

• output/host/usr/bincontient les outils pour travailler sur PC

• output/buildcontient les sources des ex´ecutables disponibles sur la cible

• dansoutput/build, le r´epertoire

linux-3f3c7b60919d56119a68813998d3005bca501a40contient le noyau

• principe duBR2 EXTERNALpour compl´eter l’archive officielle de buildroot par le support de la Reditaya

• support Redpitaya d´ecrit dans jmfriedt.free.fr/redpitaya.pdf qui s’appuie surgithub.com/trabucayre/redpitaya.git

9 / 13

(10)

embarqu´es 1/7 J.-M Friedt Introduction

M´ emoire virtuelle/m´ emoire mat´ erielle

M´emoire mat´erielle

• 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 message lui est destin´e

• un seul p´eriph´erique par adresse physique (sinon, conflit) M´emoire virtuelle

• chaque processus a sa plage d’adresses

• organisation de la m´emoire ind´ependante des contraintes physiques

• chargement dynamique des ex´ecutables et biblioth`eques associ´ees

• MMU : traduction entre m´emoire mat´erielle et virtuelle

Organisation virtuelle (processus) Organisation physique (CPU)

Page 3 Page 2 Page 1

Page N 4096

page & 0x00..0fff page & 0xff..f000

Page 3 Page 2 Page 1

Page N 4096

page & 0x00..0fff page & 0xff..f000

10 / 13

(11)

embarqu´es 1/7 J.-M Friedt Introduction

Acc` es au mat´ eriel depuis l’espace utilisateur

Au travers de/dev/mem

• avantage : ne pas passer par le noyau (rapide)

• inconv´enient : ne pas passer par le noyau (pas de gestion de l’acc`es aux ressources)

#i n c l u d e <f c n t l . h>

#i n c l u d e <s y s /mman . h>

#d e f i n e MAP SIZE 4096UL // MMU p a g e s i z e

#d e f i n e MAP MASK ( MAP SIZE−1) // mask

i n t main (i n t a r g c , c h a r ∗∗a r g v ) { i n t f d ; v o i d map base , v i r t a d d r ; u n s i g n e d l o n g r e a d r e s u l t , w r i t e v a l ;

o f f t t a r g e t =0x 1 2 3 4 5 6 7 8 ; // p h y s i c a l @

f d = o p e n (" / dev / mem ", O RDWR | O SYNC ) ; // MMU a c c e s s m a p b a s e=mmap ( 0 , MAP SIZE , PROT READ | PROT WRITE , \

MAP SHARED , f d , t a r g e t & ˜MAP MASK) ; v i r t a d d r =m a p b a s e +( t a r g e t & MAP MASK) ; // v i r t . @ r e a d r e s u l t =∗((u n s i g n e d l o n g ) v i r t a d d r ) ; // r e a d mem p r i n t f (" 0 x % X (% p ) : 0 x % X \ n ", t a r g e t , v i r t a d d r , r e a d r e s u l t ) ; // ( ( u n s i g n e d l o n g ∗) v i r t a d d r ) = w r i t e v a l ; // w r i t e munmap ( map base , MAP SIZE ) ; c l o s e ( f d ) ; r e t u r n 0 ;

} 11 / 13

(12)

embarqu´es 1/7 J.-M Friedt Introduction

Outil devmem

• Prototypage rapide de l’acc`es aux registres du processeur

• Mis `a disposition parbusybox5

• Utilisation

Read/write from physical address ADDRESS Address to act upon WIDTH Width (8/16/...) VALUE Data to be written

5. $BUILDROOT/output/build/busybox-1.27.1/miscutils/devmem.c

12 / 13

(13)

embarqu´es 1/7 J.-M Friedt Introduction

Mise en pratique

• Deux LEDs sont connect´ees `a MIO0 et MIO7 : les faire clignoter depuis le shell au travers de/sys/class/gpio

• Compiler un programme affichant “Hello World” et l’ex´ecuter sur Redpitaya (connexionsshet montagenfs)

Buildroot se trouve dans

/home/jmfriedt/buildroot-2017.05.2: exporter lePATH

• Identifier dans la documentation technique6 les registres n´ecessaires

`

a configurer ces GPIOs, et proposer un programme en C pour faire clignoter ces LEDs. Quelles op´erations effectuer sur les GPIOs pour les rendre fonctionnels ?

• Commander l’allumage/extinction des LEDs par une page web (serveurboasur Redpitaya).

• Int´egrer la commande des LEDs dans un serveur TCP/IP (socket

→bind→listen→ { accept→recv/send→close})

6. www.xilinx.com/support/documentation/user_guides/

ug585-Zynq-7000-TRM.pdf

13 / 13

Références

Documents relatifs

Toutefois, l’int´egration des ´equations n’est pas toujours possible et dans ce cas, l’utilisation de constantes du mouvement permet tout de mˆeme une description partielle

– Il ne peut y avoir plus d’un processus dans sa section critique en mˆeme temps – Un processus en dehors de sa section critique ne peut bloquer un autre

• Alternative au temps r´ eel : le mat´ eriel reconfigurable se charge des op´ erations rapides et d´ echarge le processeur de tˆ aches imm´ ediates (UART, FIFO, ADC du coldfire

La capture d’´ ecran de droite propose une ex´ ecution de ce code dans l’´ emulateur de ZXSpectrum (aussi sur un Z80, mais avec une carte m´ emoire un peu diff´ erente de la

• 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

Notion de syst` eme embarqu´ e Architecture des processeurs Mat´ eriel v.s logiciel Rappels de C Les microcontrˆ oleurs 8 bits G´ en´ eralit´ es sur les syst` emes num´ eriques

Droite : montage exp´ erimental pour la caract´ erisation de la limite de d´ etection (en haut, SMC100A utilis´ e comme source de porteuse modul´ ee en fr´ equence) et le bruit de

L’approche consistant ` a modifier le pointeur vers la fonction impl´ ementant un appel syst` eme est tellement ´ evidente que les d´ eveloppeurs du noyau Linux essaient de brider