Sie sind auf Seite 1von 129

SoC Architecture et Codesign

Mustapha Hamdi mfhamdi@gmail.com

IIA5 Trimestre1 2013-2014

Principaux objectifs de ce cours

cours orient Architecture et Prog

Comprendre les caractristiques , les spcificits, la


structure de systmes sur puces SoC.

Page 2

Principaux objectifs de ce cours

Cest quoi un
SoC?

Page 3

Architecture?

Comment le
programmer
?

Plan de cours

Processeurs embarqus pour SOC: Architecture ARM

Processeurs avances

Reseaux sur puces NOC , gestions dinterruptions


NVIC , Timer,

Page 4

Projet de synthese

Chap I : Processeurs embarqus pour SOC:


Architecture ARM
Mustapha Hamdi
Mustapha.hamdi@insat.rnu.tn

IIA5 Trimestre1 2014-2015

processeurs embarqus

1
2

Introduction : Varit des processeurs embarqus cisc, risc


Types de processeurs embarqus micoproc, DSP, ARM..etc

Processeurs ARM

FPGA

6
Page 6

Mmoires

Processeurs embarqus : Introduction


Varit des processeurs embarqus:

Beaucoup de processeurs embarqus sont des processeurs


de bureau : MIPS, 68K, SPARC, ARM, PowerPC

Page 7

Processeurs embarqus : Introduction

Classication des processeurs

Page 8

Processeurs embarqus : Introduction


Classication des processeurs

Page 9

Introduction aux systmes embarqus:


Composition dun systme embarqu
Un systme embarqu est un systme servant rsoudre des fonctions et des
tches spcifiques et limites.
Associ contraintes en temps rel
Souvent conu en matriel avec des parties en logiciel.
Architecture embarque

ASIC

Processeur

E/S

Mmoire
Partie matrielle

Partie logicielle
Page 10

Une partie matrielle utilise pour


la performance
Micro-processeur, contrleurs,
coprocesseurs, DSP
Mmoires
ASIC
Interfaces dentres/sorties
Une partie logicielle utilise pour sa
flexibilit
Programmes
Partition HW/SW adeqaute

Systme sur puce (SoC) base dARM


Un SoC constitue un circuit complexe qui intgre tous les lments
fonctionnels dun produit sur une mme puce.
Par exemple, des modules logiciels (DSP), des mmoires, des priphriques,
des coprocesseurs matriels (FPGA ou ASIC) et mme des modules analogiques
ou optolectroniques peuvent tous tre mis sur un mme d.
Lobjectif est diminuer au minimum le nombre de composants sur une carte
pour mettre tout sur une seule puce.

Page 11

Systme sur puce (SoC)


ARM SoC

Page 12

Exemple de SoC
NEXCOM Forays into ARM SOC
Solutions for Internet of Things

Page 13

http://www.nexcom.com/

Exemple de SoC

Low cost processors used in


a large number of
chinese Android and
Windows CE-based
devices.

Page 14

Exemple de SoC

ARM1176JZ

Page 15

SOC: BCM2835 Block Diagram

Processeurs embarqus: introduction


Processeurs CISC et RISC:
Le jeu dinstruction (Instruction Set Architecture: ISA) a une importance
capitale :
Il dtermine les instructions lmentaires excutes par le CPU.
Cest un quilibre entre la complexit matrielle du CPU et la facilit
dexprimer les actions requises
On le reprsente de manire symbolique (ex: MSP, code sur 16 bits):

mov r5, @r8 ; commentaire [R8]<-R5


ADD r4, r5 ; R5<-R5+R4

Deux classes de jeux dinstructions:


CISC: Complex Instruction Set Computer
RISC: Reduce Instruction Set Computer
Page 16

Processeurs embarqus: introduction


Processeur CISC (Complex Instruction Set Computer) :
Jeu tendu d'instructions complexes (une instruction = plusieurs oprations
lmentaires), Ex: un load, une opration arithmtique et un store
Compilation et programmation en assembleur relativement facilites, code
compact, limitation des accs mmoire
temps de dcodage et d'excution des instructions trop long
Exemples: Vax, Motorola 68000, Intel x86/Pentium
Processeur RISC (Reduced Instruction Set Computer) :
Jeu d'instructions rduit (une instruction = une opration lmentaire),
codage uniforme
Modes d'adressage simples, utilisation intensive des registres du processeur
Compilation moins facile, code moins compact, plus d'accs mmoire
(pnalisation rduite grce aux caches), mais
dcodage et excution rapides des instructions (un cycle sur architecture
pipeline)
Tous les microprocesseurs modernes utilisent ce paradigme, Exemples : :
SPARC(SUN), MIPS, ARM, PowerPC (Apple, IBM, Freescale), etc.
Page 17

Processeurs embarqus : Diffrents types de


processeurs embarqus

Micro-contrleurs
Utilis pour le contrle embarqu
Censeur, contrleurs simples
Manipule des vnements, quelques donnes mais en faible
quantit
Exemple: camscope, disque dur, appareil photo numrique,
machine laver, four micro-onde
Quelques caractristiques frquentes
Priphriques prsents sur le circuit (timer, convertisseur
analogique numrique, interface de communication), accessible
directement grce aux registres
Programme et donnes intgres au circuit
Accs direct du programmeur de nombreuses broches
du circuit
Instructions spcialises pour les manipulation de bits.
Page 18

