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
© Copyright 2024 Paperzz