43
Systèmes Cycle Ingé Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes S Cycle Ingé à Microprocesseurs énieur Troisième Année e - Université de Nice Sophia Antipolis - S. Bilavarn -1- s Electroniques - Université Côte d’Azur - S. Bilavarn -1- Sébastien Bilavarn énieur Troisième Année

Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Systèmes à MicroprocesseursCycle Ingénieur Troisième Année

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Sébastien Bilavarn

Cycle Ingénieur Troisième Année

Systèmes à MicroprocesseursCycle Ingénieur Troisième Année

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 1 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 1 -

Sébastien Bilavarn

Cycle Ingénieur Troisième Année

Page 2: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Ch1 – Représentation de l’information

Ch2 – ARM Instruction Set Architecture

Ch3 – Accès aux données

Ch4 – Programmation structurée

Ch5 – Cycle d’exécution

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Ch5 – Cycle d’exécution

Ch6 – Codage binaire

Ch7 – Microcontrôleur ARM Cortex

Plan

Représentation de l’information

ARM Instruction Set Architecture

Accès aux données

Programmation structurée

Cycle d’exécution

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 2 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 2 -

Cycle d’exécution

Codage binaire

Microcontrôleur ARM Cortex-M

Page 3: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Microcontrôleur ARM Cortex

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Les interruptions du processeur ARM

Microcontrôleur ARM Cortex-M

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 3 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 3 -

Microcontrôleur

Les périphériques

Interruptions

Les interruptions du processeur ARM

Page 4: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Qu’est-ce qu’un microcontrôleur ?

Un microcontrôleur est un circuit intégré qui rassemble dans un même boitier Un microprocesseur

Des mémoires

Des périphériques

Les périphériques sont des circuits capables

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Les périphériques sont des circuits capables d’effectuer des tâches spécifiques Conversion A/N, N/A

Génération de signaux (PWM)

Compteur de temps ou d’évènements (Timer)

Communications, contrôleurs de bus (UART, IIC)

ce qu’un microcontrôleur ?

Un microcontrôleur est un circuit intégré qui rassemble dans un même boitier

Les périphériques sont des circuits capables

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 4 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 4 -

Les périphériques sont des circuits capables d’effectuer des tâches spécifiques

Génération de signaux (PWM)

Compteur de temps ou d’évènements (Timer)

Communications, contrôleurs de bus (UART, IIC)

Page 5: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

STM32F407VGT6

Horloges périphériques APB1

APB2

AHB1

AHB2

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 5 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 5 -

AHB2

Page 6: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

CMSIS Cortex Microcontroller Software Interface Standard

http://www.arm.com/products/processors/cortexmicrocontroller-software-interface

API pour la famille de coeurs Cortex

Adresse de base des périphériques

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Adresse de base des périphériques stm32f4xx.h

#define PERIPH_BASE ((uint32_t)0x40000000)

Horloges #define APB1PERIPH_BASE PERIPH_BASE

#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000)

#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000)

#define AHB2PERIPH_BASE (PERIPH_BASE + 0x10000000)

STM32F407VGT6

Cortex Microcontroller Software Interface Standard

http://www.arm.com/products/processors/cortex-m/cortex-interface-standard.php

API pour la famille de coeurs Cortex-M et leurs périphériques.

Adresse de base des périphériques

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 6 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 6 -

Adresse de base des périphériques

#define PERIPH_BASE ((uint32_t)0x40000000)

#define APB1PERIPH_BASE PERIPH_BASE

#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000)

#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000)

#define AHB2PERIPH_BASE (PERIPH_BASE + 0x10000000)

Page 7: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Microcontrôleur ARM Cortex

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Les interruptions du processeur ARM

Microcontrôleur ARM Cortex-M

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 7 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 7 -

Microcontrôleur

Les périphériques

Interruptions

Les interruptions du processeur ARM

Page 8: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

GPIO: General Purpose Input/Outpout

UART: Universal Asynchronous Receiver Transmitter

I2C: Inter Integrated Circuit

SPI: Serial Peripheral Interface

Timer: minuteur

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Timer: minuteur

PWM: Pulse-width modulation

Les périphériques

GPIO: General Purpose Input/Outpout

UART: Universal Asynchronous Receiver Transmitter

C: Inter Integrated Circuit

SPI: Serial Peripheral Interface

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 8 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 8 -

width modulation

Page 9: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Entrées/sorties pour usage général

Comporte un ensemble de ports d’entrée/sortie qui peuvent être configurées pour jouer soit le rôle d’une entrée, soit le rôle d’une sortie. Lorsqu'un port GPIO est configuré en tant que sortie, on

peut écrire dans un registre interne afin de modifier l'état

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