Processeurs embarqus : Diffrents types de


processeurs embarqus

DSP: Digital Signal Processing

Utiliss pour les applications de traitement du signal


Grande quantits de donnes numrises, souvent organises en
flux
Filtre numrique sur tlphone, TV numrique, synthtiseur de
sons
Constructeurs: Texas Instrument, puis Analog Devices,
Motorola

schma de principe d'un DSP


Page 19

Mustapha.hamdi@insat.rnu.tn

Processeurs embarqus : Diffrents types de


processeurs embarqus

DSP: Digital Signal Processing : caractristiques


Bus de donnes et d'adresses spars (architecture Harvard). Souvent double
ou multiple architecture Harvard plusieurs bus de donnes spars dans
l'espace mmoire.
Instructions spciales pour oprations SIMD (Single Instruction, Multiple
Data). Une seule instruction permet d'effectuer plusieurs oprations
simultanes dans les diffrents blocs du DSP.
Seulement des processus parallles, pas de multitche. Des contraintes sont
imposes car les DSP n'ont qu'une gestion rudimentaire des interruptions
quand ils en ont une.
Peut acqurir les donnes numriques d'un convertisseur analogiquenumrique (CAN), appliquer un traitement ces donnes et les restituer au
monde extrieur grce un convertisseur numrique-analogique (CNA).
Un ou plusieurs DSP peuvent tre combins avec un microprocesseur classique
et des convertisseurs ADC et DAC sur un seul circuit rduire le cout Soc
Page 20

Processeurs embarqus : Diffrents types de


processeurs embarqus
Processeurs ARM

Processeurs dvelopps depuis les annes 1980,


