Cortex microcontroller software interface standard

Elettronica dei Sistemi Programmabili
A.A. 2013-2014
Microcontrollori
Cortex Microcontroller Software Interface Standard
Sommario
Costi per lo sviluppo di un nuovo progetto
Generalità sul CMSIS
Cosa è standardizzato in CMSIS
Organizzazione nel CMSIS
Esempi di software
Quick reference
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
2/44
Costi per lo sviluppo di applicazioni industriali
rd
ha
ne
inn ce
ov ssit
az à
io di
ne
costo
re
wa
s
tw
f
o
e
r
a
anno
1970
1980
1990
2000
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
2010
3/44
Linee guida per lo sviluppo del software
complessità
Maggiore è la complessità del sistema embedded che si
intende realizzare, maggiore sarà l'importanza di disporre di
un software
compatibile
compatibilità
riutilizzabile
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
riutilizzo
time to
market
4/44
Complessità dell'hardware
I componenti che costituiscono l'hardware di un prodotto
possono essere cambiati
sistemi più flessibili
maggiori prestazioni
SD
card
Ethernet
232
driver
conn
PHY
SD
card
SD/MD
conn
RAM
MCU
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
Flash
5/44
Sorgenti per il software
sviluppatori
altri progetti
librerie di produttori di uC
sistemi operativi embedded
terze parti
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
6/44
Il ruolo di CMSIS
CMSIS (di ARM) è stato creato per aiutare la
standardizzazione nell'ambito della progettazione di sistemi
embedded
Licence
The CMSIS is provided free of charge by ARM and can be
used for all Cortex-M based devices.
The software portions that are deployed in the application
program are under a BSD license which allows usage of
CMSIS in any commercial or open source projects.
View the LICENCE AGREEMENT for CMSIS in detail.
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
7/44
Il ruolo di CMSIS
CMSIS è implementato come parte delle librerie che i
produttori di uC forniscono ai progettisti
si hanno così a disposizione le interfacce per dispositivi
standard
NVIC
SCB
SysTick
funzioni standard per diversi processori della famiglia
Cortex-M
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
8/44
Standard per I costruttori
CMSIS è adottato sia da chi vende “silicio” sia da chi
produce sistemi di sviluppo
Keil
ARM
IAR
GNU
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
9/44
Accesso standard alle funzioni
CMSIS consente di avere un accesso standardizzato alle
funzioni che sfruttano le caratteristiche del processore
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
10/44
Cos'è il CMSIS?
CMSIS: Cortex Microcontroller Software Interface
Standard
Abstraction-layer per tutti I dispositivi basati su processori
Cortex-M
sviluppato con partnership tra produttori di silicio, tool di
sviluppo e middleware
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
11/44
Cosa è standardizzato
nel CMSIS?
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
12/44
Standard per embedded software
Funzioni standard di accesso a
NVIC
System Control Block (SCB)
System Tick timer (SysTick)
interrupt control e inizializzazione del SysTick
Definizioni standard per i registri di
NVIC
SCB
SysTick
Per garantire la portabilità del software si dovrebbero usare le funzioni di
accesso standard. Tuttavia, in alcuni casi si ha la necessità di accedere
direttamnte ai registri di NVIC, SCB, o SysTick. In tali casi la definizione
standard dei registri consente di realizzare un software portabile.
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
13/44
Standard per embedded software
Funzioni standard per l'accesso a istruzioni speciali dei Cortex-M
alcune istruzioni dei Cortex-M non possono essere generate dal
normale codice C.
Quando è necessario, le funzioni CMSIS consentono di fare
questo
altrimenti il progettista è costretto a utilizzare funzioni
specifiche del compilatore o codice assembly, col risultato di
avere un software poco portabile e dipendente dalla specifica
toolchain.
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
14/44
Standard per embedded software
Nomi standard per i codici di gestione delle eccezioni (molto
importante in sistemi embedded con OS)
il progetto di sistemi con gestione delle eccezioni diviene più
semplice
Nomi standard per le funzioni di inizializzazione del sistema
la funzione “void SystemInit(void)” rende immediato lo sviluppo
del software di inizializzazione del sistema
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
15/44
Standard per embedded software
Variabili standard per le informazioni relative
alla frequenza di clock
“SystemFreq” (CMSIS v1.00 to v1.20)
“SystemCoreClock” (CMSIS v1.30 or newer)
utili a determinare la frequenza di clock del processore
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
16/44
Organizzazione
del CMSIS
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
17/44
Struttura di CMSIS
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
18/44
Struttura di CMSIS
Core Peripheral Access Layer
• definizioni di
nomi
indirizzi
funzioni
per accedere ai registri della
CPU e delle sue periferiche
(NVIC, SCB, SysTick)
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
19/44
Struttura di CMSIS
Middleware Access Layer
• metodo unificato per accedere
alle periferiche
• per lo più dedicato
all'interfacciamento (UART,
Ethernet, SPI)
• consente di usare il software
per qualunque dispositivo basato
su Cortex che supporti
l'interfaccia di comunicazione
voluta
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
20/44
Struttura di CMSIS
Device Peripheral Access Layer
• definizioni relative alle periferiche
(specifico per il uC)
registri
indirizzi
driver
funzioni
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
21/44
CMSIS Peripheral Access Layer
Layout per tutti i registri delle periferiche
Definizioni per il vettore delle eccezioni e degli interrupt
Funzioni per l'accesso ai registri del processore e delle
periferiche
interfaccia verso kernel RTOS indipendente dal dispositivo
canale di debug (stile printf e kernel-RTOS)
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
22/44
CMSIS Middleware Access Layer
Con il layer “middleware”
metodi comuni per l'accesso a periferiche di comunicazione
Componenti software che risultino “CMSIS compliant”
facile riutilizzo di applicazioni d'esempio e modelli di codice
possibilità di combinare componenti software provenienti da
diverse sorgenti
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
23/44
File per Peripheral Access Layer
File indipendenti dal compilatore:
File per Cortex-Mx core: (ARM)
core_cm3.h + core_cm3.c
core_cm0.h + core_cm0.h
File specifici per il dispositivo (costr. silicio)
header file per I registri (device.h)
file per lo startup del sistema (system_device.c)
compatibile con tutti I compilatori disponibili
IAR
RealView
GNU ...
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
24/44
File per Peripheral Access Layer
File di startup
sviluppatori compilatori & specifici per il dispositivo
codice di startup (costr. silicio)
startup_device.s
File CMSIS disponibili su www.arm.com
database dispositivi
downoald libero dei file (previa registrazione)
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
25/44
ITM Debug Access
ITM: Instrumented Trace Macrocell
32 canali di comunicazione, 2
riservati per CMSIS
ITM channel 0:
implementa la funzione
ITM_putchar che può essere usata
per avere un'uscita tipo printf
attraverso l'interfaccia di debug
ITM channel 31:
è riservata per il debug di kernel
RTOS
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
26/44
Documentazione da ARM
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
27/44
L'uso di CMSIS
in un progetto
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
28/44
Uso di CMSIS
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
29/44
Uso di CMSIS
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
30/44
Uso di CMSIS
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
31/44
Esempio
// file name depends on device
#include <device.h>
void main(void) {
SystemInit();
...
NVIC_SetPriority(UART1_IRQn, 0x0);
NVIC_EnableIRQ(UART1_IRQn);
...
}
// peripheral Interrupt Handler
void UART1_IRQHandler {
...
}
// SysTick Interrupt Handler
void SysTick_Handler(void) {
...
}
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
32/44
Esempio
// Timer Interrupt Handler
void TIM1_UP_IRQHandler (void) {
...;
}
// setup Timer (device specific)
void timer1_init(int frequency) {
// Set Timer priority
NVIC_SetPriority (TIM1_UP_STM_IRQn, 1);
//Enable Timer Interrupt
NVIC_EnableIRQ (TIM1_UP_STM_IRQn);
}
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
33/44
Funzioni per l'uso delle periferiche “speciali”
Funzioni per l'uso dell'NVIC
EnableIRQ
DisableIRQ
GetPendingIRQ
SetPendingIRQ
ClearPendingIRQ
SetPriority
GetPriority
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
34/44
Vantaggi
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
35/44
Quick reference: data type
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
36/44
Quick reference: numerazione eccezioni
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
37/44
Quick reference: funzioni per NVIC
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
38/44
Quick reference: funzioni per sistema e SysTick
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
39/44
Quick reference: funzioni di accesso ai registri CPU
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
40/44
Quick reference: istruzioni speciali
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
41/44
Quick reference: istruzioni speciali
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
42/44
Riferimenti
Joseph Yiu
“The definitive Guide to the ARM CORTEXTM-M0
pp. 65-71, 447-451
Newnes, 2011
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
43/44
Grazie per l'attenzione …
… domande?
All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License
(unless otherwise specified).
Elettronica dei Sistemi Programmabili – marzo 2014 – S. Salvatori
44/44