peut écrire dans un registre interne afin de modifier l'état d'une sortie.

Lorsqu'il est configuré en tant qu'entrée, on peut détecter son état en lisant le contenu d'un registre interne.

Exemple: un GPIO est fréquemment utilisé pour contrôler des LEDs.

GPIO

Entrées/sorties pour usage général

Comporte un ensemble de ports d’entrée/sortie qui peuvent être configurées pour jouer soit le rôle d’une entrée, soit le rôle d’une sortie.

Lorsqu'un port GPIO est configuré en tant que sortie, on peut écrire dans un registre interne afin de modifier l'état

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 9 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 9 -

peut écrire dans un registre interne afin de modifier l'état

Lorsqu'il est configuré en tant qu'entrée, on peut détecter son état en lisant le contenu d'un registre interne.

Exemple: un GPIO est fréquemment utilisé pour

Page 10: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Registres GPIO STM32 stm32f4xx.h#define PERIPH_BASE ((uint32_t)0x40000000)

#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000)

#define GPIOH_BASE (AHB1PERIPH_BASE + 0x1C00)

typedef struct

{

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

{

__IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */

__IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */

__IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */

__IO uint32_t PUPDR; /*!< GPIO port pull-up/pull

__IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */

__IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */

__IO uint16_t BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */

__IO uint16_t BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */

__IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */

__IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20

} GPIO_TypeDef;

GPIO STM32

#define PERIPH_BASE ((uint32_t)0x40000000)

#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000)

#define GPIOH_BASE (AHB1PERIPH_BASE + 0x1C00)

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 10 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 10 -

__IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */

__IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */

__IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */

up/pull-down register, Address offset: 0x0C */

__IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */

__IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */

__IO uint16_t BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */

__IO uint16_t BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */

__IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */

__IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */

Page 11: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Exemple Port mode register (MODER)

Input

General purpose output

Alternate function

Analog

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

GPIO STM32

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 11 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 11 -

Page 12: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Exemple GPIOSTM32F4xx.h

Configurer le port H.3 en sortie GPIOH_MODER = 0x40

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

GPIO STM32

Configurer le port H.3 en sortie// @40021C00 <- 0x40

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 12 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 12 -

Page 13: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Exemple Configurer le port H.3 en sortie, push

GPIOH->MODER = 0x40;

GPIOH->OTYPER = 0x0;

GPIOH->OSPEEDR = 0x80;

GPIOH->PUPDR = 0x80;

En utilisant les fonctions CMSIS

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

En utilisant les fonctions CMSIS

GPIO_PinConfigure( GPIOH,

3,

GPIO_MODE_OUTPUT,

GPIO_OUTPUT_PUSH_PULL,

GPIO_OUTPUT_SPEED_50MHz,

GPIO_PULL_DOWN);

Toutes les macros sont définies dans

GPIO STM32

Configurer le port H.3 en sortie, push-pull, 50MHz, Pull-down

// @40021C00 <- 0x40

// @40021C04 <- 0x0

>OSPEEDR = 0x80; // @40021C08 <- 0x80

// @40021C0C <- 0x80

En utilisant les fonctions CMSIS

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 13 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 13 -

En utilisant les fonctions CMSIS

GPIOH,

3,

GPIO_MODE_OUTPUT,

GPIO_OUTPUT_PUSH_PULL,

GPIO_OUTPUT_SPEED_50MHz,

GPIO_PULL_DOWN);

Toutes les macros sont définies dans GPIO_STM32F4xx.h

Page 14: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Périphérique matériel permettant de mesurer les durées

Temporisateur programmable: compteur que l’on

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Temporisateur programmable: compteur que l’on peut programmer Exemple: pour compter périodiquement de 0 à 10000 pour

réaliser une temporisation

Il permet De mesurer des intervalles de temps

De réaliser des temporisations

De générer des signaux PWM

Timer

Périphérique matériel permettant de mesurer les

Temporisateur programmable: compteur que l’on

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 14 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 14 -

Temporisateur programmable: compteur que l’on

Exemple: pour compter périodiquement de 0 à 10000 pour réaliser une temporisation

De mesurer des intervalles de temps

De réaliser des temporisations

De générer des signaux PWM

Page 15: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Prescaler (prédiviseur)

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge (pclk)

Period = 6: le compteur repart à 0 (reset) et génère une interruption lorsqu’il atteint la valeur 6

Timer

Prescaler (prédiviseur)

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 15 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 15 -

Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois

Period = 6: le compteur repart à 0 (reset) et génère une interruption

Page 16: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Le timer fonctionne à 84MHz

Exemple Configurer le timer 5 avec :

croissant, période 10KHz, division d’horloge=1TIM_TimeBaseInitTypeDef

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