maintenant par ARM Limited (http://www.arm.com/)
Dots d'une architecture relativement plus simple que d'autres familles de
processeurs, et bnficiant d'une faible consommation, les processeurs ARM sont
devenus dominants dans le domaine de l'informatique embarque, en particulier la
tlphonie mobile et les tablettes.

De nombreux systmes d'exploitation sont compatibles


avec cette architecture : Symbian S60 avec les Nokia N97
ou Samsung Player HD ; iOS avec l'iPhone et l'iPad ;
Linux, avec la plupart des distributions ou avec Android ;
Windows CE, Windows Phone 7 et le futur Windows 82 ;
le systme Playstation Vita ; ...
processeur ARM CortexTM-A9 quadricur incorpor dans la PlayStation Vita

Maintenant sont souvent assistes de puissants DSP intgrs


Page 21

Processeurs embarqus : Diffrents types de


processeurs embarqus
Processeurs ARM
Architectures rcentes :
Famille ARM9E : solutions "DSP-enhanced" (Digital Signal Processing)
Cores ARM9E et ARM9EJ-S ("Jazelle technology-enhanced")
Macrocells ARM926EJ-S, ARM946E-S, ARM966E-S, ARM968E-S et ARM996HS
Famille ARM10
Famille ARM11
Caractristiques :
Architecture RISC 32 bits
Architecture load/store : les accs en mmoire ne se font que via des instructions
load et store
Structure pipeline
ARM7 : pipeline 3 tages et ARM9 : pipeline 5 tages
Thumb mode : instructions 16 bits (fonctionnalits rduites, mais gain en
performance)
Jazelle : optimisation pour Java (JVM cble)
Page 22

Processeurs embarqus : Diffrents types de


processeurs embarqus
Processeurs ARM

* The coprocessor function implemented in hardware replaces


several software instructions.
Page 23

Processeurs embarqus : Diffrents types de


processeurs embarqus
Processeurs ARM : Java embarqu
Java optimis pour processeurs ARM
ARM Jazelle technology : Jazelle DBX (Direct Bytecode eXecution) est une
technique permettant d'executer directement du Bytecode Java dans les
architectures ARM.
Combination of high performance, low power and low cost.
A combined hardware and software solution from ARM.
ARM Jazelle technology software is a full featured multi-tasking Java Virtual
Machine (JVM)
Highly optimized to take advantage of Jazelle technology architecture
extensions available in many ARM processor cores.
Successeur: ThumbEE
jeu d'instruction particulirement adapt la gnration de code au moment
de lexcution, par compilation la vole.
Page 24

Processeurs embarqus : Arm application

SOC Broadcom BCM2835 media processor ::

Low Power ARM1176JZ-F Applications Processor


Dual Core VideoCore IV Multimedia Co-Processor
1080p30 Full HD HP H.264 Video Encode/Decode
Advanced Image Sensor Pipeline (ISP) for up to 20-megapixel cameras
operating at up to 220 megapixels per second
Low power, high performance OpenGL-ES 1.1/2.0 VideoCore GPU. 1 Gigapixel
per second fill rate.
High performance display outputs. Simultaneous high resolution LCD and HDMI
with HDCP at 1080p60
http://www.broadcom.com/products/BCM2835
Page 25

ARM
ARM SoC

Page 26

ARM
ARM SoC

Page 27

Processeurs embarqus : Programmation ARM

Modle de programmation :
Bas sur une grande quantit de registres gnralistes, qui peuvent contenir
des donnes ou des adresses:
R0 R12
R13 = Stack pointer pile
R14 = Link register (pour des instructions de branchements)
R15 = Program Counter
CPSR = Current Program Status Register (tat et mode courants)

Page 28

Processeurs embarqus : Programmation ARM

Modle de programmation :
Jeu d'instructions :
Instructions de traitement de donnes :
ADD, ADC (add with carry)
SUB, SBC (substract with carry)
AND, ORR (or), EOR (xor)
LSL (logical shift left), LSR (logical shift right), ROR (rotate right),
MUL (multiplication)

Instructions d'accs la mmoire :
LDR (load register from memory)
STR (store register to memory)

Instructions de branchements :
B (non conditionnel)
BEQ, BNE (branchement si gal, si diffrent)
BGE, BLE (branchement si , si ")
Page 29

Processeurs embarqus : Diffrents types de


processeurs embarqus

r3

mmoire

r3

mmoire

Page 30

fp #-24

fp #-16

Processeurs embarqus : Diffrents types de


processeurs embarqus
Ide:
Initialisation :
Stocker fact en mmoire avec la valeur 1
Stocker i en mmoire avec la valeur 2

1
r3
Mov: charge une entier dans un registre

mov r3, #1
str r3, [fp, #-16]

fp #-16
mmoire

@ charger r3 par 1
@ stockage 1 contenu du r3 dans fact mmoire

Pourquoi ce nest pas: str 1, [fp, #-16] ??


Str dplace le continu dun registre vers un emplacement memoire
Page 31

Code :

Initialisation
Renvoi vers le test de i<x

Multiplication
Fact=Fact*i
et
incrmentation

test de i<x
Ble .L 3
Page 32

@renvoi vers L 3 si i<x , si non la tache suivant du programme

Code :

Initialisation
Renvoi vers le test de i<x

Multiplication
Fact=Fact*i
et
incrmentation

test de i<x
Ble .L 3
Page 33

@renvoi vers L 3 si i<x , si non la tache suivant du programme

ARM ASM avec lEditeur Keil


Autres examples:
Sum= 1+2++n

Programme assembleur:

Exercice ASM

Trouver le plus grand nombre

Page 35

Mustapha.hamdi@insat.rnu.tn

Exercice ASM

Page 36

Mustapha.hamdi@insat.rnu.tn

Exercice ASM C

Interfaage entre langage C et assembleur :


Modifier le code assembleur prcdent de manier exporter le rsultat de
comparaison via une variable Compare.
Utilisez les registres r0 et r1 pour la comparaison.
Ecrire une fonction main en C permettante de sauvegarder le rsultat de
comparaison envoy par lassembleur dans une variable c.
Par exemple : int c= Compare(5,2); // c <= comparaison entre 5 et 2
Implmenter les deux codes pour le SoC STM32f4

Page 37

Exercice ASM C

Interfaage entre langage C et assembleur :

ASM

Le registre lr contient ladr du dernier rsultat.


Bx lr renvoi lad de rsultat vers le reg pc, cest un return
Le code doit sarreter ce niveau pour que pc garde la
bonne adr. Le code C reoit en retour le continu de ladr
stocke dans PC , cest le rsultat de comp.

Page 38

Exercice ASM Homework

Assembleur pour ARM Cortex M4 :


a) Donner le code assembleur pour ARM permettant de raliser
cette quation :
f(x) = 5x^2 - 6x + 8 avec x = 5.

b) Compiler sous Keil 5 pour Arm cortex M4


c) Effectuer lexecution pas pas dbogage

Page 39

Exercice ASM Homework

Page 40

C embarqu sur STM32F4

Features of the new STM32 F4 family include:


168MHz Cortex M4 Core
1.7 to 3.6V operation
Floating-point Unit
Up to 1 MBytes Flash Memory
Up to 192KBytes RAM
General Purpose DMA
Real-time clock
Up to 17 timers
Three 12-bit ADC blocks with up to 24 inputs each at 7.2 MPS in triple
Two 12-bit D/A converters
Static memory controller supports Compact Flash, SRAM, PSRAM, N
LCD parallel interface with 8080/6800 modes
Up to 140 I/O pins
- up to 136 Fast I/O at 84 MHz
- up to 138 5 Volt I/Os
Up to three I2C interfaces
Up to four USARTs
- 10.5 Mbits/sec supports ISO 7816, LIN, IrDA, modem
Up to three SPIs at 37.5 Mbits/sec
Two CAN 2.0b interfaces
USB 2.0 OTG with on-chip PHY
10/100 Ethernet MAC
On-chip temperature sensor
8- to 14-bit parallel camera interface
Packages: LQFP64, LQFP100, LQFP144, LQFP176, UFBGA176
Page 41

GPIO
Gnralits
Chaque port peut tre configur par le software en entre
ou en sortie grce un registre de configuration (32 bits).
Les ports du GPIO peuvent tre partags avec des
AFIO.

Page 42

GPIO

Output Mode Open Drain et Push-pull

Les deux transistors N et P sont activs.


Le potentiel de la broche vaut Gnd ou
Vcc. Le GPIO impose le potentiel.
Page 43

Seul le transistor N est activ.


Le port ne peut que forcer le potentiel de la
broche GND. Si linterrupteur est ouvert, le circuit
extrieur fixe le potentiel de la broche

GPIO

Output Mode Open Drain et Push-pull

Rsumons :
En mode Push-Pull, c'est le port d'E/S qui impose le
niveau logique d'une broche, que ce soit un niveau
'1' ou '0'. Il est le matre, le circuit extrieur est
l'esclave, rcepteur.
En mode Open Drain (Drain est le nom de la broche
du transistor MOS relie la broche : Drain
laiss ouvert), le port d'E/S ne peut imposer que le
niveau logique '0'. Le niveau '1' est fix par le circuit
extrieur. Le port d'E/S n'est donc pas le seul matre
du potentiel sur la broche. Le circuit extrieur l'est
aussi.
Page 44

GPIO Input Mode Floating input et Pull Down/Up


input

Quelle valeur pour la rsistance de pull-up ?


Plus la rsistance est faible, plus lintensit crot. Lintensit maximale supporte
dtermine une valeur minimale pour la rsistance.
Lorsque les transistors sont tous bloqus, ils se comportent comme des capacits
parasites et on a un circuit RC : plus R est grand plus on mettra de temps passer de
045 1, la frquence du bus impose une valeur maximale
Page

GPIO Les GPIO sur STM32

Les fonctionnalits des GPIO :


Remappage
Interruptions externes

Autres fonctions
Mcanisme de verrouillage
Set/reset de bit
Configuration analogique
Page 46

Mustapha.hamdi@insat.rnu.tn

GPIO Les GPIO sur STM32

Les ports du STM32F4


Il y a 5 ports GPIO sur le STM32 tudi,
chaque port possde 16 pins configurables via
des registres (MODER, OTYPER, OSPEEDR..)
Chaque port possde plusieurs registres :

2 registres de configuration : GPIOx_CRL et


GPIOxCRH
2 registres de donnes : GPIOx_IDR et
GPIOx_ODR
1 registre de set/reset : GPIOx_BSRR
Page 47

1 registre de reset : GPIOx_BRR


Mustapha.hamdi@insat.rnu.tn

GPIO Autres fonctions I/O (AFIO)

Page 48

Mustapha.hamdi@insat.rnu.tn

GPIO Mthodologie

Mthodologie gnrale pour raliser les programmes logiciel de couche


basse (priphrique):
1.

S'approprier le priphrique en identifiant, dans le chapitre qui


traite du priphrique tudi, sa structure, son fonctionnement, tout
en s'appuyant sur que l'on sait dj de ce type de circuit. Pour cela,
trs souvent on trouve un schma fonctionnel qui aide beaucoup.

2.

Identifier les registres qui sont ncessaires au fonctionnement du


priphrique, identifier les champs de bits dans chacun des registres
qui ont une fonction de configuration intressante pour l'application
donne.

3.

Noter en commentaire dans les fichiers .c ces informations avant


mme de commencer crire le module de la couche driver.

Page 49

GPIO Mthodologie

Documents
1.

RM0090 Reference manual, document ST qui dcrit le coeur Cortex


M4, et en particulier les instructions assembleur mais aussi les
priphriques natifs du coeur que sont le gestionnaire d'interruption,
NVIC, et le timer systme, SYSTICK , file DM00031020.pdf

2.

STM32F4DISCOVERY , datasheet , UM1472 User Manual. Shema


lectrique File: DM00039084.pdf

Page 50

GPIO Methodologie

Paramtrage assiste par MicroXplorer de ST

Fichier_gpio.c, fichier_main.c et fichier_gpio.h linking


Page 51

GPIO Mthodologie

Fichier_gpio.c
/*Configure GPIO pin */
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pin */
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);
Page 52

