• Aucun résultat trouvé

Informatique embarqu´ee

N/A
N/A
Protected

Academic year: 2022

Partager "Informatique embarqu´ee"

Copied!
7
0
0

Texte intégral

(1)

Informatique embarqu´ ee

J.-M Friedt

FEMTO-ST/d´epartement temps-fr´equence [email protected]

transparents `ajmfriedt.free.fr

9 mars 2017

(2)

Probl` eme des philosophes

Programmation parcontrainte: donner les transitions autoris´ees et l’ordonnanceur se charge de trouver la solution

• N philosophes sont assis autour d’une table,

• chaque philosophe a une baguette `a sa droite et une baguette `a sa gauche,

• chaque philosophe doit se saisir de deux baguettes pour pouvoir manger,

• une fois qu’un philosophe a mang´e, il repose les baguettes qu’ils a prises.

• Deux philosophes ne peuvent pas utiliser une mˆeme baguette en mˆeme temps.

A

B

D C E

Exprimer ce probl`eme dans FreeRTOS afin qu’il trouve la solution.

2 / 7

(3)

Probl` eme des philosophes

• comment repr´esenter un philosophe ?

• comment repr´esenter une baguette ?

• comment se sortir du cas o`u tous les philosophes ont pris la baguette `a leur droite ?

Exemple de solution : eabcdzEwBy4v1xDAoc30xC2

1 tout le monde veut se jeter sur les baguettes : eabcd,

2 z prend une baguette, puis E prend 2 baguettes

3 w diam`etralement oppos´e prend une baguette, puis B deux baguettes

4 y prend une baguette

5 4 a fini de manger : e pose ses baguettes

6 v prend une baguette

7 1 a fini de manger et pose ses baguettes

8 x prend une baguette, D & A ont fini de manger et posent leurs baguettes

9 o se fait refuser sa 2`eme baguette, il repose la 1`ere

10 c recommence `a prendre 1 baguette, ...

(4)

Probl` eme des philosophes

$ qemu-system-arm -M stm32-p103 -serial stdio -kernel output/main.bin eabcdEBung

wng 4D1A03C2

qemu supportant le STM32 :

https://beckus.github.io/qemu_stm32/

Voirhw/arm: plateformestm32 p103.c

Ajouter un port s´erie :

D e v i c e S t a t e ∗u a r t 3 = DEVICE ( o b j e c t r e s o l v e p a t h (" / m a c h i n e / s t m 3 2 / u a r t [3] ", NULL ) ) ; a s s e r t ( u a r t 3 ) ;

s t m 3 2 u a r t c o n n e c t ( ( Stm32Uart ∗) u a r t 3 , s e r i a l h d s [ 0 ] , STM32 USART3 NO REMAP ) ;

4 / 7

(5)

Probl` eme des philosophes

Messages de l’´emulateur en cas d’utilisation d’un p´eriph´erique non-initialis´e

U S A R T I n i t T y p e D e f U S A R T I n i t S t r u c t u r e ; . . .

U S A R T I n i t ( USART2 , &U S A R T I n i t S t r u c t u r e ) ; USART Cmd ( USART2 , ENABLE) ;

p u t c h a r ( USART1 ,’ 0 ’) ; p u t c h a r ( USART2 ,’ 0 ’) ;

On utilise le port s´erie 1 qui n’a jamais ´et´e initialis´e⇒pas de source d’horloge ni de configuration

$ qemu_stm32/arm-softmmu/qemu-system-arm -M stm32-p103 -serial stdio -serial stdio -serial stdio -kernel main.bin qemu stm32: hardware warning: Warning: You are attempting to use the UART1 peripheral while its clock is disabled.

R00=40013800 R01=00000030 R02=008e0001 R03=00000030 R04=20004fe8 R05=08000b1c R06=00000000 R07=20004fc0 R08=00000000 R09=00000000 R10=00000000 R11=00000000 R12=0000000f R13=20004fc0 R14=08000519 R15=08000808 PSR=20000173 --C- T svc32

qemu: hardware error: Attempted to write to USART_DR while UART was disabled.

CPU #0:

R00=40013800 R01=00000030 R02=008e0001 R03=00000030 R04=20004fe8 R05=08000b1c R06=00000000 R07=20004fc0 R08=00000000 R09=00000000 R10=00000000 R11=00000000 R12=0000000f R13=20004fc0 R14=08000519 R15=08000808 PSR=20000173 --C- T svc32

FPSCR: 00000000 Aborted

(6)

Conclusion

1 un ´emulateur permet de travailler en l’absence de plateforme mat´erielle

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

3 ... sous r´eserve que les p´eriph´eriques soient ´emul´es.

ADC, DAC, timer, GPIO, USART fonctionnels pour STM32

Eclipse int`egre une ´emulation du STM32F4 :

http://gnuarmeclipse.github.io/qemu/ (STM32F4-Discovery)

6 / 7

(7)

Analyse de l’ex´ ecution de l’´ emulateur

• Fonctions de callback : un

´

ev`enement se traduit par l’appel des fonctions

impl´ementant le p´eriph´erique

• ⇒s´equence de fonctions difficile `a suivre en l’absence d’ex´ecution s´equentielle

valgrind --tool=callgrind -v \ --dump-every-bb=10000000 \ ../qemu-system-arm \ -M stm32-p103 \ -serial stdio \

-kernel temperature/main.bin

kcachegrind callgrind.out.8964

affiche le graphique des appels de fonctions et les ressources requises.

<cycle 3>

1 394 645 stm32_p103_init

19 822 014

stm32_init 19 821 825

19 821 825 (1x)

armv7m_init 5 095 033

5 095 033 (1x)

stm32_init_periph 13 288 604 10 442 330 (10x) stm32_create_uart_dev

2 974 312 2 974 312 (3x)

1 394 645 (3x) armv7m_bitband_init

1 030 962 1 030 962 (1x)

qdev_init_nofail 1 724 807 1 724 807 (1x)

qdev_init 1 724 397

1 724 397 (12x)

sysbus_mmio_map 12 689 512

sysbus_mmio_map_common 12 689 194

12 689 194 (14x) main

19 822 014 19 822 014 (1x)

12 687 829 (14x) 1 723 964 (12x)

12 689 512 (13x) 2 846 274 (3x) (below main)

19 822 014 19 822 014 (1x)

Références

Documents relatifs

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?.

embarqu´ ee 2/16 J.-M Friedt

• 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

Taille du fichier .hex intel 1 : avec stdio 80336 sans stdio 4048 sans stdio, avec une division flottante 12950 sans stdio, avec atan sur flottant 17090 avec stdio, avec une

• summon-arm-toolchain fournit un script pour g´ en´ erer un ensemble “coh´ erent” d’outils – explication de sa compilation ` a http://jmfriedt.free.fr/summon_arm.pdf. •

• 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

• 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