TIM_TimeBaseInitTypeDef

TIM_BaseStruct.TIM_Prescaler

TIM_BaseStruct.TIM_CounterMode

TIM_BaseStruct.TIM_Period

TIM_BaseStruct.TIM_ClockDivision

TIM_TimeBaseInit(TIM5, &

Toutes les macros sont définies dans

Timer STM32

fonctionne à 84MHz

5 avec : prescaler=0, mode comptage croissant, période 10KHz, division d’horloge=1TIM_TimeBaseInitTypeDef TIM_BaseStruct;

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 16 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 16 -

TIM_TimeBaseInitTypeDef TIM_BaseStruct;

TIM_Prescaler = 0;

TIM_CounterMode = TIM_CounterMode_Up;

TIM_Period = 8399; /* 10kHz PWM */

TIM_ClockDivision = TIM_CKD_DIV1;

(TIM5, &TIM_BaseStruct);

Toutes les macros sont définies dans stm32f4xx_tim.h

Page 17: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Pulse Width Modulation (Modulation de largeur d’Impulsion) Le principe est de générer un signal logique (valant 0 ou 1), à

fréquence fixe mais dont le rapport cyclique est contrôlé numériquement.

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

L’exemple ci-dessus définit un signal de période 100.

Le timer fonctionne à 84MHz, la fréquence du signal PWM est donc 84 106/100 = 840 KHz.

Il est programmé pour passer de 1 à 0 sur la valeur 65, le rapport cyclique (pulse) est donc de 65%.

PWM

Pulse Width Modulation (Modulation de largeur

Le principe est de générer un signal logique (valant 0 ou 1), à fréquence fixe mais dont le rapport cyclique est contrôlé

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 17 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 17 -

dessus définit un signal de période 100.

Le timer fonctionne à 84MHz, la fréquence du signal PWM est /100 = 840 KHz.

Il est programmé pour passer de 1 à 0 sur la valeur 65, le rapport cyclique (pulse) est donc de 65%.

Page 18: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

L’UART est un émetteuruniversel.

Composant utilisé pour faire le lien entre un microprocesseur et le port série.

Tous les bits de données transitent en série (à travers un même fil)

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

un même fil)

Vitesse de transmission: Bauds (1 bd = 1 temps bit, 9600 bauds = 9600 bps)

Vitesses normalisées: 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1843200, 3686400

Relativement lent

UART

L’UART est un émetteur-récepteur asynchrone

Composant utilisé pour faire le lien entre un microprocesseur et le port série.

Tous les bits de données transitent en série (à travers

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 18 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 18 -

Vitesse de transmission: Bauds (1 bd = 1 temps bit, 9600 bauds = 9600 bps)

Vitesses normalisées: 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600,

Page 19: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Composition d’une trame:

1 bit de start toujours à 0, pour la synchronisation du

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

récepteur

Les données (la taille peut varier entre 5 et 8 bits)

Éventuellement un bit de parité, paire ou impaire (détection d’erreur de transmission)

1 bit de stop toujours à 1, la durée peut varier entre 1, 1.5 et 2 temps bit

Le niveau logique de repos est le 1.

UART

Composition d’une trame:

toujours à 0, pour la synchronisation du

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 19 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 19 -

Les données (la taille peut varier entre 5 et 8 bits)

Éventuellement un bit de parité, paire ou impaire (détection d’erreur de transmission)

toujours à 1, la durée peut varier entre 1, 1.5 et

Le niveau logique de repos est le 1.

Page 20: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Exemple Configurer l’USART avec les paramètres de transmission: 9600 bauds,

pas contrôle de flux, mode émission/réception, pas de parité, 1 bit de stop, taille des données transmises 8 bit

USART_InitTypeDef USART_InitStruct;

USART_InitStruct.USART_BaudRate = 9600;

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;

USART_InitStruct.USART_Parity = USART_Parity_No;

USART_InitStruct.USART_StopBits = USART_StopBits_1;

USART_InitStruct.USART_WordLength = USART_WordLength_8b;

USART_Init(USART1, &USART_InitStruct);

Toutes les macros sont définies dans

UART STM32

Configurer l’USART avec les paramètres de transmission: 9600 bauds, pas contrôle de flux, mode émission/réception, pas de parité, 1 bit de stop, taille des données transmises 8 bit

USART_InitTypeDef USART_InitStruct;

USART_InitStruct.USART_BaudRate = 9600;

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 20 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 20 -

USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

USART_InitStruct.USART_Mode = USART_Mode_Tx |

USART_InitStruct.USART_Parity = USART_Parity_No;

USART_InitStruct.USART_StopBits = USART_StopBits_1;

USART_InitStruct.USART_WordLength = USART_WordLength_8b;

USART_Init(USART1, &USART_InitStruct);

Toutes les macros sont définies dans stm32f4xx_usart.h

Page 21: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Développé par Philips pour des applications de domotique

bus série et synchrone composé de trois fils: un signal de donnée (SDA)

un signal d'horloge (SCL)

un signal de référence (masse)

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

un signal de référence (masse)

Plusieurs composants peuvent être branchés sur le même bus I2C. Pour que l'information aille au bon endroit chaque composant possède sa propre adresse.Elle est composée d'une partie fixe imposée par le constructeur, d'une partie configurable de façon matérielle par l'utilisateur, et du bit de read/write qui définit le sens de la transmission (0 pour écriture, 1 pour lecture).

I2C (1)

Développé par Philips pour des applications de

bus série et synchrone composé de trois fils:un signal de donnée (SDA)

un signal d'horloge (SCL)

un signal de référence (masse)

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 21 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 21 -

un signal de référence (masse)

Page 22: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Exemple

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

La communication commence par le StartBit

Puis on envoie l’adresse (4C, sur 8 bits)

L’acknowledge (Ack)

Un octet de donnée (A5)

De nouveau un acknowledge (Ack)

Pour finir, le StopBit

I2C (2)

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 22 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 22 -

La communication commence par le StartBit

l’adresse (4C, sur 8 bits)

Un octet de donnée (A5)

De nouveau un acknowledge (Ack)

Page 23: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Bus de donnée série synchrone développé par Motorola

Communication type maître Le maître gère la communication

Plusieurs esclaves possibles

La sélection de l’esclave se fait par une ligne dédiée

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

La sélection de l’esclave se fait par une ligne dédiée appelée chip select

SCLK — Horloge (généré par le maître)MOSI — Master Output, Slave Input (généré par le maître)MISO — Master Input, Slave Output (généré par l'esclave)SS — Slave Select, Actif à l'état bas, (généré par le maître)

SPI (1)

Bus de donnée série synchrone développé par

Communication type maître-esclaveLe maître gère la communication

Plusieurs esclaves possibles

La sélection de l’esclave se fait par une ligne dédiée

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 23 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 23 -

La sélection de l’esclave se fait par une ligne dédiée

Horloge (généré par le maître)Master Output, Slave Input

Master Input, Slave Output

Slave Select, Actif à l'état bas,

Page 24: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Une transmission SPI typique est une communication simultanée entre un maître et un esclave.

Le maître génère l'horloge et

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Le maître génère l'horloge et sélectionne l'esclave avec qui il veut communiquer

L'esclave répond aux requêtes du maître

A chaque coup d'horloge le maître et l'esclave s'échangent un bit.

SPI (2)

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 24 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 24 -

Page 25: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Microcontrôleur ARM Cortex

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Les interruptions du processeur ARM

Microcontrôleur ARM Cortex-M

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 25 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 25 -

Microcontrôleur

Les périphériques

Interruptions

Les interruptions du processeur ARM

Page 26: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Un microprocesseur doit échanger des données avec un périphérique

Première méthode Scrutation périodique (polling): le programme principal contient des

instructions qui lisent cycliquement l’état des ports d’E/S

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Avantage: Facile à programmer

Inconvénient: De nouvelles données ne sont pas toujours présentes

Des données peuvent être perdues si elles changent rapidement

Perte de temps sil y a de nombreux périphériques à interroger

Les interruptions

Un microprocesseur doit échanger des données avec un périphérique

Scrutation périodique (polling): le programme principal contient des instructions qui lisent cycliquement l’état des ports d’E/S

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 26 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 26 -

De nouvelles données ne sont pas toujours présentes

Des données peuvent être perdues si elles changent rapidement

Perte de temps sil y a de nombreux périphériques à interroger

Page 27: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Deuxième méthode Interruption: lorsqu’une donnée apparaît sur un périphérique, le circuit

d’E/S le signale au microprocesseurInterrupt Request)

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Avantage: Le microprocesseur effectue une lecture des ports d’E/S seulement lorsqu’une

donnée est disponible

Permet de gagner du temps

Évite la perte de données

Les interruptions

Interruption: lorsqu’une donnée apparaît sur un périphérique, le circuit microprocesseur par une demande d’interruption (IRQ

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 27 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 27 -

microprocesseur effectue une lecture des ports d’E/S seulement lorsqu’une

Permet de gagner du temps

Page 28: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Exemples d’interruptions Clavier: demande d’interruption lorsqu’une touche est

enfoncée

Port série: demande d’interruption lors de l’arrivée d’un caractère sur la ligne de transmission

Remarque:

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Remarque: les interruptions peuvent être générées par le

microprocesseur lui-même en cas de problème tels qu’une erreur d’alimentation, une division par

zéro ou un circuit mémoire défectueux (erreurs fatales). Dans ce cas, l’interruption conduit à l’arrêt du μP

Les interruptions

Exemples d’interruptionsClavier: demande d’interruption lorsqu’une touche est

Port série: demande d’interruption lors de l’arrivée d’un caractère sur la ligne de transmission

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 28 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 28 -

les interruptions peuvent être générées par le même

en cas de problème tels qu’une erreur d’alimentation, une division par zéro ou un circuit mémoire défectueux (erreurs fatales). Dans ce cas, l’interruption conduit à l’arrêt du μP

Page 29: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Fonctionnement d’une interruption Le processeur termine l’exécution de

l’instruction en cours

Il range le contenu des principaux registres dans la pile

Il peut émettre un accusé de réception (Interrupt Acknowledge) indiquant au circuit d’E/S que l’interruption est

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

circuit d’E/S que l’interruption est acceptée

Il peut refuser l’interruption (masquée)

Il abandonne l’exécution en cours et va exécuter un sous-programme de service de l’interruption (ISR)

Après exécution de l’ISR, les registres sont restaurés et le processeur reprend l’exécution du programme interrompu

Les interruptions

Fonctionnement d’une interruptionLe processeur termine l’exécution de

Il range le contenu des principaux

Il peut émettre un accusé de réception (Interrupt Acknowledge) indiquant au circuit d’E/S que l’interruption est

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 29 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 29 -

circuit d’E/S que l’interruption est

Il peut refuser l’interruption (masquée)

Il abandonne l’exécution en cours et va programme de

Après exécution de l’ISR, les registres sont restaurés et le processeur reprend l’exécution du programme

Page 30: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Remarques Si plusieurs interruptions peuvent se produire en même

temps, on leur affecte une priorité pour que le processeur sache dans quel ordre les exécuter

Adresse des ISR Lorsqu’une interruption se produit, le processeur a besoin

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Lorsqu’une interruption se produit, le processeur a besoin de connaître l’adresse de l’ISR à exécuter

L’adresse de l’ISR est contenue dans une zone réservée en mémoire qui s’appelle la table d’interruption.

Chaque élément de cette table s’appelle un vecteur d’interruption.

AU moment ou survient une interruption, le processeur analyse l’état courant et les priorités afin de savoir quelle ISR doit être exécutée.

Les interruptions

Si plusieurs interruptions peuvent se produire en même temps, on leur affecte une priorité pour que le processeur sache dans quel ordre les exécuter

Lorsqu’une interruption se produit, le processeur a besoin

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 30 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 30 -

Lorsqu’une interruption se produit, le processeur a besoin de connaître l’adresse de l’ISR à exécuter

L’adresse de l’ISR est contenue dans une zone réservée en mémoire qui s’appelle la table d’interruption.

Chaque élément de cette table s’appelle un vecteur

AU moment ou survient une interruption, le processeur analyse l’état courant et les priorités afin de savoir quelle ISR doit être exécutée.

Page 31: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Le contrôleur d’interruptions

S’il est présent, il assiste le processeur dans sa tâche de traitement des interruptions

Gestion des interruptions périphériques: Tous les périphériques sont connectés au contrôleur

d’interruption (chaque périphérique a un numéro d’interruption qui l’identifie).

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

d’interruption qui l’identifie).

A chaque interruption est associée une priorité (définie par le programmeur en fonction de ses besoins).

Lorsqu’une (et/ou plusieurs) interruption(s) se produi(sen)t, le CI analyse les priorités et renvoie l’adresse de la routine d’interruption à exécuter au processeur.

Le contrôleur d’interruptions

S’il est présent, il assiste le processeur dans sa tâche de traitement des interruptions

Gestion des interruptions périphériques: Tous les périphériques sont connectés au contrôleur d’interruption (chaque périphérique a un numéro d’interruption qui l’identifie).

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 31 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 31 -

d’interruption qui l’identifie).

A chaque interruption est associée une priorité (définie par le programmeur en fonction de ses besoins).

Lorsqu’une (et/ou plusieurs) interruption(s) se produi(sen)t, le CI analyse les priorités et renvoie l’adresse de la routine d’interruption à exécuter au processeur.

Page 32: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Contrôleur d’interruption STM32

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

NVIC_InitTypeDef NVIC_InitStruct; NVIC_EnableIRQ(TIM4_IRQn);

NVIC_InitStruct.NVIC_IRQChannel = EXTI15_10_IRQn; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;NVIC_Init(&NVIC_InitStruct);NVIC_InitStruct.NVIC_IRQChannel = TIM4_IRQn; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;NVIC_Init(&NVIC_InitStruct);

Contrôleur d’interruption STM32

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 32 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 32 -

// see misc.h//core_cm4.h

NVIC_InitStruct.NVIC_IRQChannel = EXTI15_10_IRQn; // defined in stm32f4xx.hNVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStruct.NVIC_IRQChannel = TIM4_IRQn; // defined in stm32f4xx.hNVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;

Page 33: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Microcontrôleur ARM Cortex

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Les interruptions du processeur ARM

Microcontrôleur ARM Cortex-M

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 33 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 33 -

Microcontrôleur

Les périphériques

Interruptions

Les interruptions du processeur ARM

Page 34: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Les interruptions du processeur ARM

Exceptions et interruptions du ARM Le processeur ARM possède plusieurs modes de

fonctionnement (operating modes).

Le mode de fonctionnement courant est le «

Le processeur peut aussi fonctionner dans des modes « privileged » qui sont utilisés pour la gestion des exceptions et de « supervisor calls

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

exceptions et de « supervisor calls

Les bits [4..0] du CPSR indiquent le mode de fonctionnement courant du processeur.

Les interruptions du processeur ARM

Exceptions et interruptions du ARMLe processeur ARM possède plusieurs modes de fonctionnement (operating modes).

Le mode de fonctionnement courant est le « user mode ».

Le processeur peut aussi fonctionner dans des modes » qui sont utilisés pour la gestion des

supervisor calls » (ex: SWI).

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 34 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 34 -

supervisor calls » (ex: SWI).

Les bits [4..0] du CPSR indiquent le mode de fonctionnement courant du processeur.

Page 35: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Les interruptions du processeur ARM

Comment sont générées les exceptions? Par défaut le processeur est en mode «

Il entre dans un mode d’exception quand une exception se produit.

Il existe trois type d’exceptions différentes (certaines sont des interruptions):

Celles résultant directement

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Celles résultant directement Software Interrupt Instruction (SWI)

Instruction non-définie ou illégale

Erreur mémoire au cours du fetch d’une instruction

Celles résultant indirectement Memory fault lors d’un accès mémoire

Erreur arithmétique (ex: division par zéro)

Celles provenant d’un signal de périphérique externe, tel que Reset

Fast Interrupt (FIQ)

Normal Interrupt (IRQ)

Les interruptions du processeur ARM

Comment sont générées les exceptions?Par défaut le processeur est en mode « user »

Il entre dans un mode d’exception quand une exception se

Il existe trois type d’exceptions différentes (certaines sont

directement de l’exécution d’une instruction telle que:

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 35 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 35 -

directement de l’exécution d’une instruction telle que: Software Interrupt Instruction (SWI)

définie ou illégale

Erreur mémoire au cours du fetch d’une instruction

indirectement de l’exécution d’une instructionMemory fault lors d’un accès mémoire

Erreur arithmétique (ex: division par zéro)

Celles provenant d’un signal de périphérique externe, tel que

Normal Interrupt (IRQ)

Page 36: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Les interruptions du processeur ARM

Shadow registers Lorsque le processeur entre dans un mode d’exception, de

nouveaux registres sont utilisables:

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Les interruptions du processeur ARM

Lorsque le processeur entre dans un mode d’exception, de nouveaux registres sont utilisables:

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 36 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 36 -

Page 37: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Les interruptions du processeur ARM

Shadow registers Par exemple, un événement externe génère une Fast

Interrupt (sur la broche FIQ). Le processeur passe en mode de fonctionnement FIQ.

Il continue de voir les registres R0précédemment, mais aussi un nouveau groupe de registres R8-R14 ainsi qu’un registre appelé SPSR (Saved Processor

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

R8-R14 ainsi qu’un registre appelé SPSR (Saved Processor Status Register).

Ce basculement vers de nouveaux registres permet de préserver l’état du processeur plus facilement. Par exemple, pendant un mode FIQ, les registres R8utilisé librement. Au retour en mode user, les valeurs originales de ces registres sont restaurées automatiquement.

Les interruptions du processeur ARM

Par exemple, un événement externe génère une Fast Interrupt (sur la broche FIQ). Le processeur passe en mode de fonctionnement FIQ.

Il continue de voir les registres R0-R7 comme précédemment, mais aussi un nouveau groupe de registres

R14 ainsi qu’un registre appelé SPSR (Saved Processor

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 37 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 37 -

R14 ainsi qu’un registre appelé SPSR (Saved Processor

Ce basculement vers de nouveaux registres permet de préserver l’état du processeur plus facilement. Par exemple, pendant un mode FIQ, les registres R8-R14 peuvent être utilisé librement. Au retour en mode user, les valeurs originales de ces registres sont restaurées

Page 38: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Les interruptions du processeur ARM

Qu’arrive t’il quand une exception se produit ? Le processeur achève l’instruction en cours.

Il abandonne la séquence d’instruction courante en effectuant les étapes suivantes:

Il change de mode de fonctionnementcorrespondant à l’exception.

Il sauvegarde PC dans le registre R14

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Il sauvegarde PC dans le registre R14mode (ex: R14_FIQ).

Il sauvegarde la valeur de CPSRSPSR (Saved Program Status Register).

Il désactive les interruptions moins prioritaires

Il force PC avec une nouvelle valeur correspondant à l’exceptionCela revient à un saut forcé vers le gestionnaire d’exception (Exception Handler) / routine d’interruption (Interrupt Service Routine)

Les interruptions du processeur ARM

Qu’arrive t’il quand une exception se produit ?Le processeur achève l’instruction en cours.

Il abandonne la séquence d’instruction courante en effectuant les étapes suivantes:

change de mode de fonctionnement et passe dans celui correspondant à l’exception.

sauvegarde PC dans le registre R14 correspondant au nouveau

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 38 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 38 -

sauvegarde PC dans le registre R14 correspondant au nouveau

sauvegarde la valeur de CPSR (avant exception) dans le registre SPSR (Saved Program Status Register).

désactive les interruptions moins prioritaires.

force PC avec une nouvelle valeur correspondant à l’exception. Cela revient à un saut forcé vers le gestionnaire d’exception (Exception Handler) / routine d’interruption (Interrupt Service Routine)

Page 39: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Les interruptions du processeur ARM

Où se trouve le gestionnaire d’exception ? Les exceptions peuvent être vues comme des appels de

sous-fonctions « forcés

Une adresse unique est prédéfinie pour chaque exception (IRQ, FIQ, etc). C’est cette adresse est chargée dans le PC au déclenchement de l’exception.

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Cette adresse le vecteur d’interruption/exception. Elle doit contenir un branchement vers la fonction qui décrit le traitement de l’exception (gestionnaire d’exception / routine d’interruption).

Les interruptions du processeur ARM

Où se trouve le gestionnaire d’exception ?Les exceptions peuvent être vues comme des appels de

fonctions « forcés ».

Une adresse unique est prédéfinie pour chaque exception (IRQ, FIQ, etc). C’est cette adresse est chargée dans le PC au déclenchement de l’exception.

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 39 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 39 -

Cette adresse le vecteur d’interruption/exception. Elle doit contenir un branchement vers la fonction qui décrit le traitement de l’exception (gestionnaire d’exception / routine

Page 40: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Les interruptions du processeur ARM

Adresses des vecteurs d’interruption

Chaque vecteur (sauf FIQ) occupe 4 octets (une instruction)

A cette adresse, on place une instruction de branchement vers le gestionnaire d’exception / routine d’interruption:

Le traitement des FIQ est particulier pour deux raisons:

B exception_handler

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Le traitement des FIQ est particulier pour deux raisons: La routine d’interruption FIQ peut être placée directement à l’adresse du

vecteur FIQ (0x0000001C), car celui

Il y a plus de shadow registers utilisables en mode FIQ. Il y a donc moins de registres à sauvegarder dans la pile par rapport aux autres exceptions d’où un traitement plus rapide.

Les interruptions du processeur ARM

Adresses des vecteurs d’interruption

Chaque vecteur (sauf FIQ) occupe 4 octets (une instruction)

A cette adresse, on place une instruction de branchement vers le gestionnaire d’exception / routine d’interruption:

Le traitement des FIQ est particulier pour deux raisons:

exception_handler

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 40 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 40 -

Le traitement des FIQ est particulier pour deux raisons: La routine d’interruption FIQ peut être placée directement à l’adresse du vecteur FIQ (0x0000001C), car celui-ci est à la fin de la table d’interruption.

Il y a plus de shadow registers utilisables en mode FIQ. Il y a donc moins de registres à sauvegarder dans la pile par rapport aux autres exceptions d’où un

Page 41: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Les interruptions du processeur ARM

Retour d’une exception

Lorsqu’une exception a été traitée (par le gestionnaire d’exception), la tâche utilisateur est reprise.

Le gestionnaire d’exception doit restaurer l’état du processeur exactement à l’identique de l’état précédent l’exception. 1. Tout registre modifié doit être restauré depuis la pile utilisée par le

gestionnaire d’exception.

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

2. Le CPSR doit être restauré depuis le SPSR approprié.

3. PC doit être restauré avec l’adresse instruction correcte dans le flux d’instruction utilisateur.

Les étapes 1 et 3 sont effectuées par l’utilisateur, l’étape 2 est à la charge du processeur.

La restauration des registres depuis la pile est la même que pour des appels à sous-fonctions.

La restauration du PC est plus complexe. La façon exacte de procéder dépend du type d’exception dont on revient.

Les interruptions du processeur ARM

Lorsqu’une exception a été traitée (par le gestionnaire d’exception), la tâche utilisateur est reprise.

Le gestionnaire d’exception doit restaurer l’état du processeur exactement à l’identique de l’état précédent l’exception.

Tout registre modifié doit être restauré depuis la pile utilisée par le

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 41 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 41 -

Le CPSR doit être restauré depuis le SPSR approprié.

PC doit être restauré avec l’adresse instruction correcte dans le flux

Les étapes 1 et 3 sont effectuées par l’utilisateur, l’étape 2 est à la charge du processeur.

La restauration des registres depuis la pile est la même que pour fonctions.

La restauration du PC est plus complexe. La façon exacte de procéder dépend du type d’exception dont on revient.

Page 42: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Les interruptions du processeur ARM

Retour d’une exception On suppose que l’adresse de retour a été sauvegardée dans R14

avant d’entrer dans le gestionnaire d’interruption.

Pour revenir d’une software interrupt (SWI) ou d’une undefined instruction (UND):

Pour revenir d’une IRQ, FIQ, prefetch abort (erreur instruction fetch):

MOVS PC, R14

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

fetch):

Pour revenir d’une data abort (erreur d’accès donnée en mémoire) et ré-essayer l’accès:

/!\ Le suffixe S ne sert pas à modifier CPSR, mais à restauration du CPSR quand le registre de destination est PC

La différence entre ces trois modes est due au pipeline du processeur. La valeur du PC stockée dans R14 peut être en avance d’une ou deux instructions à cause du pipeline.

SUBS PC, R14, #4

MOVS PC, R14, #8

Les interruptions du processeur ARM

On suppose que l’adresse de retour a été sauvegardée dans R14 avant d’entrer dans le gestionnaire d’interruption.

Pour revenir d’une software interrupt (SWI) ou d’une undefined

Pour revenir d’une IRQ, FIQ, prefetch abort (erreur instruction

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 42 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 42 -

Pour revenir d’une data abort (erreur d’accès donnée en mémoire)

Le suffixe S ne sert pas à modifier CPSR, mais à indiquer la restauration du CPSR quand le registre de destination est PC.

La différence entre ces trois modes est due au pipeline du processeur. La valeur du PC stockée dans R14 peut être en avance d’une ou deux instructions à cause du pipeline.

Page 43: Sébastien Bilavarn - unice.frusers.polytech.unice.fr/~bilavarn/fichier/elec3_micropro/...Prescaler = 2: le compteur (Timer Counter) s’incrémente tous les trois cycles d’horloge

Les interruptions du processeur ARM

Priorité des exceptions Plusieurs exceptions peuvent se produire simultanément, un

ordre de priorité doit être défini clairement: Reset (priorité la plus forte)

Data abort (erreur mémoire lors d’une lecture/écriture de donnée)

Fast Interrupt Request (FIQ)

Normal Interrupt Request (IRQ)

Polytech’Nice Sophia - Département Electronique Polytech Nice Sophia - Dpt Ingénierie des Systèmes Electroniques

Normal Interrupt Request (IRQ)

Prefetch abort (erreur lors d’un fetch instruction)

Software interrupt (SWI), Undefined instruction

Si une IRQ et une FIQ se produisent simultanément, le processeur exécute d’abord le gestionnaire FIQ, et doit se « souvenir » qu’il y a une IRQ en suspens.

Au retour de l’interruption FIQ, le processeur procèdera immédiatement à l’exécution du gestionnaire d’IRQ.

Les interruptions du processeur ARM

Priorité des exceptionsPlusieurs exceptions peuvent se produire simultanément, un ordre de priorité doit être défini clairement:

Reset (priorité la plus forte)

Data abort (erreur mémoire lors d’une lecture/écriture de donnée)

Fast Interrupt Request (FIQ)

Normal Interrupt Request (IRQ)

Département Electronique - Université de Nice Sophia Antipolis - S. Bilavarn - 43 -Ingénierie des Systèmes Electroniques - Université Côte d’Azur - S. Bilavarn - 43 -

Normal Interrupt Request (IRQ)

Prefetch abort (erreur lors d’un fetch instruction)

Software interrupt (SWI), Undefined instruction

Si une IRQ et une FIQ se produisent simultanément, le processeur exécute d’abord le gestionnaire FIQ, et doit se

» qu’il y a une IRQ en suspens.

Au retour de l’interruption FIQ, le processeur procèdera immédiatement à l’exécution du gestionnaire d’IRQ.