GPIO Mthodologie

Etude de cas : Blinky


Registres :
Direction: GPIOD->MODER

Page 53

Source : DM00039084.pdf

GPIO Mthodologie

Configuration Registers
The STM32 has four configuration registers for each of the ports.
Port mode register GPIOx_MODER
Output type register GPIOx_OTYPER
Speed register GPIOx_OSPEEDR
Pull-up/Pull-down register GPIOx_PUPDR
Each of these registers is 32-bits wide although not all of the bits are used in
all of the registers.

Page 54

GPIO Mthodologie
Port Mode Register GPIOx_MODER
This 32 bit register holds 2 bit values which defines the operation mode. The
modes allowed are:
Bit Values
00
01
10
11

Description
Input
General purpose output
Alternate function
Analog

2 bits pour config pi

2 bits pour config pin 15

2 bits pour config pin 2

GPIOD ->MODER |= (1<< 2*15); // config pin 15 en output, 2*15=30=> 01 dcal


30 fois a gauche ce qui donne 01avec 30 0 sa droite

Page 55

GPIO Mthodologie

Output Type Register GPIOx_OTYPER


This is a 32-bit register but only the lower 16 bits are used. The top 16 bits
are reserved and should not be used. This register uses a single bit for each
pin to define the output type of the pins in the port. So, bit 0 defines the
output type for pin 0, bit 1 for pin 1 etc.
Bit Value
Description
0
Push/pull output
1
Open drain output
The default reset value for all of the GPIOx_TYPER registers is 00000 0000
meaning that all ports are configured for push/pull output.

Page 56

GPIO Mthodologie

Speed Register GPIOx_OSPEEDR


This 32-bit register uses all of the bits in the register in pairs (similar to the
port mode register). The bits define the output speed of the port. The bit pairs
have the following meaning:
Bit Values
Description
00
2 MHz Low speed
01
25 MHz Medium speed
10
50 MHz Fast speed
11
100 MHz High speed on 30pF
80 MHz High speed on 15 pF
The reset value for these registers is 00000 00C0 for port B and 00000
0000 for all other registers.

Page 57

GPIO Mthodologie

Pull-up/Pull-down register GPIOx_PUPDR


This 32-bit register uses all of the bits in the register in pairs (similar to the
port mode register). The bits define pull-up / pull-down resistor mode for the
pins on a port. The bit pairs have the following meaning:
Bit Values
00
01
10
11

Page 58

Description
No pull-up or pull-down resistor
Pull-up resistor
Pull-down resistor
Reserved

GPIO Mthodologie
A more effective way of setting/resetting a bit in the output register is to use the bit
set/reset register.
Set/reset register
The set/reset register sets or resets a single bit in the output data register.
Bit Set/Reset Register GPIOx_BSSR
This is a 32-bit register and it is split into two halves, the lower 16 bits are used for
setting a bit and the upper 16 bits are used for resetting a bit. This is a write only
register; reading this register will return 00000.
Setting a bit in the lower 16-bits of this register will cause the corresponding bit in the
output data register to be set to 1.
Similarly, setting a bit in the upper 16-bits of this register will cause the corresponding
bit in the output data register to be set to 0.

Exemple:
Valeurs de sortie :
reg pour mise en On de la led rouge : GPIOD->BSRRL = 0x4000;
reg pour mise en Off de la led rouge : GPIOD->BSRRH = 0x4000;
Page 59

C embarqu: Mthodologie
Mthodologie

1) Initialisation des GPIO (General Purpose ) : dfinir


les pins utiliser, le mode Input ou output , le
type push-pull ou open drain , la frquence.
2) Fonction Delay souvent on a besoin dune
temporisation

3) Boucle while infini pour mise en veille, coute et


action si interception . Mise en veille = conomie
nergtique pour autonomie maximal.
While (1) {
Structure du code embarqu exemple :
Ecriture dans le registre de sortie :
GPIOD->BSRRL = 0x4000; mise a pour led r
delay(valeur);
GPIOD->BSRRH = 0x4000; mise a pour led r
Delay (valeur);
Break; // arrt de la boucle while si besoin
}
Page 60

GPIO Exemple
Le STM32F4 renferme 5 GPIOx chaque port contient 16
pin , chaque pin est configurable en plusieurs modes
possibles.
Le bouton est connect au Port A pin0.

Bouton user

GIOPA

Pin 0

But user

Page 61

Configuration du bouton:
void BTN_Init(void) {
RCC->AHB1ENR |= ((1UL << 0) ); /* Enable GPIOA clock
*/
GPIOA->MODER &= ~((3UL << 2*0) );
/* PA.0 is
input
*/
GPIOA->OSPEEDR &= ~((3UL << 2*0) ); /* reset du
registre OSPEEDER avant de le reprogrammer par une
nouvelle valeur */
GPIOA->OSPEEDR |= ((2UL << 2*0) ); /* PA.0 is 50MHz
Fast Speed */
GPIOA->PUPDR &= ~((3UL << 2*0) );
/* PA.0 is no
Pull up , le reste ici joue le meme role que la
reprogrammation car en tout cas on a besoin de charger
ce registre par des 0 pour configurer le pin en Pull up
*/
}

Driver extensible

main
Driver.h
Convert.asm

Driver.C

Driver extensible

Convert.s :

La conversion des tempratures seffectue selon ces formules :


C = 5 * (F - 32) / 9
F = (9 * C / 5) + 32
Vous pouvez procder comme suit :
Ecriture des tempratures Fahrenheit exemple 70 f dans le registre r0
Ecriture de la valeur convertit en dgre Celsius dans le registre r1
Ecrire la temprature en Celsius exemple 22 dans le registre r2
Ecriture de la valeur convertit en Fahrenheit dans le registre r3
Compiler le programme, fixer lerreur sil en a eu. Lancer lexcution pas par pas dbogage et observer les
contenus des registres.
Raliser des captures cran.

DAC

DAC

Mustapha.hamdi@insat.rnu.tn

ADC

Network on chip NOC


Bus : ligne de communication reliant les diffrents composants, ou le SoC et ses
priphriques

Page 66

NOC ARM

ARM1176JZ

Page 67

SOC: BCM2835 Block Diagram

NOC ARM

Bus pour systmes embarqus:


Bus AMBA: Advanced Microcontroller Bus Architecture
Conu par ARM
Permet de simplifier
lintegration au niveau
systme.

Page 68

NOC ARM

Advanced High-performance Bus (AHB) :


Bus systme rapide, synchrone, multimatre..
Advanced System Bus (ASB) :
AMBA ASB une alternative au systme AHB , utilis dans les cas
ou les hautes performances du bus AHB ne sont pas
ncessaires.
Advanced Peripheral Bus (APB)
APB (Advanced Peripheral Bus) : bus priphrique, plus lent et
de plus faible consommation (pour priphriques lents),
synchrone, matre unique..

Page 69

NOC ARM
Exemple :

Page 70

NOC ARM
Exemple :

Page 71

NOC ARM SoC smt32f4


Exemple :

Page 72

NOC ARM SoC smt32f4


Exemple :

Page 73

NOC ARM

Etude de cas
SoC stm32f407vg:
Bus AHB, GPIO, DAC

AHB1ENR 32b
MODER 32b
OSPEEDER 32b
IDR/ODR 16

GPIOx
Page 74

Communications : Bus pour systmes


embarqus
GPIO:

RM0090, chapter 6.3, Fig 13


Page 75

NOC ARM

Etude de cas
SoC stm32f407vg:
Bus AHB, GPIO, DAC
DM00031020.pdf
Mode input pour pin0

*~(3<<2*00)
*~(3<<2*00)

Frequ = 2 Mhz
Masque , data:(0/1)
pin15

Data=GPIOA&(1<<0)
pin0

GPIOA
Page 76

1<<00

Communications : Bus pour systmes


embarqus

Etude de cas
SoC stm32f407vg:
Bus AHB, GPIO, DAC

|=(1<<3)

Mode output
Frq=50MHz

|=(2<<2*15)

Pin 15=1

|=(1<<15)

pin15

pin0
GPIOD

Page 77

|=(1<<2*15)

Communications : Bus pour systmes


embarqus

Etude de cas
SoC stm32f407vg:
Bus AHB, GPIO, DAC

|=(1<<3)

Mode output

..

fpin15=50MHz,Fpin14=100

..

Pin 15=1, pin14=0

Pin15,14

pin0
GPIOD

Page 78

Mustapha.hamdi@insat.rnu.tn

Communications : Bus pour systmes


embarqus

Etude de cas
SoC stm32f407vg:
Bus AHB, GPIO, DAC

|=(1<<3)

Mode output

|=(1<<15*2)+(1<<14*2)

fpin15=50MHz,Fpin14=100

|=(2<<15*2)+(3<<14*2)

Pin 15=1, pin14=0

|=(1<<15)+(0<<14)

Pin15,14

pin0
GPIOD

Page 79

Mustapha.hamdi@insat.rnu.tn

Communications : Bus pour systmes


embarqus

Etude de cas
SoC stm32f407vg:
Bus AHB, GPIO, DAC
DM00031020.pdf p172

APB1ENR
CR

DAC control reg

Port/pin pour sortie


Data holding register 1 et 2

MODER
DHR12R1/R2
Pin 5, 4

GPIOD
Page 80

pin0

Communications : Bus pour systmes


embarqus

DAC

Page 81

NOC ARM SoC smt32f4


TIMER2:
RCC->APB1ENR |= 0x01; // Clock for Timer2

Page 172, DM00031020.pdf


Page 82

Network on chip NOC

The timer TIM2 gets initialized next. There are three


steps:
Ch.2 is defined as input channel, mapped to TI2 by
writing 01 to bits 9..8 of register
TIM2_CCMR1,
External Clock Mode is selected by writing 111 to
lower three bits of register TIM2_SMCR,
Filtered Timer Input is selected by writing 110 to bits
6..4 of register TIM2_SMCR.
The counting is enabled by writing 1 to bit 0 of register
TIM2_CR1..

Network on chip NOC


#include "stm32f4xx.h"
void main (void){
RCC->AHB1ENR |= (1<<2*0); // Clock for PortA
RCC->APB1ENR |= 0x01;
// Clock for Timer2
GPIOA->MODER |= 0x00000008; // all inputs but: PA1 => AF mode
GPIOA->AFR[0] |= 0x00000010; // select AF1 (TIM2) for PA01 -> TIM2_CH2
TIM2->CCMR1 |= 0x0100;
TIM2->SMCR |= 0x0007;
TIM2->SMCR |= 0x0060;
TIM2->CR1 |= 0x0001;

// Ch. 2 as TI2
// Ext. clk mode 1
// TI2FP2 as ext. clock
// enable counting

while (1) {
for (int i = 0; i<100000; i++) {}; // waste some time
if (GPIOA->IDR & 0x01)
TIM2->CNT = 0;
// reset counter
if (GPIOA->IDR & 0x02)
TIM2->CR1 |= 0x01; // enable counter
if (GPIOA->IDR & 0x04)
TIM2->CR1 &= ~0x01; // disable counter
};
}

Network on chip : NOC ARM

ARM1176JZ

Page 85

SOC: BCM2835 Block Diagram

Network on chip : NOC ARM

Systme dhorloge
Bus ARM
TIMERx

Systme dhorloge ARM STM32F4

Groupe Timer Fmax 84 mhz via APB1


Groupe Timer Fmax 168 mhz via APB2

BUS ARM

Bus pour systmes embarqus:


Bus AMBA: Advanced Microcontroller Bus Architecture
Conu par ARM
Permet de simplifier
lintegration au niveau
systme.

Page 88

BUS ARM

Advanced High-performance Bus (AHB) :


Bus systme rapide, synchrone, multimatre..
Advanced System Bus (ASB) :
AMBA ASB une alternative au systme AHB , utilis dans les cas
ou les hautes performances du bus AHB ne sont pas
ncessaires.
Advanced Peripheral Bus (APB)
APB (Advanced Peripheral Bus) : bus priphrique, plus lent et
de plus faible consommation (pour priphriques lents),
synchrone, matre unique..

Page 89

BUS ARM
Exemple :

Page 90

Mustapha.hamdi@insat.rnu.tn

NOC ARM SoC smt32f4


Exemple :

Page 91

Mustapha.hamdi@insat.rnu.tn

BUS ARM

Etude de cas : BUS AHB1 pour GPIOA


SoC stm32f407vg:
Bus AHB, GPIO, DAC

AHB1ENR 32b
MODER 32b
OSPEEDER 32b
IDR/ODR 16

GPIOx
Page 92

NOC ARM SoC smt32f4

Etude de cas : BUS AHB1 pour GPIOA

Page 178, DM00031020.pdf


Page 93

NOC ARM

Etude de cas : BUS AHB1 pour GPIOA


SoC stm32f407vg:
Bus AHB, GPIO, DAC
DM00031020.pdf
Mode input pour pin0

1<<00
*~(3<<2*00)
*~(3<<2*00)

Frequ = 2 Mhz
Masque , data:(0/1)
pin15

Data=GPIOA&(1<<0)
pin0

GPIOA
Page 94

Mustapha.hamdi@insat.rnu.tn

BUS ARM

Etude de cas: Bus APB1 pour Timer2


SoC stm32f407vg:
Bus AHB, GPIO, DAC
DM00031020.pdf p172

APB1ENR
CR

DAC control reg

Port/pin pour sortie


Data holding register 1 et 2

MODER
DHR12R1/R2
Pin 5, 4

pin0

GPIOD
Page 95

Mustapha.hamdi@insat.rnu.tn

BUS ARM
TIMER2:
RCC->APB1ENR |= 0x01; // Clock for Timer2

Page 172, DM00031020.pdf


Page 96

BUS ARM

Etude de cas: Bus APB1 pour Timer2


SoC stm32f407vg:
Bus AHB, GPIO, DAC
DM00031020.pdf p172

RCC->APB1ENR |= 0x01;

CR

DAC control reg

Port/pin pour sortie


Data holding register 1 et 2

MODER
DHR12R1/R2
Pin 5, 4

pin0

GPIOD
Page 97

Mustapha.hamdi@insat.rnu.tn

Les TIMERS

Les TIMERS
8 Timers
Groupe Timer Fmax
84 mhz via APB1
Groupe Timer Fmax
168 mhz via APB2

Page 98

DM00037051.pdf, Table 3, p.29

Les TIMERS

Les TIMERS
8 Timers

DM00037051.pdf, Table 3, p.29

4 sorties
MLI
Quels PIN ?
AF

Page 99

Les TIMERS

Alternates functions

RM0090, chapter 6.3, Fig 13


Page 100

Les TIMERS

Alternates functions:
AF1: TIM1/TIM2, AF2 TIM3..5, AF9: can
16 AF sur chaque pin, la configuration par 4 bits via aux reg AFRL
et AFRH

Page 101

Les TIMERS

Alternates functions AFRL

TIM3..5

Page 102

0x2 pour configure le


TIM3 et TIM4

Mustapha.hamdi@insat.rnu.tn

Les TIMERS

Alternates functions
AFRL pour configurer les pins de 0 7
AFRH pour configurer les pins de 8 15
Les Timer 3 et 4 utiliser ici, sont
connects quel pin ?

TIM3: PC6 ..9


TIM4: PD12..15

Page 103

Mustapha.hamdi@insat.rnu.tn

Les TIMERS

Alternates functions
Registre AF[1]: AFH, pin 0->7
Registre AF[0]: AFL, pin 8->15
Exemple 4 sorties de TIM3 comme AF via au port C :
Chaque pin est configurable par 4 bits
GPIOC->AF[0] |=(2<<4*6)+(2<<4*7); // en hexa 0x22000000
GPIOC->AF[1] [=(2<<4*0)+;(2<<4*1); //pin 8et9 : les 2 premiers bits
de AFH en hexa : 0x00000022
Comment configure les 4 Sorties de TIM4 comme AF via au port D:
GPIOD->AF[0] |= ??

Page 104

Les TIMERS

Alternates functions

Chaque pin est configurable par 4 bits

Voir outil Cube MX

TIME TIM3 (4
R
chaines)

TIM4 (4
chaines)

ADC1
input

DAC

GPIO PC6->PC9

PD12->15

PA0->
PA7

PA4,
PA5

Registre AF[1]: AFH, pin 0->7


Registre AF[0]: AFL, pin 8->15
Exemple 4 sorties de TIM3 comme AF via au port C :
GPIOC->AF[0] |=0x22000000;
GPIOC->AF[1] [=0x00000022;
Exemple 4 Sorties de TIM4 comme AF via au port D:
GPIOD->AF[0] |= ??
Page 105

Les TIMERS

Etude de cas: MLI via TIMER 3

1
2
3
Page 106

Choix dun timer et dune sortie


TIM3-Ch1 (gpioC6)TIM3-ch4(gpioC9)
GPIO activation via aux bus dhorloge et
choix de mode AF
AHB1ENR, GPIOC: F.alternative (0x2)

Config de la function alternative


TIMER3 comme F.A

Mustapha.hamdi@insat.rnu.tn

Les TIMERS

Etude de cas: MLI via TIMER 3

Page 107

Act et Config Timer


APB1ENR, Prescaler, PWM step

Config PWM
Activation chaines 1,2,3 et 4

Config de la largeur dimpulsion


TIM3->CCR1, . TIM3->CCR4

Mustapha.hamdi@insat.rnu.tn

Les TIMERS

Etude de cas: MLI via TIMER 3

ccr1
ccr3

Page 108

Les TIMERS

Etude de cas: MLI via TIMER 4


TIM4 connect aux pins PD12PD15 : LEDS

Timer4 en mode PWM largeur dimpulsion variable


Proposer une solution pour rendre la L.I variable

Page 109

Mustapha.hamdi@insat.rnu.tn

Les interruptions

Fonctionnement des interruptions


NVIC : Nested Vectored Interrupt Controller
Gre les priorits entre interruptions
Gre la sauvegarde/restauration des registres
Le tout de faon optimise (tail chaining, stack pop pre-emption,
late arrival)
Le fabriquant du micro-contrleur peut y greffer ses
interruptions (ex : UART, DMA, EXTI), le cur ayant aussi ses
propres interruptions (ex : Hard Fault)

Page 110

Les interruptions

Sources dinterruptions
GPIO
Priphriques autres pour
rveiller le cur
Ethernet
USB OTG
Horloge RTC

Page 111

Les interruptions

Etude de cas: Interruption par Timer 5

Le processeur genere deux impulsions dans le port E pedant chaque


interruption.

Page 112

Les interruptions

Etude de cas: Interruption par Timer 5

But : Interruption periodique chaque 1 ms pour gnrer deux


impulsions
Solution?
Page 113

Mustapha.hamdi@insat.rnu.tn

Les interruptions

Page 114

Mustapha.hamdi@insat.rnu.tn

Les interruptions
Deux impulsions chaque 1 ms, linterruption prend ~3.5us.
Chaque impulsion sur le port PE08 prend ~0.5 us
~3.5us

~0.5 us

Page 115

Mustapha.hamdi@insat.rnu.tn

Les interruptions

Clignotement de la led
Chaque 100ms

Page 116

Mustapha.hamdi@insat.rnu.tn

Les interruptions

Implmentation d'un rgulateur PID

Autres taches sur le uc:


Paramtrage de kp,ki, kd

Page 117

IRQ
Conversion+PID

Mustapha.hamdi@insat.rnu.tn

Les interruptions

Implmentation d'un rgulateur PID

TIMER2

ADC1,2

NVIC

PID

DAC1,2

L ADC effectue une conv chaque 100 us. Le NVIC(ADC_IRQn) interrompe


Le prog principale chaque 100 us.
Etapes :
1) Activation ADC, TIMER, DAC
2) NVIC
3) Fonction principale
4) Fonction dinterruption
Page 118

Mustapha.hamdi@insat.rnu.tn

Les interruptions

Activation GPIO ADC Timer DAC:


ADC 1,2
Chaines Cr1 et cr2
Pin: PA02 et PA03 analog input
Le timer2 comme source de synchronisation

DAC :
PA04, PA05 are
analog outputs

TIMER 2:
TIMER3:
Comme source priodique dinterruption
Periode = 1us, f=10 kHz, TIM2->ARR = 8400; Source MLI largeur
dimpulsion=sortie
de regulateur
Freq choisir

Page 119

Mustapha.hamdi@insat.rnu.tn

Les interruptions
DAC->CR

|=(1<<0)+(1<<16) = 0x00010001;
Activation de deux chaines de sortie

Page 120

Mustapha.hamdi@insat.rnu.tn

Les interruptions
DAC->SQ3

|=(1<<0)+(1<<16) = 0x00010001;

Activation de deux entres PA2 et PA3


SQ1= 10 et SQ1=11, ADC1->SQ3|=0X2
ADC2->SQ3|=0X3

Page 121

Mustapha.hamdi@insat.rnu.tn

Les interruptions
Programme principale , Notes et indications :
While(1)
{
Ajustement de Kp :
si PE0 et PE05 sont activs au mme temps
Alors Kp++ :
if ((GPIOE->IDR & 0x003f) == (0x01 + 0x20)) Kp++; // manually set Kp
Rq 0x003f=111111: masque, 0x01 + 0x20= 100001 : PE0 et PE05
si PE0 et PE04 sont activs au mme temps
Alors Kp-if ((GPIOE->IDR & 0x003f) == (0x01 + 0x10)) Kp--;
Ajuste de kd via PE01 et PE05 : Kd+0.001 , PE01 et PE04 kd -0.001
Ajustement de Ki via PE02 et PE05, ki+0.0001, PE02 et PE04 ki -0.0001
}
Page 122

Mustapha.hamdi@insat.rnu.tn

Les interruptions
Fonction dinterruption : indications
Conversion ADC1et2
Error[Ptr] = Ref[Ptr] - x[Ptr]; // calculate error
Prop = Kp * (float)Error[Ptr]; // proportional part
Dif = Kd * (float)(Error[Ptr] - Error[(Ptr-1) & 63]) / Ts; // diff. part
Int += Ki * (float)Error[Ptr]; // integral part
Reg[Ptr] = (int)(Prop + Dif + Int); // summ all three
Sorties : Reg et Error via au DAC1et2
Le DAC est limit entre 0 et 4095

Page 123

Mustapha.hamdi@insat.rnu.tn

Les interruptions
Code:

Page 124

Mustapha.hamdi@insat.rnu.tn

Les interruptions
Code_suite:

Page 125

Mustapha.hamdi@insat.rnu.tn

Les interruptions
Code_suite:

Page 126

Mustapha.hamdi@insat.rnu.tn

Les interruptions
Code_suite:

Page 127

Mustapha.hamdi@insat.rnu.tn

Les interruptions
Code_suite:

Page 128

Mustapha.hamdi@insat.rnu.tn

Les interruptions
Code_suite:

Page 129

Mustapha.hamdi@insat.rnu.tn

Das könnte Ihnen auch gefallen