Home

Universit degli Studi di Genova

image

Contents

1. imebase 10 9 ug Trigger C1 5 00 ps divf Stop 1 53 60 0kS 10GS sfEdge Positive X 457nso AX3 20 692ps X2 21 149 us 1 4 48 328 kHz 21 07 2008 16 02 40 Fig 5 6 Screenshot all oscilloscopio del CST di FreeRTOS al secondo istante Math Utilities Help x 1 00 Vidiv 5 00 psidiv Stop 1 53 0 0 mV ofst 50 0kS _1 0GSisfEdge Positive XI 457ns A 29 452 ps X2 29 909 pus 1 AX 33 954 kHz 21 07 2008 16 26 03 Fig 5 7 Screenshot all oscilloscopio del CST di FreeRTOS al terzo istante 68 File Vertical Timebase Trigger Display Cursors Measure Math Analysis Utilities Help 5 00 psidivf Stop 1 32V 50 0kS 1 0GSisfEdge Positive X1 170ns AX 14 211 ys X2 14 381 ys 1 AX 70 368 kHz 18 07 2008 17 35 57 Fig 5 8 Screenshot all oscilloscopio del CST di IAR PowerPac Come si pu evincere dalle figure precedenti i valori rilevati non sono assolutamente simili infatti mentre abbiamo un unico valore stabile per IAR PowerPac per FreeRTOS abbiamo ottenuto diversi valori in quanto catturato in istanti diversi mostrava tre valori differenti Infine da rendere noto come sia stata particolarmente utile la verifica effettuata attraverso l algoritmo d esempio fornito dall ambiente di sviluppo sul valore riscontrato tramite oscilloscopio per quanto riguarda il CST di IAR PowerPac tale valore infatti risultato press
2. analoyico analogico Fig 4 10 Schema a blocchi per l elaborazione dei segnali 4 2 6 1 Convertitore ADC L ADC ovvero Analog to Digital Converter un dispositivo elettronico in grado di convertire una grandezza continua i e una tensione in una serie di valori discreti che individuano seppur introducendo un errore di quantizzazione una formulazione numerica della grandezza analogica in ingresso Fondamentalmente ci sono due grandezze rilevanti quando si tratta di ADC ovvero la risoluzione ed il rapporto segnale rumore S N La prima indica il numero di valori discreti che un convertitore pu produrre ed usualmente espressa in bit la seconda va ad intaccare la prima in quanto se il segnale analogico in ingresso disturbato da troppo rumore l ADC produrr un valore poco accurato poich i bit meno significativi saranno funzione del rumore e non del segnale Convertitore analogico digitale Fig 4 11 Schema a blocchi di un ADC generico Inoltre da non sottovalutare l importanza che ha la struttura circuitale di conversione ne esistono diversi tipi tra cui le pi importanti sono quelle flash ad approssimazioni successive a codifica delta a doppia rampa e a subranging quantiser 24 46 Per quanto riguarda 1 LPC2378 la risoluzione di 10 bit mentre la struttura circuitale di approssimazione ad approssimazioni successive con 8 canali utilizzando tale struttura la sua risoluzione li
3. bene fornire un adeguata definizione di cosa sia effettivamente un JTAG il suo nome proviene da un gruppo industriale denominato Joint Test Action Group nato nel 1985 con lo scopo di sviluppare un metodo efficace per testare 1 circuiti integrati dopo la produzione Furono attraversati numerosi livelli e modalita per raggiungere questo scopo sino a che nei primi anni 90 fu sviluppato lo standard IEEE 1149 1 che sarebbe stato chiamato in futuro JTAG prendendo il nome del gruppo che lo aveva appunto progettato Per individuare meglio l utilit dello standard JTAG bene spendere alcune parole su cosa ci sia alla base di questa tecnologia di test unificata ovvero il boundary scan Il boundary scan noto anche come JTAG fu proposto come soluzione innovativa per far fronte all aumento vertiginoso della densit dei componenti sulle schede elettroniche e al diffondersi di nuovi tipi di contenitore che rendevano estremamente difficoltoso l accesso ai punti di misura necessari per eseguire il collaudo quali pins e collegamenti integrati Il grande vantaggio della tecnologia boundary scan dato dal fatto che dedicando un numero molto limitato di piedini tipicamente cinque TCK TMS TDI TDO TRST e una piccola area di silicio all interno dei componenti digitali per inserire le logiche di controllo destinate alle funzionalit di collaudo risulta possibile creare un sistema di verifica adatto a rilevare un gran numero di potenziali guasti s
4. Oltre che fornire la possibilita di testare un intero sistema in maniera razionale ed efficace il JTAG spesso permette di scaricare degli applicativi standard specifici su una data flash permettendo cosi il caricamento dell intero programma compilato sulle memorie di un eventuale microcontrollore questo proprio quello che fa al caso nostro A corredo di ogni JTAG sono presenti ambienti di visualizzazione da installare sul PC questi possono essere pi o meno evoluti e permettono vari livelli di analisi delle informazioni provenienti dal uC La scelta del JTAG si basa sostanzialmente sui seguenti fattori e Integrabilita con l IDE spesso i drivers del JTAG installati sul PC permettono l integrazione con le interfacce grafiche degli ambienti di sviluppo Questo permette allo sviluppatore di incrociare in maniera intuitiva le informazioni del codice sorgente con quello macchina ed avere cos una visione pi esplicativa dei registri interni al microcontrollore e Funzionalit un buon JTAG ha la capacita di inserire breakpoint di effettuare profiling ed inoltre avere la capacit di visualizzare pi o meno registri relativamente all architettura del uC Nel nostro caso si scelto il JTAG della IAR j link che un piccolo dispositivo hardware ARM JTAG collegabile in maniera plug amp play direttamente al PC tramite interfaccia USB dal cui altro capo vi collegato un connettore standard N JTAG a 20 pins che trover la des
5. Questo oscillatore a cristallo opera nel range di frequenze da 1MHZ a 24MHz questa frequenza pu essere incrementata sino al massimo valore operativo della CPU dal PLL In questo modo possibile utilizzando un oscillatore generico riuscire ad ottenere la frequenza desiderata per le proprie necessit operative agendo di fatto solo sul PLL 48 4 2 7 2 Internal RC Oscillator IRC L Internal RC Oscillator viene utilizzato come sorgente di clock per quanto riguarda il Watchdog Timer e o come sorgente di clock pilotante il PLL e successivamente la CPU la frequenza nominale dell IRC 4MHz con 1 1 di accuratezza Nella fase di accensione o in qualsiasi fase di reset del chip 1 LPC2378 utilizza PIRC come sorgente di clock e successivamente si pu commutare la sorgente verso una fonte di oscillazione differente 4 2 7 3 RTC Oscillator L RTC Oscillator o Real Time Clock Oscillator un oscillatore atto a generare un segnale di clock per il dispositivo con funzione di orologio del nostro microprocessore ovvero fornisce la temporizzazione al dispositivo che conteggia il tempo reale anno mese giorno ora minuto secondo anche successivamente alla fase di spegnimento del sistema Per poterlo fare gli RTC hanno un oscillatore a quarzo a loro dedicato e sono alimentati da una speciale batteria autonoma rispetto all alimentazione generale AI contrario i clock non Real Time non funzionano quando il sistema spent
6. complete atte a gestire gli interrupt con ottimi risultati Questo ci ha portati a prendere la decisione di analizzare quindi soltanto le performance date da quest ultimo in vista di importare in un futuro lo stesso gestore degli interrupt in FreeRTOS Volendo trarre qualche somma possiamo dire che IAR PowerPac oltre che ad essere fornito di un Interrupt handler quest ultimo anche particolarmente ottimizzato rendendo cos IAR PowerPac di grande interesse relativamente ai nostri scopi applicativi Altres per FreeRTOS non si pu dire molto in quanto il gestore degli interrupt del tutto inesistente per la nostra architettura File Vertical Timebase Trigger Display Cursors Measure Math Analysis Utilities Help 1 1 1 1 1 i imebase 752ng Trigger I 1 00 Vidiv 1 00 Vidiv Stop 1 58V 0 0 mv ofst 0 mV offset 10 0kS 5 0GS sfEdge Negative 2 560 V T 256 mv 2 303 V pi 53 9 mviL Ma 1 0ns amp 1 3000 ys he 2 5160 Y x a Ay 2 4621 US X2 1 2990 ys 1 4X 769 2 kHz LeCroy 01 08 2008 15 20 03 Fig 6 3 Screenshot all oscilloscopio dell Interrupt Latency di IAR PowerPac 85 In questa occasione non trattandosi di un vero e proprio confronto a livello numerico abbiamo rappresentato qui sopra piuttosto che un grafico la schermata fornita dall oscilloscopio relativamente all Interrupt Latency di IAR PowerPac in maniera tale da poter apprezzare la risicatezza del suddetto valore pari a 1 3 us
7. importazione di tale porzione di sistema operativo da terze parti effettuando chiaramente le opportune rettifiche di adattamento Per quanto riguarda IAR PowerPac la gestione degli interrupt totalmente integrata in alcune funzioni di libreria Il codice relativo all interrupt handling di PowerPac individua una gestione delle interruzioni piuttosto performante con questa premessa siamo convenuti data la disponibilit di FreeRTOS ad accettare inclusioni di codice importato da terzi nel riutilizzare la medesima porzione di codice di PowerPac anche per FreeRTOS Quanto detto sopra giustifica il fatto che questo paragrafo a differenza del 5 1 2 non sia bipartito tra i due RTOS in quanto per entrambi i sistemi il codice analizzato e successivamente modificato lo stesso e quindi si renderebbe superficiale ed inutile un analisi separata facendo essi stessi di fatto capo alla stessa fonte Come per il calcolo del CST abbiamo dovuto individuare alcuni pins che potessero essere configurati come uscite in questo caso abbiamo utilizzato gli stessi in questo contesto abbiamo inoltre dovuto cercare dei pins configurabili come ingresso per il nostro microcontrollore in maniera tale da abbinarvi un interrupt Tutto ci stato fatto sulla base di poter usufruire di un connettore sull Evaluation Board che potesse essere comodamente raggiungibile con una sonda in maniera tale da poter verificare il corretto funzionamento del circuito ge
8. notare una notevole varianza del valore relativo al CST di tale sistema campionato nelle varie sessioni di test Qui di seguito mostriamo inoltre un istogramma rappresentante il valore medio calcolato sulle tre sessioni di test notevoli Comparazione media CST m FreeRTOS mM IAR PowerPac usec FreeRTOS IAR PowerPac Sistemi operativi Fig 6 2 Comparazione media del CST dei singoli RTOS 84 Volendo concludere commentando i risultati citati in precedenza non si pu negare come le performance di IAR PowerPac siano migliori offrendo un CST inferiore e soprattutto stabile rispetto a FreeRTOS questo viste le premesse di coerenza nella valutazione da attribuire ad una migliore gestione dello scheduler da parte di IAR PowerPac Da notare inoltre come accennato al paragrafo 5 1 3 che il risultato ottenuto dalle misurazioni del CST sopra descritte relativamente a IAR PowerPac a maggior ragione attendibile in quanto valutando lo stesso parametro attraverso un benchmark dedicato risulta che lo scostamento tra i due valori hardware e software sia pressoch nullo 6 1 2 Interrupt Latency In questo caso la situazione un po differente dal comune in quanto come accennato in apertura al paragrafo 5 2 2 per l architettura da noi utilizzata il sistema operativo FreeRTOS non dispone di un gestore degli interrupt Qui entra in gioco IAR PowerPac esso infatti provvisto di funzionalit
9. occupazione di memoria Per fare ci ci siamo serviti di tutti i componenti elencati al Capitolo 3 in questo modo abbiamo cos a disposizione i due RTOS da mettere a confronto e gli strumenti sia software che hardware necessari ad eseguire le dovute valutazioni sperimentali Per fare queste verifiche ci siamo resi conto che era necessario lo svolgimento di una prassi costituita da tre punti cardine che vanno dal criterio sperimentale al report dei risultati ottenuti passando attraverso una pi ampia fase nella quale si svolta l implementazione di un algoritmo atto all acquisizione delle misurazioni di interesse e Criterio sperimentale per criterio sperimentale intendiamo una descrizione introduttiva del percorso generale che abbiamo intrapreso dettagliando ove utile i vari noccioli caratterizzanti questa sessione di calcolo e Algoritmo implementato per algoritmo implementato si intendono tutte quelle modifiche e tutte quelle aggiunte al codice nativo del sistema operativo che permettono di svolgere attivit di test e sperimentazione Ci siamo accorti che nell effettuare le varie operazioni bene procedere per piccoli moduli in maniera tale da fissare volta dopo volta successivi obiettivi che sommati portino al raggiungimento del traguardo preposto e Report dei risultati nel report dei risultati andremo a definire in maniera puramente informativa gli effettivi valori ottenuti in seguito alle suddette operazioni di va
10. 4 4 Flash memory generica Compatibilmente al Bus AMBA AHB viene supportato il GPDMA General Purpose Direct Memory Access il quale permette di sfruttare i vantaggi del supporto DMA sul nostro microcontrollore NXP LPC2378 Il DMA permette ad alcuni sottosistemi hardware di accedere alla memoria di sistema in lettura scrittura e mette in comunicazione diretta la memoria con le periferiche senza oberare la CPU per tutta la durata dell operazione ma bens demandando ad essa solo l onere di gestire l inizio e la fine della comunicazione In questo contesto il GPDMA abilita transazioni di tipo peripheral to memory memory to peripheral peripheral to peripheral e memory to memory 4 2 3 Vectored Interrupt Controller VIC Il core del processore ARM pu accettare due tipi di interrupt in ingresso chiamati Interrupt Request IRQ e Fast Interrupt Request FIQ la differenza sostanziale tra i due fondata sull utilizzo e sulla gestione dei registri ovvero nel modo FIQ esiste una coppia fisica di alcuni registri utili all interruzione in maniera tale da ottenere una realizzazione della specifica routine di servizio senza dover salvare tali registri mentre nell IRQ tale salvataggio risulta doveroso a scapito di una superiore performance 19 38 Il uC in grado di gestire un numero definito di interrupt nel nostro caso 32 linee e ad ogni interrupt associato un pin collegabile ad una sola periferica esterna Il microcont
11. FreeRTOS O 50 us Context Switch Time 4 AR PowerPac O 50000 Bytes Footprint Fig 6 7 Spider plot relativo all assorbimento totale di risorse da parte dei due RTOS 89 Come si pu evincere dalla rappresentazione grafica alla pagina precedente le congiungenti tra le varie coppie di valori disposte su assi adiacenti generano forme triangolari in questo caso due abbinabili ciascuna di esse al relativo RTOS analizzato L effettivo assorbimento assoluto di risorse da parte di ciascun RTOS cos rappresentato dall area delimitata dal relativo triangolo prodotto nel grafico in questo ambito bene rammentare che il RTOS che ottiene il valore di area minore sia quello con prestazioni migliori rispetto all altro Da qui possiamo affermare dulcis in fundo che IAR PowerPac sia il sistema pi adatto al nostri scopi operativi 90 7 Eventuali sviluppi futuri Eccoci dunque giunti alla fase conclusiva di questo elaborato Nel contesto tecnologico dei nostri tempi i dispositivi embedded hanno assunto un importanza tale da essere contenuti in ormai qualunque dispositivo che necessiti di funzionare in maniera automatica l esplosione dell utilizzo di questi dispositivi dimostrata dalla notevole quantit di microchips embedded prodotti ma soprattutto dalla sconvolgente variet di RTOS presenti sul mercato Avviamo quindi ora un breve percorso cronistorico che si snoder dal ripercorrere i
12. punto di partenza per tutte le successive attivit sperimentali in quanto grazie all installazione su di esso dell ambiente di sviluppo stato possibile leggere e modificare i progetti contenenti il codice sorgente del sistema operativo 3 1 1 Ambienti di sviluppo A questo punto doveroso dedicare un intero paragrafo agli ambienti di sviluppo prima di tutto bene individuare quali siano le varie componenti anche se a volte non tutte presenti caratterizzanti un ambiente di sviluppo specificando in seguito quali siano le loro Fig 3 3 IDE diIAR peculiarit cos da rendere pi comprensibile il suo significato e L IDE ovvero l Integrated Development Environment un ambiente integrato di sviluppo e cio un editor grafico di codice sorgente che permette di integrare gli 24 accessi al software per il debug e l utilizzo di compilatori in maniera implicita Questo aiuta i programmatori nello sviluppo di applicazioni ed inoltre IDE una costante di sviluppo e non dipendente dal microcontrollore usato Il compilatore che un programma che traduce una serie di istruzioni da un determinato linguaggio pi vicino all uomo codice sorgente in una serie di istruzioni pi vicine alla macchina codice oggetto Gli strumenti di building dove viene attuato il processo di linking da parte del linker che il procedimento per cui vengono presi uno o pi oggetti generati dal compilatore ed assemblati i
13. FreeRTOS 29450 13000 37282 79732 TAR PowerPac 14210 13000 18148 45358 Tab 6 3 Valori specifici relativi alla comparazione assoluta tra i due RTOS 88 Per rendere in via grafica piu facilmente visibile la conclusione che ne sortita e stata sviluppata una tabella utilizzando alcuni artifizi in maniera tale da costituire in corrispondenza ad essa un grafico ricco di significato Per far ci innanzitutto abbiamo preso l ordine di grandezza del Footprint come riferimento poich numero intero ed abbiamo eliminato le unita di misura su tutti 1 parametri Dopodich per rendere graficamente comparabili e coerenti il CST e l Interrupt Latency di entrambi i sistemi con l ordine di grandezza del Footprint abbiamo moltiplicato i valori del CST per un fattore 100 e quelli dell Interrupt Latency per un fattore 1000 Successivamente per ogni sistema abbiamo sommato i relativi valori diventati ormai numeri puri compatibili e coerenti ottenendo cos un istogramma costituito da due barre comparabili rappresentanti l assorbimento assoluto di risorse da parte dei due sistemi relativamente alla nostra architettura Per dare un senso grafico maggiormente intuitivo ai risultati provenienti dai vari tests svolti inseriamo di seguito uno spider plot detto anche grafico radar nel quale vi sono rappresentati sui tre assi i parametri direttamente coinvolti nelle sessioni di test Interrupt Latency O 5 us e
14. GPIOInit 4 FAST_PORT DIR_OUT GPIO_SC OS_U8 Stat OS_TASK pActiveTask OS_DICnt 0 Perform some sanity checks to find possible bugs in the assembly part if OS_SUPPORT_SAVE_RESTORE_HOOK endif For round robin task store the number of remaining TimeSlices and handle it GPIO_SC_FIO GPIO SC semino luciani GPIO_SC_FIO GPIO_ SC semino luciani if OS_RR_SUPPORTED 62 endif Call the optional r Ye context hook function which will typically restore whatever it saved before GPIO_SC_FIO GPIO SC semino luciani GPIO_SC_FIO GPIO SC semino luciani if OS_SUPPORT_SAVE_RESTORE_HOOK endif OS_pCurrentTask NULL OS_PREPARE_STACKPOINTER OS_RegionCnt 0 OS_DICnt already 0 OS_EI_KERNEL OS_IDLE Gia dalle prime righe possiamo individuare la funzione di inizializzazione del GPIO che oltre ad essere la stessa utilizzata per il RTOS precedente contiene anche gli stessi parametri affinch si possa pilotare il medesimo GPIO e di conseguenza si possa accendere sempre lo stesso led Come si pu notare successivamente le istruzioni sono molte ma sono la totalit di ci che si rende necessario affinch si verifichi un effettivo cambio di contesto questo nonostante possa far apparire il programma notevolmente lungo non deve far supporre che il costo computa
15. I suddetti componenti tranne l ambiente di sviluppo che propriamente installato sul Laptop sono collegati tra loro come visibile in figura Fig 3 1 Schema strutturale della sequenza di test Come visto in figura il tutto pu essere riassunto da un insieme di oggetti interconnessi tra loro andremo ora quindi ad analizzare le particolarit strutturali e funzionali di ciascuno di questi oggetti e per quanto riguarda le interconnessioni ci limiteremo a descriverne brevemente l utilit dovendo quest ultime adempiere ad un mero compito di trasmissione 3 1 Descrizione del PC Il primo strumento di cui ci siamo serviti stato un Notebook HP nc6320 provvisto di un microprocessore Intel Core 2 Duo T5600 operante ad una frequenza di clock pari a 1 83GHz e con 2GByte di memoria RAM a bordo di questo Laptop stato installato come sistema operativo Microsoft Windows Fig 3 2 PC Laptop utilizzato XP Professional con Service Pack 2 Per quanto riguarda gli altri componenti hardware on board non di fondamentale importanza fornire ora la descrizione specifica in quanto ci che importa la loro presenza piuttosto che la loro performance sufficiente quindi spendere due parole sul fatto che tale Laptop disponga di una scheda madre in grado di fornire interfacce utili ai nostri scopi quali in primis l interfaccia USB Oltre che per poterci interfacciare con periferiche atte alle attivit di test tale PC stato il
16. XP Professional che permette l utilizzo di un software dedicato alla gestione dell intero strumento tale software include una svariata quantit di funzionalit utili ad applicazioni matematiche da apportare al fine di ottenere una ragionevole qualit dei dati ed una conseguente miglior visualizzazione degli stessi a noi personalmente stato di estrema utilit dovendo in seguito occuparci di misurazioni temporali l operatore sottrazione sull asse dei tempi che ci ha permesso di valutare con estrema precisione le tempistiche effettuando una precisa differenza tra 1 valori di nostro interesse individuati dalle posizioni dei relativi cursori Un altra funzionalit a noi molto utile stata quella relativa alla possibilit di poter fotografare ed in seguito stampare o salvare su unit rimovibili vedi report Capitolo 5 ci che in tempo reale fosse apparso sul display dell oscilloscopio 33 L oscilloscopio dunque si configura come un oggetto prettamente atto all acquisizione di segnali e nel nostro caso anche alla loro parziale elaborazione in maniera tale da rendere possibile una interpretazione temporale dei segnali in termini di livelli di tensione provenienti dal uC da parte dello sviluppatore 34 4 Descrizione del Microcontrollore NXP LPC2378 Il mondo dei microcontrollori estremamente vasto ed insidioso Questo dato dal fatto che la quantita dei dispositivi presenti sul mercato sia pressoch innumerev
17. che implementi lo stesso protocollo Il nostro microcontrollore supporta svariate interfacce seriali in primo luogo indispensabile per la comunicazione di rete quella Ethernet successivamente come collegamento tra diversi dispositivi abbiamo la USB 2 0 strettamente legata al Controller DMA quella CAN a due canali quattro di tipo UART tre I C una I S per applicazioni audio digitali una SPI e due SSP con compatibilit multiprotocollo Analizzeremo singolarmente in seguito le peculiarit caratterizzanti di tali interfacce 4 2 5 1 Interfaccia Ethernet Ethernet il tipo pi diffuso di rete locale che esista al mondo Tale sistema consente lo scambio diretto di dati in formato elettronico tra due o pi computer senza ricorrere allo scambio di periferiche di archiviazione rimovibili questo modo di comunicare risulta estremamente vantaggioso qualora 1 computers siano dislocati in siti molto distanti tra loro La natura di Ethernet quindi di consentire il libero colloquio con qualsiasi macchina collegata e di trasmettere la stessa informazione contemporaneamente a tutte le macchine in ascolto Chiaramente come in ogni ambito comunicativo necessario stabilire un protocollo di comunicazione e di conseguenza di creare un adeguata interfaccia compatibile con lo standard Ethernet 20 40 Il blocco Ethernet contiene una Ethernet MAC a 10 Mbit s o 100 Mbit s completamente caratterizzata da performance ottimizzate attraverso
18. curioso vedere come la presenza di Sistemi Embedded che andata sviluppandosi sempre pi negli ultimi anni fosse gi esistente anche se in forma pi grezza all inizio degli anni sessanta specificatamente in ambito aerospaziale Nel 1961 infatti compare quello che si pu definire il primo vero Sistema Embedded prodotto in massa esso si occupava della guida dei missili Minuteman tecnicamente conosciuto come Autonetics D 17 che utilizzava circuiti logici con transistor ed un hard disk come memoria principale In seguito nei successivi decenni i Sistemi Embedded hanno subito una riduzione dei costi cosi come un enorme crescita della loro capacita di calcolo e delle loro funzionalita Il primo uP progettato per essere messo in commercio stato l Intel 4004 che venne montato su calcolatrici ed altri sistemi di piccole dimensioni Esso richiedeva comunque dei chip di memoria esterni ed altra logica di supporto Verso la fine degli anni settanta i microprocessori ad 8 bit erano la norma ma necessitavano sempre di memoria esterna logica di decodifica e di un interfaccia con il mondo esterno In ogni caso i prezzi erano in caduta libera e sempre pi applicazioni cominciarono cos ad adottare questo approccio piuttosto che metodologie di progetto di circuiti logici personalizzate Verso la met degli anni ottanta un maggiore grado di integrazione permise il montaggio di altri componenti in precedenza collegate esternamente
19. da IAR PowerPac sia circa la meta Si puo ulteriormente evincere come in condizioni di coerenza stesso compilatore e stessa modalita di compilazione IAR PowerPac abbia una performance in termini di Footprint di grande vantaggio rispetto a FreeRTOS 87 6 2 Conclusioni e considerazioni Tirando la rete in barca non ci resta che guardare quale sia il pesce migliore Entrambi i sistemi hanno caratteristiche di tutto rispetto ma ovviamente come visto pi volte in precedenza ciascuno ha il proprio rovescio della medaglia detto questo 1 risultati parlano chiaro poich sia a livello qualitativo Interrupt Latency che a livello quantitativo CST e Footprint IAR PowerPac dimostra capacit prestazionali in termini di occupazione di risorse e di svolgimento dei compiti superiore a FreeRTOS Volendo effettuare una comparazione forzata ma allo stesso tempo assoluta relativamente all assorbimento delle risorse da parte dei due sistemi si pu giungere al grafico sottostante con la relativa tabella Comparazione assoluta assorbimento risorse 79732 O Footprint Occupazione 50000 p 400004 risorse 30000 E 200004 100004 0 E Interrupt Latency m Context Switch Time FreeRTOS IAR PowerPac Sistemi operativi Fig 6 6 Istogramma di comparazione assoluta tra i due RTOS A A 0 D A 0 Ly 0 D Ly R A B OPERA 0 Context Switch Time Interrupt Latency Footprint TOTALE
20. di risolvere un applicazione di calcolo ben precisa e i GPP General Purpose Processors dispositivi elettronici che non sono dedicati ad un solo possibile utilizzo combinando cos la velocit dei primi con la convenienza della riprogrammabilit dei secondi 1 2 2 Programmable Logic Device PLD Nel mondo embedded figura un altro dispositivo che domina una cospicua parte di mercato questo genere di componente elettronico conosciuto con l acronimo di PLD ovvero Programmable Logic Device Un PLD un circuito elettronico utilizzato come parte di circuiti digitali a differenza di una porta logica il cui compito vincolato all implementazione di una predefinita e non modificabile funzione logica il dispositivo al momento della fabbricazione non configurato per svolgere una determinata funzione logica I primi componenti appartenenti a questa grande famiglia sono stati introdotti sul mercato intorno alla met degli anni settanta con il nome di PAL Programmable Array Logic Essendo una grande famiglia i membri da cui costituita non sono pochi infatti un po a causa della legge di Moore e un po a causa dell enorme evoluzione delle tecnologie per la realizzazione di circuiti integrati successivamente sono stati introdotti dispositivi sempre piu complessi quali i PLA Programmable Logic Array i GAL Generic Array Logic i CPLD Complex Programmable Logic Device gli FPGA Field Programmable Gate Array ed
21. funzionamento abbiamo progettato grazie alla collaborazione dell Ing Luigi Veardo un piccolo circuito elettrico ad hoc in grado di provocare una variazione di livello in termini di tensione ai capi di due pins di cui uno necessariamente EXT2 24 mentre l altro a seconda dello stato in cui si trova il circuito pu essere o l EXT2 39 o 1 EXT2 40 tale variazione di tensione verr dunque interpretata come un interrupt da parte del uC Il circuito elettrico per la generazione di interrupt da noi utilizzato cos costituito e Contatto normalmente aperto e Una resistenza di pull up da 110 e Uno zoccolo nero compatibile con la porta EXT2 if J EXT2 24 ME INT contatto normalmente aperto EXT2 40 EXT2 39 fisso a massa fisso a 3 34 Fig 5 9 Dispositivo generatore di Interrupt Fig 5 10 Schema circuitale del generatore di Interrupt 12 Volendo fare una breve descrizione di questo semplice circuito sulla base dei componenti e dello schematic alla pagina precedente possiamo individuare come il valore di tensione letto dal pin EXT2 24 sia direttamente dipendente dall azione di pressione del microinterruttore tale azione deve per forza essere effettuata da noi e l interrupt sar quindi generato dall esterno Per quanto riguarda il circuito di notifica dell output ovvero il LED stato mantenuto quello progettato per il calcolo del CST par 5 1 2 con i medesimi collegamenti sull STK Veniamo ora al sod
22. i valori specifici salta subito all occhio come IAR PowerPac effettui il cambio di contesto in tempo minore assestandosi a 14 21 us Correlato a questo risultato interessante notare come nelle varie sessioni notevoli di test tale sistema oltre che essere il pi rapido tra i due mantenga con estrema costanza il valore del suo CST Segue quindi l istogramma a barre orizzontali sopraccitato e la relativa tabella contenenti i tempi di cambio di contesto di FreeRTOS e IAR PowerPac relativamente ad alcune sessioni di test notevoli che si sono rese utili rispetto all attuazione di un unica sessione alla rilevazione dei valori che li contraddistinguono 83 Comparazione Context Switch Time m AR PowerPac FreeRTOS Sessioni di test notevoli N 0 5 10 15 20 25 30 35 usec Fig 6 1 Istogramma di comparazione tra i due RTOS relativamente al CST SISTEMA SESSIONI DI TEST CANINO prima sessione seconda sessione terza sessione 17 45 us 20 69 us 29 45 us TAR PowerPac 14 21 us 14 21 us 14 21 us Tab 6 1 Valori specifici relativi al CST dei due RTOS In maniera direttamente contrapposta a quanto detto sopra si pu notare come per quanto riguardi FreeRTOS il tempo di cambio di contesto sia palesemente superiore denotando cos sullo stesso terreno una velocit inferiore Ma non tutto infatti come facilmente visibile dal grafico sopra si pu
23. infine gli MPGA Mask Programmable Gate Array Questi dispositivi nella loro architettura fondamentale sono costituiti da celle ed interconnessioni principalmente le celle svolgono delle funzioni logiche complesse mentre le interconnessioni permettono di effettuare il collegamento tra le varie celle 1 Qui di seguito un esempio di architettura di un FPGA Rauting Ghannel VO Pad sii HE EE EE Logie Block Fig 1 2 Schema archietturale di un FPGA Programmare questi componenti sarebbe una questione assai complessa se non fosse che sono stati sviluppati appositi software chiamati Logic Compiler un esempio tra tutti il VHDL attraverso i quali l utente pu gestire ad alto livello le varie caratteristiche da applicare generando un bitstream ovvero flusso di bit che attraverso un Programmer Hardware andr a configurare il dispositivo programmabile 1 2 3 Microcontrollore uC Oltre all elaborazione numerica dei segnali un altra applicazione di estrema rilevanza nell ambito dei circuiti integrati l attivit di controllo Un microcontrollore o microcontroller detto anche computer single chip un sistema a microprocessore completo integrato in un solo chip progettato per ottenere la massima autosufficienza funzionale ed ottimizzare il rapporto prezzo prestazioni per una specifica applicazione a differenza ad esempio dei microprocessori impiegati nei personal computer GPP adatti per un uso pi gene
24. l l l l l l l l l 73 Come gia visto per definire le modalita di funzionamento del pin P2 10 bisogna operare sul registro PINSEL4 che espresso in base esadecimale Poich ogni valore esadecimale puo essere espresso con quattro bit e dovendo noi andare a modificare i bit 21 e 20 di tale registro a 32 bit abbiamo operato la seguente conversione BIN 0000 0000 0001 0000 0000 0000 0000 0000 HEX 0x00100000 Un altro file che abbiamo dovuto modificare per raggiungere l obiettivo preposto stato einttest c contenete oltre ad una serie di include e di define solamente l entry point define GPIO_SC 1UL lt lt 0 ra ENTRY POINT int main void TargetResetInit printf START PROGRAM n semino luciani GPIOInit 4 FAST_PORT DIR_OUT GPIO_SC SCS_bit GPIOM 1 enable fast io for GPIOO 1 USB_LINK_LED_FDIR USB_LINK_LED_MASK USB Link LED port output USB_LINK_LED_FSET USB_LINK_LED_MASK turn off USB Link LED initialize GPIO pins as external interrupts EINTInit k It s an endless loop waiting for external interrupt EINT3 can be used to test the external interrupt It s shared with GPI00 2 interrupts while 1 printf INTERRUPT OK x lAn eint0_counter semino luciani Scorrendo il listato le prime istruzioni che troviamo sono quelle relative alle operazioni di inizializzazione tra c
25. la comunicazione e Full Duplex la comunicazione pu avvenire in entrambi i sensi contemporaneamente Nell LPC2378 contenuto soltanto uno SPI Controller il quale stato progettato per la gestione di pi masters e slaves connessi ad un dato bus solo un master ed uno slave possono comunicare sull interfaccia durante il trasferimento del dato Durante questa attivit nel nostro caso il master manda sempre da 8 a 16 bit di dati allo slave ed esso manda da 8 a 16 bit di dati al master 4 2 5 8 Interfaccia SSP L SSP o meglio Synchronous Serial Port un controller in grado di operare su un bus SPI Nel nostro microcontrollore sono presenti due controller SSP questi possono interagire con pi master e pi slave sul bus ma solo un master ed uno slave possono comunicare tra loro durante il trasferimento dei dati 23 L SSP supporta comunicazioni e trasferimenti Full Duplex con frame da 4 a 16 bit che possono fluire dal master allo slave e viceversa ma in pratica spesso solo uno di questi flussi trasporta informazioni significative 45 4 2 6 Convertitori I convertitori analogico digitale ADC e 1 convertitori digitale analogico DAC sono componenti elettronici in grado di mettere in relazione il mondo in cui viviamo ovvero il mondo analogico con il mondo in cui vivono i calcolatori ovvero quello digitale Convertitore Sistema di Convertitore elaborazione digitale digitale digitale nale
26. ora nel nocciolo della questione senza perdere di vista il vero scopo della nostra analisi ovvero il calcolo del CST il problema fondamentale che abbiamo riscontrato stato quello di riuscire ad individuare quale fosse effettivamente la funzione praticante questa operazione Dopo numerose ricerche in rete e discussioni con gli ingegneri Matteo Cantarini e Luigi Veardo abbiamo visto che la funzione relativa al cambio di contesto risulta essere la seguente void vPortPreemptiveTick void GPIO sc FIO GPIO sc FIO GPIO SC semino luciani GPIO SC semino luciani Increment the tick counter vTaskIncrementTick The new tick value might unblock a task Ensure the highest task that is ready to execute is the task that will execute when the tick ISR exits vTaskSwitchContext Ready for the next interrupt TOIR portTIMER MATCH ISR BIT VICVectAddr portCLEAR VIC_INTERRUPT GPIO SC semino luciani GPIO_SC_FIO O GPIO SC semino luciani GPIO SC FI In questa porzione di codice possiamo osservare che contenuta la chiamata alla funzione vTaskswitchContext la quale la funzione a pi basso livello relativa al cambio di contesto ma non sufficiente ad attuare l operazione completa a questo punto il pi fatto Inseriamo dunque ulteriori righe di codice con lo scopo di pilotare il GPIO che ci eravamo preposti ovvero il pin 24 sulla porta EXT1 dell Evaluation Board V
27. parametri performance indicate per la nostra applicazione FreeRTOS e IAR PowerPac A queste prime due fasi ne seguita una terza che ha previsto alcune sessioni di test atte a valutare sul campo le prestazioni del RTOS relativamente a tre parametri specifici che avrebbero successivamente individuato tra i due il pi adatto ai nostri scopi applicativi Per poter effettuare 1 tests essenziali sui RTOS necessitiamo quindi di un hardware in grado di accoglierli a bordo Scelto quindi il microcontrollore pi adatto al nostro scopo ovvero l NXP LPC2378 presso i laboratori di ELSAG Datamat abbiamo individuato ed analizzato grazie al supporto degli ingegneri Matteo Cantarini e Luigi Veardo le performance operative dei due RTOS sopraccitati in maniera tale da poter avere elementi sufficienti ad individuare quale potesse essere il sistema a noi pi vicino I parametri che abbiamo stabilito essere direttamente coinvolti nella scelta tra FreeRTOS e IAR PowerPac sono stati Context Switch Time CST Interrupt Latency e Footprint La nostra applicazione necessita di una particolare velocit operativa e di un esigua occupazione di memoria da qui l assoluta necessit di avere sia un tempo di commutazione di contesto sia una latenza nella gestione delle interruzioni adeguatamente ridotti nonch di avere in memoria un immagine del sistema che sia la pi ridotta possibile Ciascuno di questi parametri stato quindi calcolato ed approfondito s
28. processi richiesta da un interrupt A questo punto stabilito per sommi capi il compito dello scheduler di indubbio interesse analizzare le logiche e le motivazioni che spingono a scegliere un dato algoritmo di scheduling piuttosto che un altro l implementazione di tale algoritmo proprio lo scheduler 7 Chiaramente chi comanda l applicazione e ad ogni applicazione corrisponde un appropriato algoritmo di scheduling infatti lapalissiano che controllare un reattore 13 nucleare piuttosto che un trenino elettrico in un plastico richieda un diverso ordinamento delle priorit ed una logica di gestione dei tempi di vita di processo molto differenti tra loro Risulta dunque interessante analizzare in breve 1 principali algoritmi maggiormente implementati nei sistemi Real Time o pi precisamente nei RTOS con lo scopo di realizzarne lo scheduler Ci sono numerosi approcci per schedulare i processi nei sistemi Real Time questi ricadono principalmente in due categorie e Schedulazione a priorit statica e Schedulazione a priorit dinamica Numerosi RTOS contemporanei utilizzano la politica a priorit statica secondo la quale non previsto alcun cambiamento nelle priorit di lavoro mentre il processo in stato di RUN Questo approccio richiede un supporto a livello di codice piuttosto leggero per implementare le sue funzionalit in questo modo lo scheduler veloce ed effettua le operazioni in maniera dete
29. questo modo riusciamo per ogni coppia di queste istruzioni ad ottenere un accensione spegnimento del led estremamente rapidi basati appunto sull operazione di XOR che genera fronti di salita discesa a tal punto che l occhio umano non sia in grado di rendersene conto ma per quanto riguarda il segnale elettrico rilevato dall oscilloscopio questa coppia di istruzioni risulta estremamente utile in quanto genera un picco di segnale tendente alla tensione di alimentazione del uC bene notare inoltre come questo sali scendi del segnale possa essere effettivamente considerato un picco poich lo skew ritardo di commutazione originato sul segnale dovuto alla tipologia del sistema del nostro dispositivo elettronico sia estremamente ridotto Quanto affermato per le due suddette istruzioni vale anche per la successiva coppia 60 Dopo aver effettuato le modifiche esposte in precedenza abbiamo avviato una ricompilazione totale del progetto e successivamente attraverso gli strumenti di debug abbiamo portato il tutto sulla memoria Flash del microcontrollore Da qui finalmente si pu asserire che il CST sia proprio l intervallo temporale che intercorre tra i due picchi di segnale rilevati posizionando la sonda dell oscilloscopio ai capi del led 5 1 2 2 IAR PowerPac L altro sistema operativo da noi analizzato IAR PowerPac esso avendo licenza proprietaria e quindi non liberamente scaricabile dalla rete ci stato forn
30. sistemi di accelerazione hardware questo blocco include una generosa suite di registri di controllo per operazioni Half o Full Duplex Flow Control Frame Control Transmission Retry Packet Filtering e Wake Up su attivita LAN Fig 4 5 Interfaccia Ethernet La CPU ed il blocco Ethernet condividono un sottosistema di accesso dedicato bus AHB usato per accedere alla Ethernet SRAM Tutto il resto del traffico sul bus AHB del microcontrollore avviene su un sottosistema AHB differente dal precedente in maniera tale da separare effettivamente il traffico Ethernet dal restante traffico di sistema 4 2 5 2 Interfaccia USB Lo Universal Serial Bus USB uno standard di comunicazione seriale che consente di collegare diverse tipologie di periferiche ad un computer esso stato progettato per consentire a tipi diversi di periferiche di essere connesse usando un solo tipo di interfaccia standardizzata ed un solo tipo di connettore e per migliorare la funzionalit plug amp play consentendo di collegare scollegare i dispositivi senza riavviare il computer hot swap Tecnicamente parlando si conforma come un bus a 4 fili che supporta la comunicazione tra un host ed un numero di massimo 127 periferiche L host controller alloca la banda USB ai dispositivi collegati attraverso un protocollo di gestione basato sul principio del token Un token in informatica un blocco di testo categorizzato che individua in tempo reale quale sia il dispos
31. un fronte di salita discesa generato da una porzione di codice opportuna atta ad individuare un cambio di contesto possiamo delineare sull asse dei tempi dello oscilloscopio l effettivo costo del CST in termini di ritardo operativo Un metodo smart per fare ci quello di far accendere spegnere un led connesso ad un pin di una porta dell Evaluation Board ogniqualvolta avvenga un cambio di contesto all interno del sistema operativo 5 1 2 Algoritmo implementato In questa fase di modifica del codice sorgente del sistema operativo il primo obiettivo stato quello di riuscire a pilotare un GPIO che si comportasse come uscita su una porta a noi favorevole al posizionamento dei dispositivi per la raccolta delle informazioni puramente elettriche 33 Ricercando sullo User Manual 27 abbiamo notato che sul uC ci sono alcuni pins configurabili dinamicamente come input o output per fare in modo che questi pins siano effettivamente configurati in qualit di GPIO nel uC sono stati disposti dei registri a 32 bit che se settati adeguatamente permettono di abilitare 1 relativi pins in modalit GPIO Analizzando lo schema elettrico dell EB Tavola n 1 abbiamo rilevato sul uC la presenza del pin 0 della porta 4 pin P4 0 che pu essere configurato come I O tale pin inoltre facilmente raggiungile con una sonda applicata ad un connettore specifico sulla EB in quanto quest ultimo direttamente connesso al suddetto p
32. 2007 e Rev B a co 194100 HPS E i y TIA DA we HEADPHONE _ Interfaccia JTAG Displav LCD Interfaccia UART Fig 3 7 Scheda di valutazione OLIMEX LPC2378 STK 30 Come visibile in figura questa Evaluation Board mette a disposizione del programmatore una quantita di interfacce notevole ed inoltre diverse connessioni che non sono per risultate direttamente utili alle operazioni ed agli scopi di nostro interesse Andremo qui di seguito ad elencare tutte le porte dell EB e successivamente a commentare soltanto ci la cui partecipazione al progetto stata di rilevante importanza e per evitare fastidiosi fraintendimenti tralasceremo ci che non stato di primaria utilit Elenchiamo quindi brevemente le caratteristiche della nostra scheda di valutazione OLIMEX avente a bordo sul retro il microcontrollore NXP LPC2378 e definiamo gli ulteriori dispositivi on board che la caratterizzano e Microcontrollore ARM7 NXP LPC2378 descritto poi al Capitolo 4 posto sul retro e Alloggiamento per connettore JTAG standard a 20 pins e Display TFT LCD a colori 128x128 pixel a 12 bit e Interfaccia Ethernet a 100Mbit sec e 2 porte UART seriali RS232 e 2 driver CAN e relativi connettori e Alloggiamento per SD MMC Card posto sul retro e Connettore UEXT contenente le interfacce C SPI RS232 ed alimentazione e Ricetrasmettitore IDA e Jacks AudioIn e AudioOut per microfono e cuffie e Trimmer direttamente connesso all ADC
33. 21 Il blocco contenente il controller CAN da intendersi in grado di supportare pi bus CAN simultaneamente permettendo che il dispositivo sia utilizzato come Gateway Switch o Router tra un certo numero di bus CAN in applicazioni industriali o automotive Nel nostro microcontrollore sono presenti due CAN bus e due Controllers CAN un doppio buffer di ricezione e un triplo buffer di trasmissione inoltre non viene utilizzata la SST Single Shot Transmission che non prevede la ritrasmissione dell informazione 4 2 5 4 Interfaccia UART La UART o Universal Asynchronous Receiver Transmitter ricevitore trasmettitore asincrono universale un dispositivo hardware di uso generale o dedicato Esso converte flussi di bit di dati da un formato parallelo a un formato seriale asincrono o viceversa Fig 4 8 Interfaccia UART Oltre alla conversione seriale parallelo la UART esegue anche altre operazioni come derivazione o meglio effetto collaterale dei suoi compiti primari il voltaggio usato per rappresentare 1 bit viene anch esso convertito e i bit extra bit di start e stop sono aggiunti ad ogni bytes prima che esso venga trasmesso Inoltre mentre il rapporto di flusso byte s sul bus parallelo molto alto il rapporto di flusso in uscita dalla UART dalla parte della porta seriale molto pi basso Da notare inoltre come la UART abbia un elenco fisso di rapporti velocit che pu usare come interfaccia per la sua porta se
34. 6 1 3 Footprint Per avere una visione generale di come e quale sia stato l esito delle valutazioni fatte relativamente al Footprint calcolato per entrambi i RTOS bene innanzitutto dare uno sguardo ai grafici sottostanti che rendono pi comprensivo il risultato ottenuto Comparazione specifica Footprint readwrite data m 1576 memory E IAR PowerPac readonly data memory FreeRTOS Tipi di dato readonly code memory 0 5000 10000 15000 20000 25000 Bytes Fig 6 4 Istogramma di comparazione tra i due RTOS relativamente al Footprint TIPO DI DATO SISTEMA OPERATIVO readonly code memory readonly data memory readwrite data memory 16368 bytes 269 bytes 20645 bytes IAR PowerPac 16492 bytes 80 bytes 1576 bytes Tab 6 2 Valori specifici relativi al Footprint dei due RTOS Come si pu vedere dal grafico e dalla tabella sovrastanti e come accennato al paragrafo 5 3 3 1 risultati necessitano di alcuni commenti data la loro particolare varianza Innanzitutto bene notare come l occupazione di memoria totale sia stata suddivisa in tre parti potendo cos effettuare un pi accurato confronto tra i due RTOS andiamo quindi ora per ogni tipo di dato presente sulle ordinate del grafico a vedere quale sia stata la sua effettiva occupazione in memoria 86 Per quanto riguarda la memoria occupata dal codice r
35. MODEI Wun Tab 5 6 Astrazione schematica del registro EXTMODE REGISTRO EXTPOLAR RESERVED RESERVED RESERVED RESERVED EXTPOLAR3 EXTPOLAR2 EXTPOLARI JBD U ZO WANN Tab 5 7 Astrazione schematica del registro EXTPOLAR 75 Sulla base delle informazioni reperite sullo User Manual dell LPC23xx 27 abbiamo visto che per poter configurare le modalita di rilevazione degli interrupt da noi scelte relativamente al pin P2 10 in qualita di EINTO necessario porre i bit meno significativi di entrambi i registri a 1 Per quanto riguarda il primo registro abbiamo settato il relativo LSB a 1 in maniera tale che il gestore degli interrupt fosse edge sensible ovvero sensibile ai fronti piuttosto che ai livelli per quanto riguarda il secondo esso va ad affinare ulteriormente la sensibilita circoscrivendo la stessa prettamente nell individuazione dei fronti di salita Come si pu notare dalle istruzioni in maggior evidenza del codice vi la presenza dell operatore che effettua l operazione logica di OR bit a bit tra due variabili di uguale lunghezza quali nel nostro caso ciascuno dei due registri con una maschera adeguata Poich ogni bit di questi registri svolge una ben definita funzione che pu essere anche relativa a contesti funzionali diversi da quello in cui si sta attualmente operando eccetto il bit realmente coinvolto nelle operazioni interessate di fondamentale importanza che le modifiche a ciascun
36. PS SSEL SSEL _ SCKI GACY GPUO 1 i MOSI PO PI EG FINS TOTAL h K A SSP INTERFACE rh SSELI 8 ADG ADCONVERTER K SD MMC CARD MCICLK MCIPWR scam I und m MCIDAT 3 AQUT DIA CONVERTER N E gt TXDO TXD2 TXD3 KE VARTO UARTZ UART3 AXDO RXD2 RXDI WBAT 213 BATTERY RAM TADA RXDI DI DOTRI RTS OSR1 CTS1 DCDI Re AD1 ADZ a E aT ae SCLO SCL1 SCL2 gt ca 01 Pc2 SDAO SDAI SDAZ omasi Fig 4 2 Schema a blocchi del yC LPC2378 WATCHDOG TIMER l ba I SYSTEM CONTROL 4 2 Caratteristiche architetturali del microcontrollore Come detto al paragrafo precedente oltre che esplicare quantitativamente le componenti a bordo necessario individuare quali siano le peculiarit di tali componenti analizzeremo quindi le caratteristiche pi salienti necessarie per una buona comprensione del dispositivo 36 4 2 1 Bus dati AMBA Oltre alle caratteristiche citate al capitolo 4 il uC fornito anche di due particolari bus AHB Advanced High Performance Bus e APB Advanced Peripheral Bus il primo viene utilizzato per interfacciarsi ad alta velocit con la memoria esterna mentre il secondo si occupa della connessione con le periferiche on chip Processor Chip Fig 4 3 Bus dati generico Tra le due suddette tipologie di bus sussistono dei bridge che hanno lo scopo di agevolare lo scorrimento del traffico ovviando cos a percorsi pi lunghi e nello steso te
37. UT GPIO SC Create the task storing the handle printf START TASK n xTaskCreate Task_1 TASK1 mainBASIC WEB STACK SIZE NULL 2 amp xHandlel xTaskCreate Task 2 TASK2 mainBASIC WEB STACK SIZE NULL 2 amp xHandle2 Start the scheduler printf START SCHEDULER n vTaskStartScheduler Non deve arrivare qui printf END n return 0 Si pu osservare come la suddetta funzione sia composta da cinque blocchi contraddistinti da altrettanti commenti che ne individuano la natura il primo di questi Init Board contenente tre istruzioni utili all inizializzazione della scheda di valutazione il secondo Init GPrIo contiene una sola istruzione ed la chiamata alla funzione di inizializzazione del GPIO gi esposta Il terzo create the task storing the handle contiene tre istruzioni di cui la prima un banale print atto a rilevare il passaggio in questa zona di codice in fase di esecuzione mentre le altre due sono le chiamate alla funzione di creazione dei due tasks Il quarto start the scheduler contiene due istruzioni di cui quella realmente utile la chiamata alla funzione vraskstartscheduler che avvia la procedura di schedulazione dei tasks e una volta entratovi non dovrebbe pi uscirne da qui il quinto ed ultimo blocco non deve arrivare qui che da considerarsi di sicurezza in quanto atto a rilevare un eventuale esecuzione di codice errata 58 Entriamo
38. Universita degli Studi di Genova Facolta di Ingegneria Tesi di Laurea in Ingegneria Elettronica Porting e analisi di sistemi RTOS verifica sperimentale dei parametri caratteristici su scheda embedded con microcontrollore a basso costo Relatore Chiar Prof Ing RODOLFO ZUNINO Relatori aziendali Ing ALDO SEBASTIANI Ing MATTEO CANTARINI Candidati DAVIDE LUCIANI MICHELE SEMINO N a be 77 ELSAG DATAMAT SEA 5 Finmeccanica 26 Settembre 2008 Anno Accademico 2007 2008 Abstract Porting and analysis of RTOS systems experimental verification of characteristic parameters on an embedded platform with a low cost microcontroller In the last years the use of embedded electronic systems have grown in an exponential way and the great versatility has made embedded systems useful for several applications Among those devices microcontrollers uC have become more and more complex and sophisticated this trend of production has made necessary the use of custom software called RTOS to manage the microchip in order to provide an abstraction of it The goal of our thesis is to analyze some parameters of those systems to find at the end which of those should be the favourite RTOS compatibly with our applications II Alla Commissione di Laurea e di Diploma Alla Commissione Tirocini e Tesi Sottopongo la tesi redatta dallo studente Davide Luciani dal titolo Porting e analisi di sistemi RTOS verifica sp
39. XT1 55 10 Ohm LED EXT1 40 EXT1 24 Fig 5 2 Dispositivo LED Fig 5 3 Schema circuitale del dispositivo LED Il led e la resistenza sono connessi in serie e i loro terminali sono collegati direttamente sullo zoccolo in corrispondenza degli alloggiamenti previsti per i pin EXT1 24 e EXT1 40 Per quanto riguarda il codice abbiamo creato un applicazione contenete due tasks eseguiti in maniera alternata da parte dello scheduler abbiamo in seguito introdotto una funzione che inizializzasse il GPIO di nostro interesse successivamente abbiamo individuato la routine identificante l effettivo cambio di contesto ed infine abbiamo inserito al suo interno alcune istruzioni per alzare abbassare il segnale sul led in corrispondenza della funzione atta al cambio di contesto Tutto ci stato effettuato e per FreeRTOS e per IAR PowerPac prestando comunque attenzione ad individuare le rispettive porzioni di codice con la dovuta coerenza funzionale cos da ridurre al minimo le discrepanze non relative all effettive performance e poter cos rendere confrontabili e due risultati Riporteremo di seguito le porzioni pi significative del codice utilizzato mentre ci limiteremo a citare i prototipi e le righe realmente utili delle funzioni qualora siano particolarmente lunghe o di importanza non necessaria alle operazioni prettamente di analisi 5 1 2 1 FreeRTOS Il primo sistema operativo analizzato FreeRTOS ess
40. a da qui andremo a commentare e quindi valutare al paragrafo 6 1 2 tale misurazione effettuando le dovute considerazioni a riguardo 79 5 3 Footprint Prima di discutere riguardo l analisi del Footprint relativo ai due RTOS bene effettuare riprendendo quanto detto al paragrafo 2 2 2 alcuni richiami teorici in maniera tale da porre sufficienti basi al successivo confronto Di fatto il Footprint definisce l ammontare di memoria a cui il programma si riferisce durante la sua esecuzione chiaramente il Footprint include nel suo significato tutte quelle regioni di memoria attive che possono contenere codice stack heap costanti strutture di debug tavole di simboli etc necessari durante l esecuzione del programma le quali vengono caricate almeno una volta Un programma di grosse dimensioni avr un Footprint particolarmente ingombrante altres qualora avessimo a che fare come nel nostro caso con un dispositivo la cui memoria particolarmente risicata e con funzionalit ben pi ridotte di un calcolatore da tavolo il Footprint oltre che a essere pi ridotto sar anche circoscritto ad un tipo di dati pi semplici quali codice costanti e variabili Passiamo ora alla descrizione del percorso che ci ha condotti al reperimento dei dati utili 5 3 1 Criterio sperimentale In questo caso effettivamente il percorso si mostrato ben meno tortuoso di quanto non lo sia stato per il calcolo dei due precedenti parametri i
41. a Operativo in Tempo Reale o tecnicamente conosciuto come RTOS 1 4 Stato dell Arte In un campo cos vasto come quello dei Sistemi Embedded non cos semplice poter stabilire quale sia realmente lo stato dell arte Un po a causa della vastit degli impieghi un po a causa del gran numero di software dedicati a tali dispositivi vi una continua evoluzione che porta a stabilire solo momentaneamente ed in un brevissimo lasso di tempo quale sia realmente il sistema per eccellenza Per quanto ci riguarda il dispositivo hardware utilizzato per i nostri scopi sperimentali il uC della famiglia ARM7 modello LPC2378 prodotto dalla NXP founded by Philips per quanto riguarda il software che verr caricato su di esso saranno i successivi tests e i gli ulteriori sviluppi a decretare quale possa essere il pi adatto alle nostre esigenze 2 Confronto tra i vari RTOS 2 1 Descrizione di un RTOS Un Sistema Operativo Real Time o in tempo reale RTOS un sistema operativo specializzato per il supporto di applicazioni software Real Time Questi sistemi vengono utilizzati tipicamente in ambito industriale controllo di processo pilotaggio di robot trasferimento di dati nelle telecomunicazioni o comunque dove sia necessario ottenere una risposta dal sistema in un tempo massimo prefissato Da un punto di vista puramente teorico l intervallo di tempo in cui il sistema operativo applicativo deve reagire non ha importanza infa
42. a dire per che i nomi Timer e Counter possono essere utilizzati in maniera intercambiabile quando parliamo di componenti hardware 26 Nell LPC2378 sono inclusi quattro 32 bit Timer Counters questi sono progettati per contare i cicli del sistema che derivano dall utilizzo di un clock generato esternamente in qualit di ingresso Questo genere di dispositivi pu anche in via opzionale generare interrupt o eseguire altre azioni in determinati valori assunti dal timer I Timer Counter inoltre sono provvisti di quattro ingressi di cattura i quali interdicono il valore del Timer quando vi una transizione del segnale di input ed eventualmente generare un interrupt 4 2 8 2 Pulse Width Modulator PWM Generalmente per PWM si intende quel dispositivo che effettua la modulazione di larghezza di impulso Pulse Width Modulation questo tipo di modulazione digitale e pi specificamente l informazione codificata sotto forma di durata nel tempo di ciascun impulso di un segnale La PWM basata sul blocco Timer standard e ne eredita tutte le sue funzioni ed inoltre in addizione a quelle ne aggiunge altre basate sul confronto tra gli eventi di registro il Timer progettato per contare 1 cicli derivanti dal clock di sistema Il nocciolo della questione che la PWM pu essere utilizzata in uno svariato numero di applicazioni come ad esempio nel controllo di motori elettrici multifase grazie alla sua peculiarit di po
43. a utility di debug a bordo si pu disabilitare tale opzione ottenendo cos un conseguente programma pi leggero 81 Per quanto riguarda le ipotesi di coerenza del nostro test abbiamo posto il compilatore in modalita ARM tralasciando l inserimento delle informazioni di debug per entrambi i sistemi operativi messi a confronto 5 3 3 Report risultati ottenuti Troviamo qui di seguito la parte riassuntiva contenuta nelle ultime righe dei relativi files map riguardante il Footprint dei due sistemi ed i relativi significati numerici RI FATE RARE A RR O NO ci a A A ne a a ee R Se FREERTOS TAR POWERPAC I i i i 16 368 bytes of readonly code memory 16 492 bytes of readonly code memory i 269 bytes of readonly data memory 80 bytes of readonly data memory i 20 645 bytes of readwrite data memory l 1 576 bytes of readwrite data memory I I l Errors none i Errors none i i Warnings none 1 Warnings none i l I A alcoli Adria iu o AS PASINI ORE TAM OR O Fig 5 12 Footprint di FreeRTOS Fig 5 13 Footprint di IAR PowerPac Non stiamo come nei report precedenti a fornire commenti riguardanti i risultati ottenuti ma diciamo soltanto che in fase di compilazione possono esserci diverse modalit di generazione dell output per quanto ci riguarda abbiamo configurato il compilatore in maniera identica per entrambi i sistemi operativi cosicch le discrepanze risultanti dall esi
44. ail a lata 27 Soon Evaluation i R tee 30 O O e e a a S ni coil nels T alii 32 Descrizione del Microcontrollore NXP LPC2378 cssccssssccssssscssscccsssccssscssseess 35 AN A A A O AO ETA 35 4 2 Caratteristiche architetturali del microcontrollore n 36 421 AB AMBAS 37 4 2 2 Memoria Flash programmabile e SRAM statica on chip 37 4 2 3 Vectored Interrupt Controller VIC 38 424 Fast General Purpose Parallel LO ile sele nia 39 4 2 5 Interfacce on board rapallo 40 4 2 5 1 Interfaccia TE Met eG A ARS 40 4 2 5 2 Interfaccia AA Mas tet cata eet Ati ee OR 41 4 2 5 3 Imetec A A awe 42 4 2 5 4 Interfaccia AR O 43 VII 4 2 5 5 a A ine at Ah 44 4 2 5 6 Mica lla 44 4 2 5 7 Interfaccia SPL o solai is 45 4 2 5 8 Jiterfaccid SSP actus aol earths ttt aalenles nia 45 4 2 6 Convert i ai 46 4 2 6 1 Congertitore ADC seinri an a E A R a AARE EEES KEE 46 4 2 6 2 Convertitore DAC nnonser nena ia a A 47 4 2 7 O A E 47 4 2 7 1 Main Oscillator esei tr eo eta ea 48 4 2 7 2 Internal RG Oscillator TIRO caca 49 4 2 7 3 RICOS ni 49 4 2 8 COUNTERS MA SIA 49 4 2 8 1 General Purpose 32 bit Timer external event Counter 50 4 2 8 2 Pulse Width Modulator PWM i 50 4 2 8 3 Watchdog Timer WDT taa 51 4 2 8 4 Wake Up A R Lai 51 5 Verifica dei parametri di confronto dei due RTOS esssssssesssecssocesoosssos
45. ale la pena analizzare cosa significhi la riga di codice epro_sc_ rio ePIo sc che vediamo ripetuta quattro volte all interno del listato L operatore implementa l operazione di XOR bit a bit tra due variabili in questo caso registri di uguale dimensione poich non intendevamo apportare modifiche ai bit non direttamente coinvolti alle operazioni di nostro interesse abbiamo dovuto aggirare in qualche maniera il problema 59 Tab 5 4 Tabella di verit dello XOR Considerando il segnale X come controllo si pu rilevare la seguente propriet X 0 DU Y x 1 U Y Sulla base di questa propriet se applichiamo come controllo X pari a 0 e come ingresso Y in uscita otterremo il valore di Y stesso altres se applichiamo come controllo X pari a 1 e diamo come ingresso Y come uscita otterremo il valore di Y negato A questo punto poich ci interessa modificare lo stato del P4 0 sar necessario utilizzare una maschera per lo XOR con valore pari a 0x1 questo lascer inalterati tutti 1 bit tranne il primo ossia quello relativo al pin 0 Quindi rientrando nel contesto dell analisi del codice l istruzione cpro_sc_rro individua una define relativa al registro FIO4PIN mentre l istruzione cpIo_sc individua una define della maschera tra i due verr dunque effettuato lo XOR ed ogniqualvolta questa istruzione compaia nel codice avverr una transizione di livello direttamente dipendente dallo stato precedete In
46. capi vi sono collegati uno speciale connettore 32 Bayonet Neill Concelman BNC atto ad interfacciarsi con l oscilloscopio ed uno speciale oggetto denominato sonda da applicare ai capi dei terminali sui quali si ha intenzione di effettuare le misurazioni elettriche legate alle valutazioni ed ai Fig 3 9 Connettore BNC e sonda tests di proprio interesse Questi strumenti sono inoltre forniti di una consolle di cursori atti ad essere utilizzati per individuare sullo schermo istanti di tempo o valori di potenziali con estrema precisione tali cursori inoltre sono particolarmente utili in quanto permettono di variare la scala delle misurazioni effettuate per renderle cos maggiormente interpretabili Per quanto ci riguarda ci stato fornito un oscilloscopio LeCroy WaveRunner serie 6000 che stato concepito per essere il miglior oscilloscopio al mondo mai costruito 17 Esso dispone di un interfaccia utente che rende semplice e rapida la visualizzazione delle misure di proprio interesse tutti i controlli di visualizzazione e le funzioni base tra cui il posizionamento dei vari cursori sono accessibili attraverso le manopole di controllo poste nel layout utente in maniera tale da Fig 3 10 Consolle di cursori poter rapidamente zummare e visualizzare i vari dettagli grazie alla presenza di un touch screen a colori che coniuga la semplicit con la precisione A bordo di questo oscilloscopio gira il sistema Microsoft Windows
47. caratteristica detta Preemptive ovvero con diritto di prelazione permette di rispondere in tempo reale agli eventi critici sospendendo immediatamente 1 compiti meno importanti a vantaggio di quelli essenziali alla missione del sistema Quelle appena descritte sono propriet che si possono attribuire al nucleo o Kernel del sistema operativo ma un buon RTOS deve disporre anche di altre qualit che in larga parte si riferiscono ad un aspetto che nello sviluppo di sistemi embedded ha una importanza strategica fondamentale minimizzare il time to market In generale tra tutte le caratteristiche che indirizzano alla scelta di uno specifico RTOS piuttosto che ad un altro spiccano alcuni parametri temporali e spaziali che vale la pena di analizzare singolarmente in maniera tale da avere una maggior coscienza nella scelta del sistema giustificata da una pi approfondita conoscenza 2 2 1 File System Quando si tratta di archiviare in un qualche tipo di memoria una quantita di dati necessario mantenere una tracciatura di tale memoria In informatica un File System un meccanismo con il quale i file sono immagazzinati e organizzati su un dispositivo di archiviazione come un hard disk o un CD ROM Pi formalmente un File System l insieme dei tipi di dati astratti necessari per la memorizzazione l organizzazione gerarchica la manipolazione la navigazione l accesso e la lettura dei dati Da qui per sorge un problema a causa della
48. ch file contenente una sequenza di comandi mandato in esecuzione dall interprete dei comandi stesso come ad esempio lo stato per noi MS DOS BuildLibs BaT che dopo la sua esecuzione ha prodotto tutti i file ricompilati e per quanto ci riguarda i due file os4t_al_d a versione debug e os4t_al_r a versione release contenenti l effettivo risultato della ricompilazione relativo alla porzione di codice da noi modificata per scopi sperimentali 64 amp Src Microsoft Internet Explorer File Modifica Visualizza Preferiti Strumenti Q indietro 5A hg Cerca Es cartelle Ed Indirizzo DI C Programmi IAR Systems Embedded Workbench 5 0 Evaluation ARMiPowerPaciRTOS Src Operazioni file e cartella y a CPU i GenOSSrc Output A Altre risorse ASM BuildLib settings File batch MS DOS IAR IDE Workspad 1 KB 2 KB RTos E Documenti 3 SUE BuildLib dep BuildLib ewp SI BuildLibs 1 Documenti condivisi E File DEP File EWP File batch MS DOS 7 KB 3 Risorse del computer Risorse di rete 181 KB 50 KB DI cc see File batch MS DOS CC_CPU File batch MS DOS 1 KB 1 KB Dettagli ae CLEAN I SY CleanEww cos mi Src File batch MS DOS File batch MS DOS File batch MS DOS Cartella di file 1 KB 1 KB 2 KB Data ultima modifica marted 19 agosto 2008 10 21 Makelib Readme obe Document Documento di testo B 1 KB Fig 5 4 Screenshot della cartella contenete i due file di interesse A questo punto s
49. di testing e sviluppo utilizzati Se per montare un motore di una automobile ci vogliono chiavi inglesi brugole banchi di riscontro etc anche nel nostro caso necessitiamo di attrezzi del mestiere specifici Andremo dunque qui di seguito a mostrare una breve ma esaustiva rassegna di tutti 1 componenti hardware e software la cui fruizione ci stata gentilmente concessa da ELSAG Datamat che si sono resi utili durante le fasi sperimentali all acquisizione dei valori relativi ai parametri di confronto dei due RTOS La sequenza di test prevede l utilizzo di diversi strumenti in primo luogo abbiamo utilizzato un PC Laptop sul quale stato installato ed adeguatamente configurato l ambiente di sviluppo permettendoci la completa gestione della parte software e della relativa componentistica d interfacciamento Un altro componente fondamentale stato il JTAG che ci ha permesso di praticare un attivit di debug sfruttando le sue potenzialit di emulazione in stretta correlazione funzionale a quest ultimo vi l Evaluation Board EB facente parte dello Starter Kit STK che ci ha permesso di accedere alle funzionalit del microcontrollore attraverso la disponibilit di numerose interfacce progettate ad hoc per le valutazioni sperimentali Il componente finale che ha permesso di interfacciarci con i risultati dei test stato l oscilloscopio che si rivelato un insostituibile mezzo per la raccolta dei dati temporali
50. dinamicamente come input o output Grazie all utilizzo di registri separati possibile il settaggio e la cancellazione di pi output simultaneamente Il GPIO del nostro uC sfrutta alcune caratteristiche di ottimizzazione che ne permettono un attivit accelerata e I registri del GPIO sono delocalizzati sul local bus dell ARM in maniera tale da avere un tempo di I O minore possibile e I registri maschera permettono di trattare i settaggi dei bit di porta a gruppi lasciando gli altri bit inalterati e Tutti i registri GPIO sono indirizzabili come byte e half word e L intero valore della porta pu essere scritto tramite una sola istruzione 39 4 2 5 Interfacce on board Un interfaccia di un microprocessore un dispositivo hardware che si preoccupa in generale della comunicazione tra il microchip stesso e le periferiche o i dispositivi interni Le interfacce infatti si possono distinguere in e interfacce interne queste sono utilizzate per gestire periferiche interne in modo da aumentare le prestazioni del uC i e local bus per le memorie I C per un sensore di temperatura interno interfaccia dedicata acquisizione dati etc e interfacce esterne queste invece sono utilizzate per gestire la connessione con dispositivi esterni la connessione garantita da specifiche di protocollo standard che permettono la comunicazione i e Ethernet supporta lo standard TCP IP per connettersi con qualsiasi altro dispositivo
51. e Circuito di RESET con controllo dall esterno e 2regolatori di tensione da 3V e SV con corrente fino a 800mA e Alloggiamento per batteria e connettore per RTC e Dimensioni totali 135x101mm Come accennato sopra seguir ora la descrizione di ci che di fatto ha contribuito grazie alla sua presenza sull EB al raggiungimento dei nostri scopi sperimentali in ordine di importanza la prima interfaccia che incontriamo quella JTAG che come gi accennato al paragrafo precedente permette il collegamento con il j link in maniera tale da poter scambiare tutti i dati necessari ed usufruire di tutte le funzionalit relative ad operazioni di debugging e valutazione delle performance 31 Dopodich troviamo immediatamente le porte EXT1 e EXT2 la cui presenza ha permesso come approfondiremo successivamente al Capitolo 5 l interscambio di informazioni prettamente elettriche tra il microcontrollore e l esterno Non cos immediato ma fondamentalmente IEB non altro che un circuito stampato che mette a disposizione ai pins del microcontrollore un altrettanto numerosa quantit di terminali i quali sono direttamente connessi alle porte sul mondo esterno per mezzo di tali collegamenti unitamente alle sopraccitate porte le periferiche possono dialogare con il microcontrollore stesso e rendere dunque pi accessibili le potenzialit di quest ultimo Quindi per rendere un po pi chiaro il discorso possiamo dire che se il uC foss
52. e conseguentemente sempre pi complessi da qui nasce la necessit di gestire le loro funzionalit attraverso astrazioni software fornite dai Real Time Operating Systems RTOS che dovendo per abbracciare 1 pi svariati ambiti applicativi vengono sviluppati in modo customizzato ovvero ottimizzati per specifiche applicazioni pur mantenendo un interfaccia di tipo generale relativamente al uC A seconda delle finalit dei gruppi di sviluppo di RTOS questi possono quindi avere caratteristiche pi o meno ottimizzate rendendoli di fatto assai diversi tra loro infatti navigando in rete possibile notare come ciascuno di questi sia particolarmente incentrato su funzionalit specifiche che spaziano dalla rapidit di azione dello scheduler alla completa gestione delle attivit di networking Lo scopo della nostra tesi dunque quello di individuare quali parametri dell eventuale RTOS scelto siano direttamente coinvolti al nostro progetto ci occuperemo quindi di analizzare e valutare alcuni parametri fondamentali relativi a RTOS candidati a supportare la nostra applicazione Siamo partiti infatti da una cerchia di sette RTOS reperiti in rete aventi caratteristiche a prima vista compatibili con le nostre richieste prestazionali dopodich seguita una pi accurata fase di lettura e analisi dei relativi datasheets che ci ha portati a restringere il cerchio di interesse soltanto a due RTOS in quanto mostravano relativamente ad alcuni
53. e il serbatoio dell acqua di un condominio le porte visibili in figura sarebbero i vari rubinetti nei vari appartamenti e da ognuno di questi l acqua ovvero l informazione uscirebbe con flussi diversi da rubinetti diversi e con flussi uguali da rubinetti uguali Per una maggiore chiarezza nella disposizione elettrica dei vari oggetti sull EB e per una maggiore predisposizione alla comprensione dei capitoli successivi forniamo lo schema elettrico Tavola n 1 dell intera scheda di valutazione 3 4 Oscilloscopio In ultima battuta come visibile in Fig 3 1 nel nostro percorso di test giungiamo allo oscilloscopio venuto dunque il momento di descrivere cosa sia effettivamente questo oggetto e quali siano le sue caratteristiche di maggiore interesse L oscilloscopio uno strumento elettronico di misura che consente di visualizzare su di un Fig 3 8 Oscilloscopio LeCroy WaveRunner 6000 grafico bidimensionale l andamento temporale dei segnali elettrici e di misurare con relativa semplicit tensioni correnti e potenze Solitamente l asse orizzontale del grafico salvo impostazioni personalizzate rappresenta il tempo rendendo cos l oscilloscopio adatto ad analizzare grandezze periodiche per quanto riguarda l asse verticale esso individua principalmente valori di tensione Ci che realmente rende possibile la comunicazione tra l oscilloscopio ed il circuito costituito da un cavo coassiale ai cui
54. eadonly code memory vediamo come FreeRTOS abbia un leggero vantaggio questo probabilmente dovuto al fatto che IAR PowerPac implementi ulteriori funzionalit rispetto a FreeRTOS La memoria occupata dai dati in sola lettura readonly data memory ovvero le costanti molto ridotta per entrambi i sistemi nello specifico per da notare come l occupazione in memoria di IAR PowerPac sia inferiore di circa un fattore tre rispetto a quella di FreeRTOS Relativamente alla memoria occupata dalle variabili readwrite data memory il vantaggio completamente ad appannaggio di IAR PowerPac in quanto la memoria dedicata ai dati in lettura scrittura inferiore di circa un fattore tredici rispetto al concorrente FreeRTOS Da qui molto utile inserire un ulteriore istogramma individuante l effettiva occupazione totale di memoria dei due RTOS ovvero il loro Footprint Comparazione globale Footprint 40000 35000 30000 readwrite data PI 25000 memory 20000 18148 El readonly data d memory 15000 E readonly code 10000 memory 5000 0 FreeRTOS IAR PowerPac Sistemi operativi Fig 6 5 Istogramma di comparazione globale relativamente al Footprint Il grafico sopra rappresenta per ciascuno dei due RTOS la somma totale delle occupazioni in memoria relativamente ai vari tipi di dati sopraccitati e mostra in maniera molto esplicita come la memoria effettivamente occupata
55. erfacce con l esterno 18 4 1 Schema a blocchi Per poter andare piu nel dettaglio riguardo la descrizione del nostro uC utile fare una breve analisi del suo diagramma a blocchi Fig 4 2 A prima vista pu sembrare una rappresentazione piuttosto caotica che per se adeguatamente compensata da una parte discorsiva che introduca le relative funzionalit pi utili ed interessanti pu essere resa di pi semplice comprensione 35 Andremo dunque ad elencare quali saranno i bus le dimensioni di memoria 1 collegamenti e tutto cid che possa aiutare ad ottenere una comprensione globale di tale dispositivo per quanto riguarda le caratteristiche e strutturali e comportamentali XTAL TMS TDI trace signals XTAL2 Voorws VODA TAST TCK TDO RESET Viaje VREF FO Pt PZ TESTIDESUG _ Y FUNCTIONS Vasa Ves P3 P4 INTERFACE F DODCOCKIVI SS Hem INTERNALRO 3 y clock OSCILLATOR we e VECTORED EXTERNAL Dr NTERRUPT memory QUASI __ CONTROLLER CONTROLLER WE E 350 CS1 IS BRIDGE O O I Veus TE MASTER AHBTO SLAVE 8x6 por ah 2 USS_D US5_D RMI n PONS APA ADE PORT SRAM ano oma gt 2 USE_CONNECT 2 USS_UP_LED AS APS BRIDGE GP DMA CONTROLLER ENTI to FINTO 2SRX_CLK AAA PO P2 EXTERNAL INTERRUPTS i STA CLK i 2SRX_WS 2 CAPOCAP a Dj rsreReace SPONS e 3 TIiMEROTIMER A 2SRX_SDA MAT dee 2STX_SOA 2 MATOUMATH TATA MAT MOSI MOSI 5 PWM PAMI A KOO FI SSP0 INTERFACE MISO MISOD 2 PCA
56. erimentale dei parametri caratteristici su scheda embedded con microcontrollore a basso costo Ho esaminato nella forma e nel contenuto la versione finale di questo elaborato scritto e propongo che la tesi sia valutata positivamente assegnando 1 corrispondenti crediti formativi Il Relatore Accademico Prof Ing Rodolfo Zunino III Ringraziamenti Innanzitutto apriamo questa pagina ringraziando il Chiar Prof Ing Rodolfo Zunino la cui disponibilita e il cui interesse nei nostri riguardi sono sempre Stati vivi e cordiali facendo nascere in noi una vera passione per la programmazione embedded Il nostro grande grazie va anche soprattutto all Ing Matteo Cantarini e all Ing Luigi Veardo di ELSAG Datamat i quali ci hanno accompagnati con immensa disponibilit passo passo in questo affascinante mondo mostrando una partecipazione costante e fornendoci una soluzione in ogni momento di difficolt Davide e Michele Il primo grazie va senza dubbio a Mio Padre che sin dall inizio ha creduto in tutto questo impiegando tutti i mezzi a sua disposizione e forse anche qualcosa di pi per la buona riuscita dell opera Spero proprio di non averlo deluso Il secondo grazie va a Mimmo Barlocco che in tutti questi anni oltre ad un grande maestro di vita stato per me come un secondo padre consigliandomi sempre nel bene e dandomi la possibilit di poter seguire la mia strada con molta pi tranquillit Grazie a Nadia Ba
57. ersonale in stretto contatto con gli sviluppatori del RTOS stesso il denaro investito nell acquisto del prodotto pu essere rapidamente ammortato dai risultati ottenuti nel lancio sul mercato D altronde non si pu costruire una Lamborghini in garage E proprio a proposito di velocit bene ragionare su come le prestazioni di questo sistema ci abbiano spinto a farlo entrare nella coppia di sistemi favoriti a diventare l oggetto di utilizzo quotidiano Innanzitutto PowerPac un sistema adatto ad applicazioni mission critical ovvero dove la reazione immediata fondamentale questo dimostrato dalla presenza di una Zero Interrupt Latency e accentuato da un tempo di commutazione di contesto di ordine molto piccolo anche questo S O supporta nativamente una serie di stack particolarmente ottimizzati ed adatti a varie tipologie di microcontrollore Insieme a questo RTOS inoltre viene fornito anche un ambiente di sviluppo estremamente specializzato ed integrato cos da rendere le modifiche implementative pi rapide ed efficaci Sulla base di queste motivazioni principali possiamo asserire che anche IAR PowerPac a causa delle sue peculiarit candidato a diventare il RTOS da noi utilizzato Concludendo questa parte anticipiamo che nei capitoli successivi verranno effettuate ulteriori valutazioni sperimentali e test parametrici mirati al termine dei quali verr scelto tra FreeRTOS e IAR PowerPac il sistema 22 3 Strumenti
58. essesssocesocee 52 Salis Context Switch lime sosirea nenei das 53 5 1 1 Liitenosponmeniale iconico lille 53 5 1 2 Algoritmo implementato sorrette 53 5 1 2 1 FreeRTOS tir a a a a bis 56 5 1 2 2 IAR PowerPat A a 61 5 1 3 risultati ottenuti AA A A 67 A A A okt hiner rats canes dela i 70 5 2 Criterio spenmentale aiuole a ada 70 5 2 2 Algoritmo Implementar ios 70 5 2 3 Reportisultairo temita nn an rl 79 Dac A A N 80 5 3 Criterio spenme ntale sta bra 80 5 3 2 Algoritmo implementato adi liana ea iaia 80 5 3 3 A A Sanat 82 6 Analisi dei risultati e conclusioni sessoesesssesooesocssesooesosssesoossosssessossosssessossosesesssse 83 6 1 Commenti ai risultati ottenuti lalla 83 6 1 1 Context Switeh A ta e tad e eS 83 6 1 2 Interrupt Latene a a Secs se veces ea a a a ita 85 0 15 ESO size ORI 86 6 2 Conclusioni e considerazioni finali conc nonn cono ncconocnnos 88 7 Eventuali sviluppi futuri sesssesssecssocesocesoocesoeessccssocesocesoosesocesoecesocesoosssosesseessecesoeee 91 A RA ia 93 VII 1 Introduzione 1 1 I Sistemi Embedded Qualcuno si sar sicuramente chiesto come diavolo funzioni il proprio telefono cellulare o la propria lavatrice oppure il sistema frenante ABS della propria auto Ebbene tutto ci si puo riassumere con due sole parole Sistemi Embedded Letteralmente il termine Embedded in Italiano significa incastonato ed effettivamente proprio l a
59. esso contenuto nella directory di progetto All interno di ciascuno di questi due files si possono trovare svariate informazioni tra cui e Readonly Code Memory e Readonly Data Memory e Readwrite Data Memory La prima individua l occupazione di memoria da parte del codice sorgente che di fatto in sola lettura mentre la seconda esprime la quantit di memoria occupata da parte di dati in sola lettura ovvero le costanti a differenza di queste due l ultima componente dell elenco individua invece quella porzione di memoria che viene utilizzata dalle variabili del programma sia in lettura che in scrittura Come in ogni test fatto finora bene spendere alcune parole sulle ipotesi di coerenza relative al corretto svolgimento dei tests in quanto importante notare come l occupazione in memoria Flash e RAM di un RTOS possa variare dipendentemente dalla modalit di compilazione impostata e Processor Mode questo parametro pu essere impostato come ARM o Thumb nel primo caso si avr l installazione del codice completo con la conseguente disponibilit di tutte le funzionalit del uC mentre il secondo comporter una riduzione del codice installato in quanto gran parte dei registri non verr utilizzata e Debugging informations abilitando l inserimento delle informazioni di debug nel file oggetto in uscita si avr un conseguente ed inevitabile incremento di memoria utilizzata altres qualora non sia necessaria alcun
60. ficamente possiamo vedere come sia stata esclusa la funzione os_sUPPORT_SAVE_RESTORE_HOOK in maniera tale da isolare come in FreeRTOS le pure operazioni atte al cambio di contesto scremandole cos dalle pi onerose e per altro simili operazioni di salvataggio e recupero dello stack di esecuzione A questo punto la fase di modifica del codice a scopi sperimentali si pu considerare conclusa analizzeremo in fine quali siano stati di fatto gli ultimi accorgimenti necessari al raggiungimento dell esecuzione completa del programma da parte del nostro uC Il primo passo di questa fase finale stata la ricompilazione delle librerie di PowerPac in quanto il corretto funzionamento di tale sistema operativo prevede l utilizzo di librerie precompilate questo rebuild si reso necessario poich il file di nostro interesse ovvero OSKern c si trovava all interno di una di queste librerie e quindi non sarebbe stata sufficiente la sola modifica del file ma si rendeva invece necessario il rebuild dell intera libreria La sequenza delle operazioni stata alquanto laboriosa ed articolata dopo aver appunto modificato il codice nativo nel file oskern c abbiamo ricompilato tutto il progetto di libreria contenuto nel file di workspace BuildLib eww l estensione eww indica un file contenente tutte le direttive per l apertura e la modifica di un workspace di IAR Embedded Workbench dopodich abbiamo avviato il file di bat
61. generare un interruzione ma anche il dover configurare tutti i parametri necessari a livello di sistema operativo per praticare l acquisizione del segnale di interrupt esterno Per quanto riguarda l uscita la questione stata ben pi semplice in quanto abbiamo riutilizzato la gi collaudata funzione atta al pilotaggio di un LED tramite GPIO A questo punto non resta che misurare per mezzo dell oscilloscopio quale sia l effettivo tempo che intercorre tra la variazione di livello generata dal circuito in ingresso e l accensione del LED prodotta in uscita dalla routine abbinata a tale interrupt 5 2 2 Algoritmo implementato Prima di addentrarci completamente nella descrizione di ci che stato effettivamente svolto per portare a termine il calcolo dell Interrupt Latency relativamente ai due sistemi bene fare un importante quanto fondamentale premessa Dovendo modificare con opportune istruzioni di test il codice sorgente di entrambi 1 sistemi operativi ci siamo posti 70 il problema di dove risiedessero le funzioni o pi precisamente le linee di codice dell Interrupt Handler ovvero del gestore di interrupt Con molta sorpresa da parte nostra e dopo un assidua ricerca passiva in rete ed attiva su forum specifici all argomento 28 abbiamo scoperto che il sistema FreeRTOS privo almeno per quanto riguarda la nostra architettura specifica di un gestore degl interrupt ed quindi consigliata l
62. gli algoritmi di scheduling maggiormente implementati 2 2 5 1 Preemptive scheduling Il preemptive scheduler con diritto di prelazione uno dei piu utilizzati nei sistemi RTOS Nella stragrande maggioranza dei casi si usa uno scheduler fixed priority preemptive ovvero uno scheduler che assicura in ogni momento che il processore esegua il task con la priorita piu alta fissata precedentemente dal programmatore tra tutti 1 tasks che in quel momento sono nello stato di READY Il suo funzionamento piuttosto semplice infatti questo tipo di scheduler governato da un timer la cui durata predefinita denominata quantum of tick trascorsa una di queste unit di tempo viene effettuata una cernita tra 1 processi in stato di READY e quello con maggiore priorit viene portato in stato di RUN ed eseguito almeno per un quanto del timer HIGH pressi Low BE time KEY F prmemption task completion priority gt Fig 2 2 Diagramma temporale di un preemptive scheduler Questo sistema di schedulazione ha il vantaggio di evitare un monopolio del processore da parte di un task per un tempo maggiore del countdown del timer Come ogni medaglia per anche questa ha il suo rovescio che prende il nome di Starvation 8 tale fenomeno si verifica quando un processo pronto all esecuzione impossibilitato ad ottenere le riscorse di cui necessita Nel nostro caso pu succedere che 15 un task con priorit molto ba
63. i variabili in funzione della varianza dei parametri caratteristici che pilotano la scelta di tali sistemi Questo genere di paragoni sempre giustificato dal fatto che i RTOS sono molteplici e con caratteristiche mutevoli andrebbe compiuto ripetutamente a brevi intervalli di tempo mantenendo cos in costante aggiornamento l identit dei RTOS in base all eventuale mutazione delle relative caratteristiche 91 In questo contesto come fase preliminare abbiamo dovuto effettuare operazioni di porting tali operazioni sono state effettuate con uno scopo prettamente d importazione brutale dando cosi origine a pressoch impercettibili ma inevitabili rallentamenti nell esecuzione del programma dovuti a porzioni di codice non particolarmente ottimizzate ma piuttosto atte a rendere possibile il corretto funzionamento dell intero RTOS Da qui nasce naturale un ulteriore spunto che renderebbe interessante rianalizzare in seguito i valori sperimentali determinanti i RTOS dopo aver effettuato 1 dovuti colpi di lima al codice nativo Nei capitoli precedenti abbiamo ribadito piu volte come sia di fondamentale importanza durante lo svolgimento delle operazioni di testing mantenere quanto pi possibile la coerenza relativamente alla base ed alle ipotesi dei test stessi Anche in questo caso uno spunto interessante nasce proprio da qui sarebbe infatti molto utile ripetere le medesime procedure di testing su basi ed ipotesi differenti ma pur
64. iamo tornati al programma principale nell ambiente di sviluppo ed abbiamo reso noto a quest ultimo l esistenza delle librerie precompilate da noi aggiornate Successivamente abbiamo ricompilato il nostro progetto dopo l importazione delle nuove librerie e tramite gli strumenti di debug abbiamo uploadato il tutto sulla memoria Flash del nostro microcontrollore I collegamenti all oscilloscopio sono rimasti invariati rispetto a quelli utilizzati per le valutazioni al RTOS precedente anche in questo caso ci che si dovuto individuare sull uscita stato lo spazio interposto tra i due picchi generati dalle nostre istruzioni e di conseguenza il tempo che intercorre tra i due Per questo sistema operativo abbiamo trovato tra i progetti forniti dal produttore una serie di interessanti esempi tra cui risultata di estremo interesse ed importanza una funzione che effettuando un benchmark e quindi operante a livello software potesse calcolare con una precisione ragionevole quale fosse l effettivo tempo impiegato per effettuare un cambio di contesto da parte dello scheduler del sistema operativo Alla pagina seguente possiamo osservare il listato contenente la porzione di programma che implementa le funzionalit atte ad effettuare tale benchmark 65 tinclude RTOS h include stdio h static OS_STACKPTR int StackHP 128 StackLP 128 Task stacks static OS_TASK TCBHP TCBLP Task control blocks static OS_U32 _T
65. icante del dispositivo che questi controllano pu disporre un aggiornamento del firmware Negli ultimi anni il loro uso aumentato grazie all estrema versatilit ed al costo bassissimo diffondendosi anche fra gli hobbisti e gli appassionati di elettronica 3 1 3 Breve cenno sulla componente software Come un automobile resta ferma a causa dell assenza del suo autista rendendosi cos inutile al suo scopo anche i DSP e i uC da soli come hardware non servono a molto Infatti se nel caso della macchina ci che era necessario a gestire il suo funzionamento era un guidatore nel caso dei nostri componenti hardware puramente codice quest ultimo il pilota di turno ovvero in grado di governare l architettura e le funzionalit di tali dispositivi Questo codice viene principalmente scritto nei linguaggi C o Assembly il primo un linguaggio pi vicino all uomo che alla macchina linguaggio ad alto livello mentre il secondo strettamente legato al linguaggio macchina vero e proprio e quindi poco adatto ad una gestione da parte di un essere umano Nel caso dei DSP il codice che viene caricato nella memoria principale del dispositivo atto ad una gestione efficiente del dispositivo con lo scopo del signal processing Altresi nel caso dei microcontrollori caso che ci interessa direttamente il software che viene caricato all interno della memoria principale nella stragrande maggioranza dei casi un Sistem
66. ime static void HPTask void while 1 OS_Suspend NULL Suspend high priority task OS_Timing_End amp _Time Stop measurement static void LPTask void OS_U32 MeasureOverhead Time for Measure Overhead OS_U32 v Real context switching time Measure overhead for time measurement so we can take this into account by subtracting it OS_Timing_Start amp MeasureOverhead OS_Timing_End amp MeasureOverhead Perform measurements in endless loop while 1 OS_Delay 100 Syncronize to tick to avoid jitter OS_Timing_Start amp _Time Start measurement OS_Resume amp TCBHP Resume high priority task to force task Switch Calculate real context switching time w o measurement overhead v OS_Timing_GetCycles amp _Time OS_Timing_GetCycles amp MeasureOverhead Convert cycles to nano seconds increase time resolution v OS_ConvertCycles2us 1000 v Print out result printf Context switch time u 3u usec r n v 1000 v 1000 Come si pu vedere dal listato oltre alle comuni righe di intestazione si possono osservare all interno delle funzioni relative alla creazione di processi diverse linee di codice dedicate alla gestione di parametri e funzioni temporali da notare come queste istruzioni di misurazione temporale operino a livello dei cicli di sistema e convertano solo 66 successivamente il ri
67. in tramite una circuiteria dedicata Questo pin configurabile per quanto riguarda la sua funzione mediante il registro PINSEL8 rappresentato schematicamente di seguito REGISTRO PINSEL8 Tab 5 1 Astrazione schematica del registro PINSELS Settando i due bit meno significativi evidenziati in tabella entrambi a 0 si pone il pin 0 della porta 4 con funzionalit di GPIO in maniera del tutto analoga settando differentemente le 16 coppie di bit presenti nel suddetto registro esso pu far assumere ai pins corrispondenti funzionalit diverse Passiamo ora all analisi del registro atto a configurare il pin P4 0 relativamente alla possibilit che esso assuma dati in ingresso o fornisca dati in uscita tale registro prende il nome di FIO4DIRL ed strutturato come mostrato nella tabella sottostante REGISTRO FIO4DIRL Tab 5 2 Astrazione schematica del registro FIO4DIRL Il bit del registro sopra che permette di decidere la direzione dei dati passanti attraverso il pin P4 0 quello meno significativo LSB per configurare la direzione come ingresso si pone tale bit a 0 viceversa per configurare la direzione in uscita si pone a 1 54 Per quanto ci riguarda dovendo pilotare un LED dobbiamo inviare in uscita un segnale atto a procurare la sua accensione quindi porremo l LSB a 1 Un altro registro utile il FIO4PIN che setta lo stato del pin P4 0 come nei casi precedenti inseriamo una tabella esplicat
68. ingolarmente per ciascuno dei due RTOS messi a confronto Tra i due uno risultato avere performance superiori rispetto al diretto concorrente ed quindi stato scelto da noi come il sistema VI INDICE 1 AS O 1 Jil ESistem Embedded a ea 1 1 2 Breve storia di tali sistemi a 1 1 2 1 Digital Signal Processor DS Ps RL Lalli 2 1 22 Programmable Logic Device PLD 4 123 Microcontrollore MC italia 5 1 3 Breve cenno sulla componente software susi la li 6 lA Stade A tenn nner kaaa a a a e ENA 7 Confronto tra TVariRTOS wspocscsassssccssssceskeseatscchassecscsoenstaaetessiudendetssabiniacseassssnecebbsceatien 8 Del IDescnzione dii RC Se fecal Sarah cas lei 8 Didi Parametri di confronto e loro descrizione noci n nono 9 22 A A duastaahebeatiaid oa ag ain aden a 10 DD s POGUE a coalesce iii 10 223 Context Switch Time CSI lello es de dai 11 2 2 4 Interrupt TAL STIG Vi lolita 12 22 9 SA a tt 12 2 2 5 1 Presmptive schedulimg cscocni lei 15 2 2 5 2 Non preemptive scheduling i 16 PILA Rownd Robin scheduling RR do ios 16 2 2 5 4 POPS CO O a dt cds 17 2 2 6 Supported Platform Sinirin naea dot 18 Zid Cenni dei RTOS confrontati sisi 19 2 4 Scelta dei RTOS DETER il 21 Strumenti di testing e sviluppo utilizzati ooooooooooooscossss 23 dl ADescrrzione UCPC nie a lhi piro tdi 24 Sy lel Ambienti di SIP lille lalla 24 32 EM
69. itivo che deve comunicare 41 Fig 4 6 Interfaccia USB Il controller USB gestisce lo scambio di dati alla velocita di 12 Mbit s il motore dell interfaccia seriale decodifica il data stream USB e successivamente scrive i dati all appropriato end point ovvero sul buffer della periferica di destinazione l avvenuto completamento di un trasferimento USB o l eventuale condizione di errore sono indicati attraverso un registro di stato 4 2 5 3 Interfaccia CAN Il Controller Area Network noto anche come CAN bus uno standard seriale per bus introdotto negli anni ottanta Esso stato espressamente progettato per funzionare senza problemi anche in ambienti fortemente disturbati dalla presenza di onde elettromagnetiche questo perch il CAN un bus di campo del tutto asincrono ovvero non necessita come ad esempio IC di una linea di sincronizzazione contenente il segnale di clock Fig 4 7 Interfaccia CAN La linea dati differenziale bilanciata conforme allo standard ISO 11898 ovvero operante tra i livelli 1 5V e 3 5V quindi un eventuale disturbo esterno si ripercuoterebbe in egual misura su entrambi i potenziali In fase di riconoscimento del livello alto basso viene fatta la differenza dei potenziali dei due poli e conseguentemente il rumore viene 42 teoricamente debellato e tale differenza contiene cos l informazione utile del segnale ovvero il livello che esso assume in quel dato momento
70. ito direttamente da ELSAG Datamat assieme a tutto il supporto riguardante IAR compresi manuali JTAG EB ed ambiente di sviluppo C da notare inoltre che per quanto riguarda questo RTOS non stato necessario alcun porting su piattaforma IAR in quanto esso era gi disponibile Come nel caso precedente anche qui ci siamo mossi per piccoli passi e per lo pi abbiamo svolto le stesse operazioni necessarie allo sviluppo del test con il sistema precedente alla stessa maniera si reso indispensabile inizialmente pilotare il medesimo GPIO collegato al led di valutazione e conseguentemente a questo stato necessario risolvere per quanto possibile tutti quei conflitti e quelle incoerenze derivanti dall importazione della funzione relativa al pilotaggio del GPIO con le dovute modifiche ai vari define macro ed header Risulta ora interessante valutare anche per quanto concerne IAR PowerPac da quali istruzioni sia composto l entry point del nostro programma che contenuto nel file OS_Start_LEDBlink c visibile nel listato sottostante int main void OS_IncDI Initially disable interrupts OS InitKern initialize OS OS InitHW initialize Hardware for OS BSP Init initialize Board You need to create at least one task before calling OS Start OS _CREATETASK amp TCBHP HP Task HPTask 100 StackHP OS _CREATETASK amp TCBLP LP Task LPTask 50 StackLP OS Start Start mul
71. iva relativa alla struttura di tale registro REGISTRO FIO4PIN aelel ce Peps om P E Tab 5 3 Astrazione schematica del registro FIO4PIN Questo registro configura lo stato dei pins della porta 4 del microcontrollore ad un livello di tensione positivo ponendo i bit a 1 o a massa ponendoli a 0 nel nostro caso settiamo il primo bit in maniera concorde allo stato voluto Da notare inoltre come si debba prestare attenzione a non alterare lo stato dei bit non interessati all azione attuale quando si vuole modificare 1 restanti bit dei registri Nello schema elettrico della scheda embedded OLIMEX LPC2378 STK Tavola n 1 abbiamo visto che il pin P4 0 del uC corrisponde in maniera biunivoca al pin 24 della porta EXT1 Inoltre sempre sulla EXT1 sono disponibili alcuni pins notevoli che sono collegati ad altrettanti valori di tensione notevoli tra questi si evidenzia per nostro interesse il pin EXT1 40 connesso a massa EXT1 24 EXT1 40 Fig 5 1 Zoom su porta EXT1 dell EB Da qui si pu concludere per quanto riguarda il pilotaggio del GPIO che sono stati acquisiti elementi sufficienti per poter collegare un led ai due pins sopra citati della porta EXTI in modo tale da rilevare il cambio di contesto e portarci cos al raggiungimento di una parte del primo obiettivo Il dispositivo contenente il led cos costituito e UnLED verde e Una resistenza di protezione da 100 e Uno zoccolo nero compatibile con la porta E
72. le sezioni di dati statici lo Heap lo Stack e tutte le altre chiaramente pi il programma ingombrante pi il Memory Footprint avr una dimensione superiore 10 Nel caso in cui le dimensioni del sistema ed il tempo di esecuzione siano predominanti come ad esempio nei Sistemi Embedded avere un basso Footprint di memoria risulta essenziale In tal senso bene fare distinzione tra 1 tipi di memoria con cui si andra ad avere a che fare sulla piattaforma hardware di proprio interesse quasi nella totalit dei casi la memoria si divide in memoria ROM Read Only Memory e memoria RAM Random Access Memory Nella memoria ROM consentita solo l operazione di lettura ed appunto per questo che viene utilizzata per immagazzinare definitivamente il programma che poi si andr ad eseguire sulla propria piattaforma negli ultimi tempi questo tipo di memoria stato sostituito dalle Flash Memory che sono memorie permanenti riscrivibili tecnicamente conosciute come EEPROM Electrically Erasable and Programmable Read Only Memory organizzate a blocchi Per quanto riguarda la memoria RAM a differenza della precedente il supporto di memoria su cui possibile scrivere e leggere informazioni con un accesso di tipo casuale ovvero senza dover rispettare un determinato ordine questa solitamente nei Sistemi Embedded ha dimensioni minori della memoria di programma vista sopra Risulta quindi essere un requisito fondamentale la c
73. ling Come visto nel paragrafo precedente quando la commutazione di processo provocata dall attuarsi dell algoritmo di scheduling si parla di CST Spesso per nei sistemi Real Time la richiesta di avviare un nuovo processo proviene da un fattore esterno ovvero da una periferica che effettua una richiesta di eseguire immediatamente il task a lei legato in quanto urgente questa richiesta in tempo reale prende il nome di Interrupt Request IRQ In questo caso il tempo che intercorre tra la richiesta di interrupt e l inizio dell esecuzione del processo relativo a tale interruzione detto Interrupt Latency 2 2 5 Scheduler Ognuno di noi si sar certamente reso conto di come sia problematico effettuare pi cose contemporaneamente da qui nasce la necessit di eseguire una cosa alla volta seguendo un determinato criterio volto a non perderne alcuna di vista tale criterio l algoritmo di scheduling Nei sistemi operativi multitasking cio quelli in grado di eseguire pi processi task concorrentemente presente lo scheduler componente fondamentale atto a far avanzare un processo interrompendone temporaneamente un altro realizzando cos un cambio di contesto Context Switch Uno scheduler completamente determinato dall algoritmo che esso implementa la variet dei diversi algoritmi di scheduling permette di scegliere nella maniera pi efficiente possibile le operazioni da effettuare sui vari tasks In
74. lleranza dei vincoli di tempo che qualora prolungati portano ad un degrado dell applicazione degrado che pu essere comunque tollerato in funzione dell importanza per l utilizzatore in termini di costo Sostanzialmente questa distinzione si traduce nella diversa quantificazione dei costi di una possibile inesattezza temporale del sistema Un esempio di soft RTOS pu essere un riproduttore DVD in cui il mancato rispetto dei vincoli si traduce in un degrado della qualit del filmato ma non pregiudica il proseguimento della riproduzione 2 2 Parametri di confronto e loro descrizione Un RTOS pu essere descritto come un insieme di servizi di sistema messi a disposizione dello sviluppatore congiuntamente ad un Task Scheduler che flessibile e che non richieda troppe risorse sia in termini di occupazione di memoria che di velocit di esecuzione Oltre al determinismo e ad un tempo di latenza accettabile generalmente compreso tra il us e il ms ma questo valore pu cambiare in modo sostanziale in funzione dell applicazione sono svariati gli aspetti che caratterizzano un RTOS Esso deve essere multithread ossia deve consentire l esecuzione di pi attivit concorrenti e deve disporre di un meccanismo che permetta di assegnare una priorit ereditaria ad ogni thread sottoprocessi Inoltre deve essere possibile arrestare e riprendere ciascun thread in qualunque istante compatibilmente con la risoluzione temporale del sistema Questa
75. llo oscillatore con lo scopo di verificare qualora possa essere avviata l esecuzione del codice quando viene fornita potenza al chip o quando qualche evento causa l uscita del chip dalla sospensione l oscillatore necessita di una breve quantit di tempo per produrre un segnale di ampiezza sufficiente a pilotare lo logica di clock L ammontare di questo tempo dipende da numerosi fattori quali possono essere il transitorio rampa della Vpp tensione di alimentazione il tipo di cristallo ed eventuali capacit parassite provocate da eventuali dispersioni dei parametri nei componenti Il nostro uC utilizza un IRC oscillator stabilizzato a 4MHz in qualit di sorgente di clock questo permette al chip in stato di sospensione di riattivarsi rapidamente lasciando cos all oscillatore principale ed al PLL il tempo necessario per avviarsi e stabilizzarsi 51 5 Verifica dei parametri di confronto dei due RTOS Come accennato nella parte conclusiva del Capitolo 2 andremo ora ad analizzare approfonditamente i due RTOS prescelti per decretare dulcis in fundo quale sia il sistema operativo piu adatto alle nostre esigenze Pi specificatamente i parametri di nostro interesse sono il Context Switch Time l Interrupt Latency ed il Footprint i primi due necessiteranno dunque di un analisi temporale particolarmente accurata mentre il terzo ed ultimo parametro sar descritto tramite un analisi dimensionale rappresentando esso stesso un
76. lpc2378 datasheet_2006 10 11 pdf NXP 2006 Il processore ARM www dei unipd it corsi ae1 store x02aARMIntroduzione pdf DEI UNIPD 2007 Interfaccia Ethernet www dia uniroma3 it necci intro_rete htm Dipartimento di Informatica ed Automazione Universita degli Studi Roma Tre 2008 Board per Centralina www visivagroup it showthread php t 8 180 amp page 3 Visiva Group 2006 Introduzione alle UART www docmirror net it linux howto networking Modem HOWTO Modem HOWTO 15 html DOCMIRROR 2008 Section 15 Synchronous Serial Port SSP ww 1 microchip com downloads en DeviceDoc 31015a pdf Microchip 1997 ADC Convertitori Analogico Digitale www galgani it sistemi_programmabili analogico digitale adc index_ita asp Pubblicazioni ed elaborati vari di Francesco Galgani 2008 Experiment 8 Digital To Analog Conversion www learn c com experiment8 htm Controlling The Real World With Computers 2008 94 26 27 28 Introduction to Counter Timer Hardware www netrino com Embedded Systems How To Timer Counter Unit Netrino and The Embedded Systems Experts 2008 UM10211 LPC23xx User manual www nxp com acrobat_download usermanuals UM10211_1 pdf NXP 2008 Calculate Interrupt Latency of FreeRTOS with LPC23xx www embeddedrelated com usenet embedded show 97784 1 php Comp Arch Embedded 2008 95
77. lutazione questo stato reso possibile grazie anche alle notevoli capacit funzionali degli strumenti a noi messi a disposizione da ELSAG Datamat Mettiamoci all opera 32 5 1 Context Switch Time Riprendendo brevemente quanto detto al paragrafo 2 2 3 relativamente alla descrizione del CST dobbiamo ora verificare sperimentalmente quanto sia il tempo di commutazione di contesto che impiegano effettivamente i due RTOS messi a confronto 5 1 1 Criterio sperimentale Come gi accennato al paragrafo 3 4 per poter calcolare con la dovuta precisione un valore tanto rapido nell ordine dei us abbiamo scelto l oscilloscopio in quanto strumento in grado di individuare variazioni elettriche ed i relativi tempi di mutamento del segnale con la dovuta precisione A questo punto sorge spontanea una domanda come legare l oscilloscopio al calcolo di un valore temporale che nasce e muore nel mondo software La problematica stata affrontata analizzando quali meccanismi del uC potessero evidenziare un evento software come un segnale elettrico la soluzione prevede che il software gestisca lo stato di un segnale d uscita attivandolo in determinati istanti di nostro interesse e fatto questo non resta che scegliere quale output debba essere pilotato dal sistema in maniera tale da avere un riscontro su ci che accade all interno del uC Dando cos in uscita al microcontrollore e di conseguenza ad una porta d uscita dell EB
78. mat rtoswebbook UNIMI 2007 Linux e sistemi embedded www ingpozzi it semlinux presentazioni slides_Ciminaghi pdf Davide Ciminaghi 2004 Scheduling della CPU orfeo unipv it cdol luci_sisop SO5 pdf UNIPV 2008 Brevi Appunti sullo Scheduling users dimi uniud it alberto casagrande corsi 06 07 inf_gen pdf scheduling pdf UNIUD 2007 Solving starvation problems in the scheduler lwn net Articles 176635 Corbet 2006 The FreeRTOS org Project www freertos org FreeRTOS RTXC Quadros Operating System www quadros com pdf rtxc quadros datasheet pdf Quadros Systems Inc 2008 embOS General Info www segger com embos_general html SEGGER 2008 ThreadX www rtos com page product php id 2 Express Logic 2008 93 13 14 15 16 17 18 19 20 21 22 23 24 25 QNX Neutrino RTOS www qnx com products neutrino_rtos QNX Software Systems 2008 LynxOS RTOS www lynuxworks com rtos rtos php LYNUXWORKS 2008 IAR PowerPac for ARM ftp iar se W W Wrfiles flyers DS PPARM 220 pdf TAR 2008 A cosa serve il boundary scan www strumentazioneelettronica it tecnologie mr volt a cosa serve il boundary scan 200803 1935 StrumentazioneElettornica 2008 LeCroy WaveRunner 6100A 2GHz 4ch Dual Oscilloscopi www computereq com detail asp ProdID 4 124 COMPUTEREQ 2008 LPC2378 Preliminary Datasheet www kamami pl dl
79. me di tecniche tecnologie algoritmi che permettono di trattare un segnale continuo successivamente alla sua digitalizzazione Le radici dei DSP risalgono agli anni 60 70 con l avvento dei primi computer digitali ed il primo DSP monolitico lanciato sul mercato nell anno 1978 sotto il nome di Intel 2920 Questi dispositivi sono classificati a seconda dell ampiezza e del tipo di dato che sono in grado di elaborare si parla ad esempio di DSP a 32 24 oppure 16 bit a virgola fissa o virgola mobile Ogni DSP quindi adatto ad applicazioni specifiche ad esempio 1 DSP a 16 bit a virgola fissa sono impiegati per il condizionamento di segnali vocali e trovano il loro principale campo di applicazione nella telefonia fissa e mobile mentre i DSP a 32 bit in virgola mobile avendo una dinamica decisamente superiore sono principalmente impiegati nell elaborazione di immagini e nella grafica tridimensionale 2 Conseguentemente a quanto detto possiamo cos convertire i segnali analogici in digitali elaborare i segnali con il DSP e se necessario portare i segnali in uscita di nuovo nel mondo analogico Digital Anal 2 Anal Signal ADC Signal DAC ON Processing Fig 1 1 Schema base di elaborazione di un segnale con DSP interessante individuare come questi sistemi siano un importante trait d union tra gli ASIC Application Specific Integrated Circuits che sono circuiti integrati creati appositamente con lo scopo
80. mitata solamente dalle esigenze di sample rate e dal rapporto S N 4 2 6 2 Convertitore DAC Il DAC ovvero Digital to Analog Converter un componente elettronico in grado di produrre una determinata differenza di potenziale in funzione del valore numerico caricato Le caratteristiche del DAC hanno pi o meno rilevanza a seconda dell impiego le pi importanti di queste peculiarit sono la risoluzione e la velocit di elaborazione La prima estremamente importante per le misure di precisione i e produzione di brani musicali ad alta fedelt mentre la seconda strettamente legata alla prima in quanto deve essere sufficientemente alta per far si che la risoluzione scelta possa essere supportata Convertitore D A Fig 4 12 Schema a blocchi di un DAC generico digitale analogico Come nel convertitore precedente anche in questo caso ci sono diverse implementazioni circuitali per raggiungere lo scopo le pi diffuse sono quelle a rete R 2R a CMOS moltiplicante ed a capacit commutate necessario inoltre introdurre il valore di fondo scala che rappresenta il limite superiore del segnale prodotto ed effettivamente misurabile da un determinato strumento di misura Per quanto riguarda il nostro uC la risoluzione mantenuta costante a 10 bit mentre il valore di fondo scala definibile dall utente in base all applicazione 25 4 2 7 Oscillatori Un oscillatore un circuito elettronico che genera forme d
81. mpo permettono di evitare un errato flusso di informazioni garantendo una totale indipendenza tra essi questi sono stati introdotti nel 1996 dall AMBA Advanced Microcontroller Bus Architecture 4 2 2 Memoria Flash programmabile e SRAM statica on chip Per quanto riguarda la memoria il nostro uC dotato di una memoria Flash incorporata da 512 kB questa quantit di memoria pu essere utilizzata sia per contenere dati che per contenere codice eseguibile La memoria pu essere programmata in diversi modi attraverso la porta seriale UART di cui parleremo in seguito Inoltre l applicativo pu anche cancellare e programmare la Flash mentre l applicazione in fase di RUN permettendo cos una grande flessibilit sia per quanto riguarda il data storage sia per quanto riguarda il firmware upgrade Per quanto riguarda la memoria volatile sono stati riservati 32 kB di memoria SRAM esclusivamente per 1 ARM core 16 kB riservati come buffer per il controllo dell Ethernet e 8 kB sono invece dedicati per le operazioni di storage sia di codice che di dati del dispositivo USB associato 37 In conclusione rimangono 6 kB di memoria SRAM cosi ripartiti 4 kB utilizzati in qualita di buffer relativo al controller USB mentre gli altri 2 kB sono relativi all RTC Real Time Clock questi ultimi hanno la caratteristica di trattenere l informazione anche quando l alimentazione assente in quanto sono battery powered Fig
82. n maniera tale da sfruttare attraverso un attenta ottimizzazione la piattaforma hardware sulla quale verr caricato cosicch si possa raggiungere un opportuno valore di efficienza non sempre la prassi cos poich spesso entrano in gioco fattori che possono mutare tale linea guida 18 2 3 Cenni dei RTOS confrontati Siamo giunti qui ad uno dei punti cruciali della trattazione saranno ora analizzati nei parametri a noi utili sette RTOS che sono stati scelti tra 1 tanti disponibili sul mercato elettronico come candidati a diventare il nostro RTOS A proposito di mercato c una grossa distinzione da fare innanzitutto esistono RTOS con licenza proprietaria e licenza open source software rilasciato con un tipo di licenza per la quale il codice sorgente lasciato alla disponibilit di eventuali sviluppatori in modo che con la collaborazione il prodotto finale possa raggiungere una complessit maggiore di quanto potrebbe ottenere un singolo gruppo di programmazione I primi devono essere acquistati necessariamente del rivenditore autorizzato o direttamente dall azienda sviluppatrice i secondi invece sono liberamente scaricabili dalla rete e liberamente modificabili e ottimizzabili Poich buona parte delle informazioni di nostro interesse non era disponibile direttamente in rete abbiamo inviato ad ogni distributore una e mail in cui si chiedevano ulteriori chiarimenti sulle prestazioni dei relativi sistemi pro
83. n un unico programma eseguibile Gli strumenti di debug che dipendono dal microcontrollore utilizzato e sono utili all individuazione di porzioni di software affette da errori bugs a seguito dell utilizzo del programma piuttosto che in fase di compilazione bene notare come gli ultimi tre componenti all elenco precedente nella maggior parte dei casi costituiscano la toolchain che direttamente dipendente a differenza dell IDE dal tipo di uC utilizzato tale catena viene seguita in modo sequenziale durante le attivit di sviluppo e test Questi ambienti di sviluppo si possono distinguere sulla base delle loro componenti e possono essere mono o multi linguaggio orientati agli oggetti o meno grafici o con interfacce pi complesse i e a linea di comando Qui di seguito vediamo una breve rassegna di alcuni ambienti di sviluppo relativamente alle sopraccitate caratteristiche IAR Embedded Workbench Keil Embedded Development Tools eMbedded Visual C sono ambienti di sviluppo completi di compilatori specifici per particolari microcontrollori definiti gi in fase di acquisto Eclipse un ambiente di sviluppo che fornisce un ottimo IDE ma che non dispone di una toolchain questo sia un vantaggio che uno svantaggio in quanto possibile utilizzarlo su piattaforme differenti ma necessita della completa installazione di quest ultima Durante la scelta dell ambiente di sviluppo vanno ricercate le caratteri
84. neratore di interrupt La prima cosa che abbiamo quindi fatto stata individuare sul manuale dell utente dell LPC23xx 27 quali fossero gli effettivi pins in grado di acquisire un segnale elettrico dall esterno considerandolo una richiesta di interrupt IRQ di pins adatti al nostro scopo ve ne sono ben quattro ma dovendo sceglierne uno solo consideriamo il primo il P2 10 interessante notare come il P2 10 come del resto ognuno di questi pins possa avere funzionalit differenti a seconda del suo valore di configurazione tale valore viene definito attraverso la modifica dei bit 21 e 20 all interno del registro a 32 bit PINSEL4 visibile nella tabella alla pagina seguente 71 REGISTRO PINSEL4 Tab 5 5 Astrazione schematica del registro PINSEL4 A questo punto non rimane che settare i suddetti bit rispettivamente a 0 e 1 cosi da configurare il pin P2 10 in modalita EINTO ovvero come accettore di interrupt esterni Successivamente dopo aver consultato lo schema elettrico dell EB Tavola n 1 abbiamo notato che il suddetto pin direttamente collegato al terminale 24 della porta EXT2 Come visibile in Fig 5 10 abbiamo necessitato dell ausilio di ulteriori due pins EXT2 39 ed EXT2 40 connessi di default rispettivamente ai valori notevoli di tensione quali la alimentazione 3 3V e la massa 0V cos da alimentare il circuito generatore di interrupt Definiti 1 collegamenti fisici dei pins e le loro modalit di
85. nfatti ogniqualvolta venga compilato il progetto identificante l intero programma all interno di una cartella relativa agli output viene prodotto in maniera del tutto automatica un file map contenente un resoconto dettagliato di quale sia stata relativamente ad ogni singolo file la propria occupazione in memoria fornendo inoltre valori specifici e totali ed informazioni riguardo la posizione in memoria delle funzioni linkate nella nostra applicazione 5 3 2 Algoritmo implementato Come nel caso precedente si pu notare che stata omessa la bipartizione individuante le differenze operative effettuate per raggiungere lo scopo in questo caso il motivo non lo stesso poich per quanto riguarda il Footprint i valori rilevati sono s diversi tra i due RTOS ma non essendoci alcun algoritmo da modificare e non dovendo specificare quindi 80 eventuali strade perseguite al raggiungimento dello scopo ci siamo limitati alla interpretazione dei dati contenuti all interno del file map Ogniqualvolta si effettui un rebuild all i files testrtos map per FreeRTOS e Start_LPC2378 map per IAR PowerPac vengono rigenerati ed il Footprint ricalcolato Il file che definisce l occupazione di memoria di FreeRTOS contenuto all interno del path Debug List che a sua volta appartiene al percorso del progetto per quanto riguarda IAR PowerPac tale file individuabile nel percorso output LPC2378 Debug_Flash List ed anch
86. nformazioni 1 e memoria EPROM I ricevitori o 1 trasmettitori possono operare in modalita master o in modalita slave dipendentemente da quale sia il chip che inizia la comunicazione da notare inoltre come sul nostro uC sia supportata una bit rate fino a 400Kbit s 4 2 5 6 Interfaccia PS S un acronimo che significa Integrated Interchip Sound e pi specificamente un interfaccia standard basata su un bus seriale usato per connettere dispositivi audio digitali tra loro come spesso accade all interno di un CD player 44 Il bus I S separa il clock dai segnali contenenti i dati provocando cos una connessione caratterizzata da un jitter brusca ed indesiderata variazione di una o pi caratteristiche di un segnale estremamente basso A livello architetturale il bus IS provvisto di tre fili collegati a bus seriali che sono il Data Line il Clock Line ed il Word Select Signal la connessione base per questa interfaccia ha un master sempre quello ed uno slave Nel caso del nostro microcontrollore sono forniti canali separati per la trasmissione e la ricezione ed ognuno di essi pu operare sia in modalit master che in modalit slave 4 2 5 7 Interfaccia SPI Lo SPI o Serial Peripheral Interface un sistema di comunicazione tra un uC ad altri circuiti integrati o direttamente tra pi microcontrollori Esso un bus standard di comunicazione di tipo seriale sincrono per la presenza di un clock che coordina
87. o reperibile all indirizzo internet http www freertos org ed inoltre sono proposti in rete numerosi porting sia relativi a diverse piattaforme hardware nel nostro caso ARM7 sia relativi a differenti ambienti di sviluppo nel nostro caso non c era quello di nostro interesse 56 Come primo passo abbiamo effettuato il porting di tale sistema nell ambiente di sviluppo IAR Embedded Workbench 5 0 per LPC2378 partendo da uno reperito in rete ed interamente progettato per un workspace di Eclipse Una volta effettuato tale porting e verificata la completa e corretta compilazione dell intero RTOS da parte del compilatore in ambiente IAR siamo passati direttamente alla fase di modifica aggiunta del codice utile ai nostri interessi sperimentali Come precedentemente anticipato abbiamo dovuto cercare in rete una funzione che ci indicasse quale fosse la modalit di inizializzazione dei GPIO la firma di questa funzione void GPIOInit DWORD PortNum DWORD PortType DWORD PortDir DWORD Mask edi suoi parametri come si pu vedere nella dichiarazione del prototipo sono PortNum che indica il numero di porta PortType che si riferisce all eventuale utilizzo di porte fast o porte regolari Portpir che indica se la porta viene considerata d ingresso o d uscita e Mask che il valore assunto dalla maschera utilizzata per effettuare successivamente uno XOR Il codice proveniente da terze parti spesso presenta alcune problematiche e P
88. o Anche questo oscillatore pu essere utilizzato come sorgente di segnale per il Watchdog Timer ed in casi poco frequenti anche come fonte del clock della CPU chiaramente dopo un adeguato passaggio attraverso il PLL 4 2 8 Counters Timers I Counters sono componenti elettronici costituiti da un chip in cui sono implementate le funzioni di contatore digitale spesso possibile realizzare questa funzione anche impiegando soltanto semplici dispositivi di registro quali possono essere i flip flop Tra i vari contatori ci sono anche i timer digitali che sono orologi con funzioni specializzate nel misurare lo scorrere del tempo con una grande precisione nei circuiti integrati sono fatti di logica digitale e sono implementati come sistemi a single chip Nel nostro microcontrollore sono presenti quattro dispositivi di questo tipo ovvero il General Purpose 32 bit Timer il Pulse Width Modulator PWM il Watchdog Timer ed il Wake Up Timer Analizzeremo di seguito le caratteristiche principali che individuano i suddetti dispositivi 49 4 2 8 1 General Purpose 32 bit Timer external event Counter Nei microcontrollori i timers caratterizzano la maggior parte delle operazioni di controllo misurando pi specificamente sulla base dei cicli di clock il tempo trascorso Quanto appena detto vale anche per i counters con l unica differenza che piuttosto che calcolare il tempo trascorso sono dedicati al conteggio di eventi esterni c d
89. o di tali registri interessino solo e soltanto il bit direttamente interessato e lascino inalterata la configurazione dei bit ad esso complementari nel registro Per il raggiungimento di questo scopo ci viene direttamente incontro l operazione sopraccitata di OR logico visibile nella tabella seguente Tab 5 8 Tabella di verit dello OR Considerando il segnale X come controllo si pu rilevare questa interessante propriet X 0 DU Y X 1 Y lt HU 1 76 Relativamente a questa propriet si pu notare che applicando il controllo X pari a 0 e l ingresso Y in uscita otteniamo il valore di Y stesso diversamente se poniamo il controllo X a l e diamo nuovamente come ingresso Y in uscita otterremo sempre 1 In questa maniera introducendo una maschera adeguata del tipo 0x1 riusciremo a modificare 1 LSB di tali registri al valore preposto 1 lasciando comunque invariato lo stato dei rimanenti bit non interessati costituenti il registro stesso L ultima istruzione importante di questa porzione di codice la chiamata alla funzione DWORD install_irq DWORD IntNumber void HendlerAdrr DWORD Priority la quale utile ad installare ed allocare la nostra IRQ all interno della VIC al momento dell installazione di una nuova IRQ quest ultima verr inserita in una locazione libera nella tabella delle interruzioni Da non tralasciare il fatto che i due registri ExTMODE ed EXTPOLAR vadano a costituire insieme al regis
90. o ovvero ci addentriamo nel codice che ha permesso di mettere in relazione l interrupt in ingresso con l accensione del led in uscita L idea di partenza stata quella di mettere in condizioni il sistema operativo di prendere in consegna un interrupt esterno ed avviare la relativa routine di handling per fare ci il primo file con cui abbiamo avuto a che fare stato target c pi specificamente abbiamo dovuto modificare il registro PINSELA presente nel corpo della funzione void GPIOResetInit void Reset all GPIO pins to default primary function PINSELO 0x00000000 PINSELI 0x00000000 PINSEL2 0x00000000 PINSEL3 0x00000000 return I l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l PINSEL4 0x00100000 semino luciani i i PINSEL4 0x00000000 semino luciani E I l l l PINSEL5 0x00000000 i i PINSEL6 0x00000000 i i PINSEL7 0x00000000 i PINSEL8 0x00000000 PINSEL9 0x00000000 PINSEL1O 0x00000000 l l l i IOODIR 0x00000000 IOIDIR 0x00000000 l l i FIOODIR 0x00000000 FIOIDIR 0x00000000 FIO2DIR 0x00000000 i FIO3DIR 0x00000000 FIO4DIR 0x00000000 l l l l i FIOOMASK 0x00000000 not used i i FIOIMASK 0x00000000 not used i FIO2MASK 0x00000000 not used i FIO3MASK 0x00000000 not used i FIO4MASK 0x00000000 not used l l
91. och identico ovvero 14 333 us Come accennato ad inizio paragrafo quanto appena detto da ritenersi puramente informativo e completamente privo di qualsiasi commento ci occuperemo in seguito nel paragrafo 6 1 1 di analizzare quanto pi approfonditamente i risultati ottenuti commentandoli in maniera tecnicamente critica 69 5 2 Interrupt Latency Nel paragrafo 2 2 4 abbiamo gia discusso riguardo il significato di Interrupt Latency ovvero abbiamo individuato in questa parola il tempo che intercorre tra una richiesta di interrupt e l inizio dell esecuzione del processo relativo a tale interruzione La tecnica operativa stata analoga a quella attuata nel caso del calcolo del CST ovvero abbiamo proceduto a piccoli passi verificando di volta in volta la correttezza o l eventuale scorrettezza dei passaggi operativi 5 2 1 Criterio sperimentale Ci troviamo ora di fronte ad un nuovo problema al quale bisogner abbinare se possibile una nuova soluzione bisogna quindi applicare un criterio sperimentale che ci porti ad ottenere il risultato preposto Se nel caso del CST l input era totalmente generato via software dallo scheduler del sistema operativo ci troviamo ora invece a dover fare 1 conti con la generazione di un input prodotto all esterno da noi stessi Quindi il primo passo da compiere e se vogliamo anche il pi laborioso in questo contesto stato quello non solo di progettare un piccolo circuito in grado di
92. ole e ciascuno di questi spesso si differenzi l uno dall altro per peculiarita che solo dopo un attenta lettura del proprio datasheet possono Fig 4 1 uC NXP LPC23xx essere riconosciute e successivamente interpretate Per quanto ci riguarda la piattaforma utilizzata il microcontrollore LPC2378 prodotto dalla NXP founded by Philips ed appartenente alla famiglia degli ARM7 che individua core di microprocessori Reduced Instruction Set Computer RISC a 32 bit ottimizzati per applicazioni power sensitive ovvero quegli ambiti in cui il consumo di potenza ha un importanza rilevante Essa viene principalmente impiegata per applicazioni di controllo industriale sistemi elettro medicali convertitori di protocollo e sistemi di comunicazione Il uC NXP LPC2378 basato su una CPU ARM7TDMI S a 16 32 bit con lo scopo di un emulazione Real Time combinata ad una memoria Flash ad alta velocit Esso provvisto di un interfaccia di memoria a 128 bit e tramite un architettura comprendente acceleratori hardware possibile l esecuzione di codice a 32 bit alla massima clock rate Questo uC adatto anche alle applicazioni mission critical e per questo disponibile anche la modalit di utilizzo thumb in questo caso lavoriamo a 16 bit che permette cos di aumentare le prestazioni di circa un 30 Inoltre questo dispositivo ideale per applicazioni a comunicazioni seriali multi purpose in quanto fornito di numerose tipi di int
93. onda di frequenza forma ed ampiezza di molteplici tipi senza un segnale d ingresso Gli oscillatori nella loro vastit sono impiegati in innumerevoli applicazioni che spaziano dalla temporizzazione di circuiti digitali e non alla generazione di portanti per le telecomunicazioni 47 Il nostro uC contiene tre oscillatori indipendenti a cristallo il Main Oscillator V Internal RC Oscillator e PRTC Oscillator Ognuno di questi pu essere usato per pi di uno scopo e ciascuna di queste sorgenti di clock pu essere scelta via software per pilotare in primo luogo il PLL e successivamente la CPU Fig 4 13 Oscillatore al quarzo bene notare dunque come negli apparati elettronici dove sono presenti oscillatori spesso venga comunemente utilizzato un Phase Locked Loop PLL ovvero un anello ad aggancio di fase questo non altro che un circuito elettronico progettato per generare un onda di una specifica frequenza sincronizzata con un onda di valore differente fornita in ingresso Il PLL dell LPC2378 accetta segnali di clock in ingresso nel range di frequenze tra i 32KHz e i 50MHz la frequenza in ingresso moltiplicata per un certo valore in maniera tale da ottenere un alta frequenza e successivamente ridivisa per fornire il clock usato dalla CPU e dal blocco USB 4 2 7 1 Main Oscillator Il Main Oscillator o oscillatore principale viene utilizzato come sorgente di clock per la CPU con o senza l ausilio del PLL
94. onoscenza indicativa a priori del Footprint di un dato sistema RTOS in maniera tale da poter riconoscere subito l eventuale incompatibilit tra sistema e piattaforma hardware 2 2 3 Context Switch Time CST Nella valutazione dei sistemi RTOS uno dei pi significativi parametri su cui basare la propria scelta il tempo di commutazione di contesto meglio conosciuto come Context Switch Time CST dunque utile nei sistemi con un solo processore come nel nostro caso per effettuare un apparente parallelismo di calcolo Questo tempo determinato da quella parte del sistema operativo che fa commutare da un processo ad un altro ovvero lo scheduler infatti come vedremo nel paragrafo successivo il CST ha una varianza molto spiccata in diretta relazione all algoritmo che verr implementato per realizzare lo scheduler Il CST esattamente il tempo che impiega un RTOS per passare allo stato di esecuzione da un processo ad un altro questo tempo causato da diversi fattori tra cui il salvataggio ed il 11 caricamento dei registri e delle mappe di memoria anche in questo caso ci sono degli inconvenienti che possono essere ovviati con degli adeguati accorgimenti relativi al CST come possono essere un adeguato progetto o un adeguata implementazione dell algoritmo di scheduling 6 2 2 4 Interrupt Latency Quando si passa da un processo ad un altro le cause possono essere principalmente due entrambe legate allo schedu
95. orting il codice pu essere pensato per architetture differenti e quindi le primitive possono risultare diverse da quelle esportate dal nostro sistema operativo e Configuration il codice pu essere pensato per molte architetture e quindi bisogna configurarlo relativamente alla piattaforma in utilizzo Questo genera delle incongruenze nella corrispondenza dei tipi primitivi e non provocando cos numerosi errori di prima compilazione nella maggior parte dei casi questi errori possono essere ovviati per mezzo di un surplus di codice che vada a sciogliere 1 dubbi sulla porzione importata sconosciuta Solitamente in questi casi questo problema si gestisce aggiungendo nell intestazione del file apposite define che possano mettere in corrispondenza l esattezza procedurale del codice importato con i valori esatti che devono assumere tali variabili costanti nel contesto del RTOS in cui vengono ospitate Chiaramente non si tratta solo di semplici tdefine ma ci che deve essere aggiunto pu appartenere a diverse nature quali funzioni files header ed altre strutture non ora specificate Vediamo ora l entry point del nostro programma ovvero il main c discutendone le principali caratteristiche di funzionamento 57 define GPIO_SC 1UL lt lt O0 define GPIO_SC_FIO FIO4PIN ENTRY POINT int main void Init Board printf INIT BOARD n prvSetupHardware BSP_Init Init GPIO GPIOInit 4 FAST PORT DIR O
96. osi di individuare la corrispondente richiesta d interruzione alla VIC anche in questo caso per poter settare 1l bit meno significativo di tale registro senza compromettere lo stato dei restanti bit effettueremo un operazione di OR bit a bit tra il registro stesso ed un opportuna maschera del tipo 0x1 Immediatamente dopo troviamo la chiamata per disabilitare gli interrupt in maniera tale da non avere interruzioni concorrenti durante la routine di esecuzione dell IRQ La successiva riga di nostro interesse quella atta alla variazione del livello sul pin configurato come GPIO in uscita essa come nel caso del calcolo del CST effettua l operazione di XOR atta a generare una transizione di livello dipendente dallo stato precedente stata inoltre inserita per motivi di ulteriore verifica una print f con lo scopo di mostrare sul Terminal I O la corretta esecuzione delle operazioni inserite nell interrupt handler tale soluzione stata adottata con lo scopo di avere un riscontro pi facilmente osservabile all occhio umano e per avere cos una conferma puramente qualitativa relativamente alla correttezza delle operazioni svolte Le ultime due istruzioni sono fondamentali in quanto riabilitano la disponibilit da parte del sistema ad accettare nuovamente delle interruzioni A questo punto tutto pronto per il test Avviamo dunque la compilazione e corretta una piccola serie di errori dovuta ad alcune sviste inviamo il
97. passaggi svolti da principio sino a quali migliorie e successivi sviluppi possano essere compiuti passando per lo stato attuale delle cose Abbiamo visto come siano state tanto numerose quanto differenti le fasi attraversate prima di poter decretare quale fosse il RTOS pi adatto alle nostre esigenze alla prima fase che ci ha portati alla ricerca di informazioni in rete visitando 1 vari siti dedicati ai RTOS seguita un analisi dei datasheet e delle tabelle riportanti i parametri prestazionali di tali sistemi Dalle relative valutazioni sono stati individuati due sistemi operativi che a giudicare dalle loro specifiche sarebbero stati 1 reali candidati per un ulteriore selezione finale che avrebbe individuato quale tra questi sarebbe diventato il RTOS favorito La nostra analisi spinta dai nostri scopi specifici si svolta relativamente a tre parametri individuati assieme all Ing Matteo Cantarini chiaramente i parametri caratterizzanti un RTOS sono molteplici e particolarmente poliedrici dando cos al programmatore la sensazione di entrare in una fitta giungla dove ogni albero un parametro Per quanto riguarda il nostro elaborato si limita all analisi di un piccolo numero di parametri che per costituisce un ottima base per l ampliamento dei test in maniera tale da poter cos raggiungere una pi completa valutazione dei RTOS in rapporto alla propria specifica applicazione e aver cos una visione ottimale di tutte le possibil
98. ppellativo che meglio pu descrivere il modo di impiego di tali sistemi Infatti in elettronica con il termine Sistema Embedded si identificano genericamente dei sistemi elettronici a Microprocessore uP progettati appositamente per una determinata applicazione spesso con un determinato hardware ad hoc integrati nel sistema che controllano e in grado di gestirne tutte o parte delle funzionalit Contrariamente ai sistemi General Purpose categoria a cui appartengono ad esempio i nostri computer di casa i Sistemi Embedded devono svolgere dei compiti conosciuti gi durante la fase della loro progettazione ad esempio quando viene prodotto un Pentium 4 la Intel casa produttrice di tale uP non si pone il problema del fatto che esso venga usato per scopi di videoscrittura piuttosto che per ascoltare un Mp3 al contrario i progettisti della Motorola sapranno a priori l applicazione che il loro uP dovr coprire e di conseguenza lo progetteranno in maniera tale da funzionare al meglio per la suddetta applicazione 1 Grazie a ci l hardware pu essere ridotto ai minimi termini per ottimizzarne lo spazio occupato i consumi ed il costo di fabbricazione Inoltre su questi dispositivi viene eseguito del software che risiede sulla memoria stessa dell apparato e nella maggior parte dei casi l esecuzione in tempo reale Real Time questo permette un controllo deterministico dei tempi di esecuzione 1 2 Breve storia di tali sistemi E
99. pressante richiesta di esecuzione dei processi entro una rigida deadline la memoria associata a tali dispositivi embedded dovendo soddisfare tali margini di tempo dovr essere necessariamente rapida ed efficiente in ogni sua operazione dal fetch allo store risulta quindi molto importante abbinare una memoria di rapida locazione ad un File System in grado di gestirla in maniera adeguata I File System possono essere usati su diverse piattaforme che hanno necessit di avere accesso a funzioni hardware di base Alcuni esempi tra i pi noti dei File System sono i FAT File Allocation Table che possono essere del tipo FAT12 FAT16 e FAT32 a seconda di quanti bit si allochino per numerare 1 cluster del disco In particolar modo nel nostro caso necessitiamo di un File System che sia una libreria estremamente performante ed ottimizzata in maniera tale da soddisfare particolari vincoli su determinati parametri fondamentali tra cui la velocit la versatilit ed il Footprint 2 2 2 Footprint Cercando sul dizionario la parola Footprint il primo termine che si trova impronta Subito dopo vi la parola ingombro ed infatti proprio d ingombro che andremo a parlare o meglio di occupazione di memoria Il Memory Footprint si riferisce all ammontare di memoria che il programma occupa o a cui si riferisce direttamente mentre in esecuzione Questo ingombro include tutte le regioni di memoria attive come la regione contenente il codice
100. prietari Uno dei pi se non il pi conosciuto RTOS con licenza open source FreeRTOS esso progettato per piccoli uC ed scritto in linguaggio C ha un scheduler di tipo preemptive e i threads in coda che condividono lo stesso livello di prelazione sono schedulati in modalit Round Robin Il File System supportato pu essere di tipo FAT16 32 e ha un footprint estremamente ridotto 9 Tutti gli altri RTOS analizzati hanno licenza proprietaria questo per non deve scoraggiare al loro utilizzo in quanto alcuni di essi hanno caratteristiche talmente performanti da portare in secondo piano il costo come metrica di scelta Il primo RTOS con licenza proprietaria che siamo andati ad analizzare RTXC Quadros esso un sistema che si presta con buoni risultati al general processing e ad applicazioni di controllo supporta File System di tipo FAT12 16 32 ha uno scheduler preemptive e nel caso ci siano pi processi a stessa priorit adotta una politica di distribuzione RR Ha un footprint sufficientemente piccolo tale da renderlo adatto ad applicazioni che richiedono un alta frequenza di interrupt e un CST discretamente ridotto 10 Il secondo sistema analizzato Segger EmbOS il suo grosso vantaggio quello di essere progettato per offrire una reale sensazione di multitasking ha un footprint piuttosto ridotto 19 ha anch esso uno scheduler come quello dei due sistemi precedenti un interrupt latency e un Context Swi
101. punto dopo aver messo a confronto tali sistemi risulta necessario e doveroso per quanto ci riguarda scegliere tra questi i RTOS che pi si addicano alle nostre richieste segue quindi in base alle informazioni ed ai parametri raccolti una riduzione del campo di scelta circoscritto a quei sistemi che possano essere i reali candidati a soddisfare le nostre aspettative prestazionali Tutti i sistemi analizzati hanno come si pu notare dalla loro descrizione generale caratteristiche molto simili ma differiscono per certi aspetti che per noi fanno la differenza Alla foce di tutto questo ragionamento i sistemi individuati come interessanti per quel che concerne il nostro scopo sono fondamentalmente due FreeRTOS e IAR PowerPac seguono le motivazioni che ci hanno spinto ad affermare ci e nei capitoli successivi andremo progressivamente pi a fondo sia operativamente che quantitativamente su questi due sistemi decretando oggettivamente quale sia verosimilmente il pi adatto a noi Nel primo caso ovvero per FreeRTOS che dire il pezzo forte di questo sistema operativo risiede nel fatto che offre una licenza Fig 25 Logo diFreRTOS Open Source questo significa che il codice sorgente liberamente prelevabile dalla rete e modificabile a proprio piacimento Inoltre facile trovare informazioni in rete su come compilarlo e su come effettuare operazioni di porting relativamente ad un ragguardevole numero di piattaforme hardware Resta da non
102. rale I uC sono la forma pi diffusa e pi invisibile di computer Comprendono la CPU un certo quantitativo di memoria RAM e memoria ROM pu essere PROM EPROM EEPROM o FlashROM e una serie di interfacce di I O input output standard fra cui molto spesso PC PS SPI CAN UART Ethernet ed altre Timers Memoria dati e programmi Fig 1 3 Schema a blocchi di un microcontrollore Le periferiche integrate sono la vera forza di questi dispositivi si possono avere convertitori ADC e convertitori DAC multicanale timer counters USART numerose porte esterne bidirezionali bufferizzate comparatori PWM etc I uC sono contenuti in una gran quantita di apparecchi ed elettrodomestici come ad esempio videoregistratori e televisori costruiti dopo il 1990 nelle macchine fotografiche e nelle videocamere nei lettori CD e DVD nei forni a microonde nei controlli automatici di macchine industriali in molte lavatrici e frigoriferi di ultima generazione nelle centraline di controllo delle motociclette e delle automobili anche molte decine di uC in una sola automobile negli antifurto elettronici nei registratori di cassa dei negozi negli sportelli Bancomat nelle centraline dei semafori La loro capacit di calcolo molto limitata a dispetto della velocit ragguardevole che possono raggiungere e di solito eseguono lo stesso programma firmware per tutta la durata del loro funzionamento In rari casi difetti molto gravi il fabbr
103. riale 22 Praticamente ogni famiglia di microprocessori ha la sua UART dedicata Nel caso del nostro uC questa funzione interna allo stesso esso infatti contiene quattro UARTs e inoltre per rendere standard le linee di dati in trasmissione e ricezione stata fornita un interfaccia capace di controllare completamente I handshake 43 4 2 5 5 Interfaccia PC PC acronimo di Inter Integrated Circuit ovvero un sistema di comunicazione seriale bifilare vedi linee verdi in Fig 4 9 utilizzato tra circuiti integrati Questa interfaccia necessita di un protocollo in questo caso esso prevede una comunicazione seriale con la peculiarit di impegnare solo due linee e permettere secondo la modalit di funzionamento velocit di trasmissione elevate 4Mbit s analizzando da vicino le due linee possiamo notare che una contiene il segnale di clock e prende il nome di Serial Clock Line SCL l altra che prende il nome di Serial Data Line SDA trasporta l informazione vera e propria 1 5KQ End of Gumstix Power Jack 4 7KQ STITITITI Gumstix GPIO Pads 3 3KQ 2x7 housings were easier to come by Housing which Plugs Onto Brainstem 2x6 12C Pins Fig 4 9 Esempio di schema circuitale interfaccia re Ogni dispositivo riconosciuto attraverso un unico indirizzo e pu operare o come singolo ricevitore i e display LCD o come trasmettitore con la capacit sia di ricevere che di trasmettere i
104. rministica inoltre interessante notare che lo scheduling principalmente definito in anticipo a tempo di compilazione compile time Direttamente contrapposto troviamo il secondo ovvero lo scheduler dinamico esso permette di modificare la priorit di lavoro basata su diverse politiche di algoritmi di schedulazione Questo approccio pi complicato e richiede pi codice per implementare tale logica oltre a necessitare di un notevole overhead per gestire 1 processi invece qui prevista una logica non deterministica la quale piuttosto sfavorevole per i sistemi hard Real Time In questo modo il task attivo in un dato momento pu modificare il suo assetto mentre in fase di RUN e quindi la priorit dei processi pu cambiare dinamicamente stato particolarmente ostico riuscire ad individuare quali fossero degli algoritmi effettivamente pi usati di altri nella ricerca sulla rete abbiamo notato che presente una vastissima quantit di sistemi RTOS ed ognuno di questi per adattarsi a specifiche applicazioni e piattaforme hardware ha caratteristiche ben discostate dai suoi ipotetici rivali di mercato 14 Nonostante ci abbiamo individuato alcuni fili conduttori legati a specifici tipi di algoritmi di scheduling e li abbiamo cosi analizzati piu a fondo in maniera tale da offrire un infarinatura di quali fossero le principali caratteristiche e peculiarita di un algoritmo di schedulazione vediamo dunque alcuni esempi tra
105. rollore verifica lo stato del filo monitorando eventuali fronti di salita o discesa secondo la propria configurazione Ad ogni interrupt associato un numero sequenziale utilizzato per indicizzare la VIT Vectored Interrupt Table VIT un vettore di puntatori a funzione che gestiscono gli interrupt associati sulla base della posizione all interno del vettore stesso Ad ogni interrupt associabile una priorit che permette di dipanare eventuali conflitti nella loro gestione questa nel nostro caso configurabile tra 0 e 15 con 15 come valore di default che individua la priorit minima Dal momento in cui rilevata una specifica condizione elettrica sul pin di interrupt il processore che stava eseguendo operazioni definite dall applicazione in corso salva lo stato di tutti i registri e dello stack In seguito chiamata la routine della VIT associata all interrupt che si verificato tutto ci non avviene in modo istantaneo ma in un tempo come precedentemente detto al paragrafo 2 2 4 denominato Interrupt Latency I pins sulle porte d input output programmabili PORTO e PORT in tutto 46 pins possono essere programmati per generare un Interrupt sul fronte di salita sul fronte di discesa o su entrambi 4 2 4 Fast General Purpose Parallel I O I device pins non collegati ad una specifica funzione periferica sono controllati dai registri GPIO General Purpose Input Output tali pins possono essere configurati
106. sempre coerenti cos da poter valutare eventuali comportamenti funzionali non percettibili in una data sessione di test ma poter avere una visione di paragone tra i sistemi che possa offrire un quadro di confronto estremamente valido nella sua completezza In conclusione bene comunque tener conto che al di l di tutti i test effettuabili su di un RTOS resta come punto cardine fondamentale il fatto che sia la scelta del RTOS che la scelta dei relativi parametri da testare varino in corrispondenza di come si abbia intenzione di utilizzare il RTOS stesso in quanto come spesso recita il Prof Ing Rodolfo Zunino chi comanda sempre l applicazione Le applicazioni reali dell architettura a cui si sta lavorando per questa piattaforma possono essere sintetizzate come sperimentazioni di applicazioni su scheda di valutazione di algoritmi per l analisi di coordinate GPS 92 8 Bibliografia 1 2 3 4 5 6 7 8 9 10 11 12 Sistemi Elettronici Embedded www esng dibe unige it Staff Personal Pages Rodolfo Zunino sitoDidattica Download htm Rodolfo Zunino DIBE UNIGE 2008 Real Time Operating Systems for DSP part 6 www dspdesignline com jsessionid VWXSRA ANSKOBGOSNDLRSKHOCJUNN2JVN Robert Oshana 2008 Introduzione ai Microcontrollori www dei unipd it ieeesb PIC PresentazionePIC_01 pdf IEEESB PADOVA 2007 RTOSBOOK www dti unimi it piuri pages didattica SO
107. sottovalutare che questo sistema operativo in grado di gestire nativamente un buon numero di stack Purtroppo per questo sistema non sono disponibili valori specifici che individuino velocit o caratteristiche di risposta ma questo non ci scoraggia infatti nella fase successiva di questo documento saranno ricercati sufficienti valori attraverso analisi sperimentali in maniera tale da poter cos valutare pi accuratamente e specificamente le potenzialit di tale sistema Quindi fondamentalmente il sistema potrebbe anche essere quello adatto 21 restano da valutare alcuni parametri che possono confermare o contraddire quanto detto se ne riparlera dopo l analisi sperimentale che avverr successivamente Per quanto riguarda invece IAR PowerPac partiamo subito con il rovescio della medaglia ovvero il sistema ha licenza proprietaria il suo prezzo si aggira intorno alle decine di migliaia di Euro e nel Fig 2 6 Logo di IAR PowerPac Caso venga acquistato precompilato esso decisamente inferiore inoltre il supporto in rete parzialmente limitato a singoli esempi spesso forniti dallo sviluppatore del uC stesso o direttamente all interno dell ambiente di sviluppo Come per accennato precedentemente questo fatto non deve scoraggiare l eventuale acquirente in quanto se una licenza supportata o meglio giustificata da un insieme di prestazioni considerevoli e da un assistenza specializzata fornita direttamente da p
108. ssa venga sottomesso al sistema da processi con priorit pi alta quali sono ad esempio gli interrupt Per ovviare a questo problema oltre che a poter utilizzare degli algoritmi di scheduling diversi si utilizzano le cosiddette tecniche di invecchiamento aging ovvero si provvede ad aumentare progressivamente ad intervalli regolari la priorita del processo sottomesso Inoltre questo tipo di schedulazione avendo un quantum of tick costante e frequente che comporta una continua commutazione di contesto sara di estrema importanza avere un RTOS il cui scheduler abbia un CST molto basso 2 2 5 2 Non preemptive scheduling Togliendo il timer si ottiene a partire dal precedente questo algoritmo di scheduling Se prima era il timer a decidere quando fosse il momento di commutare da un processo ad un altro ora il task in stato di RUN deve essere portato fino al termine dell esecuzione Gli algoritmi di schedulazione non preemptive sono progettati in maniera tale che ogni processo in esecuzione rimanga tale sino a quando volontariamente invochi servizi del sistema operativo Si ha cosi una notevole semplificazione nei rapporti tra processi ed inoltre viene minimizzato l overhead garantendo un miglior sfruttamento delle risorse Il grosso limite di questo approccio che le prestazioni Real Time sono responsabilit del programmatore di processi a tempo di compilazione le prestazioni sono quindi per nulla garantite dal sistema operati
109. ssignani che ogni volta in cui ha potuto ha fatto il possibile per farmi sentire a casa sino dai tempi del liceo come ti dico sempre Nadia sei unica Dopodich il mio grazie ma soprattutto il mio abbraccio forte va a Vito Micky Frank Takke Skeno Ilir ed Edo componenti inseparabili del Gruppo di Studi con i quali ho condiviso la maggior parte del mio tempo negli ultimi anni tra questi stringo forte Micky amico e compare di avventure tra le ultime questa tesi che rimprovero spesso per la sua eccessiva estroversione ma quando ci ripenso sorrido La strada stata ardua e piena di ostacoli ma abbiamo sempre tenuto duro e pian piano siamo arrivati a questa importante destinazione che s intermedia ma ci siamo arrivati Grazie di cuore Amici Che altro dire La strada ancora lunga Forza ragazzi Davide IV Prefazione Negli ultimi anni andato via via sviluppandosi sempre pi Putilizzo di apparati elettronici embedded relativamente alle pi svariate applicazioni Tra questi un importanza particolarmente rilevante va associata alla vertiginosa diffusione dei microcontrollori uC i quali grazie alla loro versatilit applicativa ed il costo particolarmente ridotto hanno dato origine ad una vera e propria esplosione commerciale anche in ambiti dove essi non erano strettamente necessari Con lo sviluppo esponenziale delle tecnologie produttive questi oggetti sono diventati sempre pi sofisticati
110. stiche che meglio soddisfino le esigenze dell applicazione software che si sta sviluppando e che permettano 25 ai programmatori la piu confortevole attivita di sviluppo integrando quindi una toolchain ben fornita ed un IDE particolarmente funzionale Da qui segue immediatamente la scelta dell ambiente di sviluppo pi adatto che nel nostro caso dopo le dovute valutazioni risultato essere IAR Embedded Workbench 5 0 Questo ambiente di sviluppo fornisce una Toolchain per microcontrollori LPCxxxx ovvero per tutta la famiglia degli LPC e raggiunge un buon livello di integrazione con gli strumenti per la compilazione il building automatico ed il debug garantendo comunque delle ottime performance in rapporto al prezzo d acquisto da notare inoltre come il compilatore da noi utilizzato sia considerato in letteratura uno dei migliori per quanto concerne il rapporto Footprint prestazioni Scelto dunque l ambiente di sviluppo si installato il pacchetto software sul portatile L operazione ha prodotto la copia delle componenti software sul PC e successivamente configurato l ambiente per essere eseguito sul computer stesso All esecuzione dell applicazione sullo schermo si presentata la seguente videata 7 JAR Embedded Workbench IDE h Ram Debug _2I785K EIA El extint RAM Deb iv initialize VIC VICINTENCLEAR Oxccreceecs VICADDRESS 0 VICINTSELECT 0 La Outp
111. sullo stesso chip del processore Questi sistemi integrati vennero chiamati microcontrollori uC piuttosto che microprocessori e fu possibile la loro utilizzazione di massa Con un cos basso costo per componente questa alternativa divenne molto pi interessante che costruire interamente circuiti logici dedicati Ci fu un esplosione del numero di sistemi embedded distribuiti sul mercato cos come delle componenti fornite da vari produttori per facilitare la progettazione di tali sistemi Parallelamente ai uC vennero alla luce 1 DSP Digital Signal Processors e i PLD Programmable Logic Devices mentre i primi erano ottimizzati per implementare in maniera estremamente efficiente algoritmi relativi al condizionamento di segnali digitali i secondi erano dispositivi elettronici con logica configurabile previa programmazione Verso la fine degli anni ottanta i sistemi embedded rappresentavano la regola piuttosto che l eccezione per quasi tutti i dispositivi elettronici tendenza che continua tuttora 1 2 1 Digital Signal Processor DSP Come accennato al paragrafo precedente quando si tratta di elaborazione di segnali digitali bisogna dotarsi del dispositivo hardware adeguato ovvero il DSP Questo microprocessore ottimizzato per eseguire in maniera estremamente efficiente sequenze di istruzioni ricorrenti come ad esempio somme moltiplicazioni e traslazioni nel condizionamento dei segnali A questo proposito i DSP utilizzano un insie
112. sultato finale in us effettuando cos un printf sul Terminal I O dell ambiente di sviluppo utilizzato In questo contesto non andremo ad analizzare il codice ma lo postiamo solamente qualora possa tornare utile a chi come nel nostro caso volesse avere un riscontro dei risultati ottenuti attraverso una via alternativa ma pur sempre attendibile Ecco qua calcolato anche per IAR PowerPac il relativo Context Switch Time 5 1 3 Report risultati ottenuti Come accennato al paragrafo 3 4 questo oscilloscopio fornito dell interessante funzione atta a catturare immagini di ci che si propone a video in tempo reale e tramite una fornita consolle di cursori abbinata a diverse funzioni matematiche precaricate permette di effettuare diverse operazioni Per quanto ci riguarda quella di maggior interesse si rivelata la sottrazione sull asse dei tempi cos da poter calcolare con estrema precisione quale fosse la distanza tra i due picchi in uscita provocati da un cambio di contesto Vediamo qua sotto le istantanee relative a FreeRTOS prima e a IAR PowerPac dopo File Timebase Trigger Display Cursors Measure Math Analysis Utilities Help F c A N A 5 00 usidiv Stop 277V 50 0kS_ _1 0GSisfEdge Positive XI 19 99970ms AX 17 458 X2 20 01715ms 1 A 57 3 kHz 15 07 2008 12 08 13 Fig 5 5 Screenshot all oscilloscopio del CST di FreeRTOS al primo istante 67 Math Ar Utilities Help
113. tch Time piuttosto contenuti 11 Il terzo RTOS da noi preso in considerazione Express Logic ThreadX esso stato progettato specificatamente per applicazioni embedded implementato come libreria C e ha un footprint ragionevolmente ridotto dotato di una gestione degli interrupt ottimizzata un Context Switch che offre una buona reattivit e supporta un File System FAT compatibile e offre uno scheduler basato sulla stessa logica di quelli precedentemente analizzati 12 Il quarto sistema operativo analizzato QNX Neutrino esso dotato di un microkernel il quale permette di essere caricato su dispositivi molto piccoli mostrando cos un footprint molto ridotto Il sistema mette a disposizione una serie di opzioni per supportare diversi File System ha un efficiente gestione del Context Switch un interrupt latency piuttosto ridotta e implementa diversi tipi di algoritmi di scheduling tra cui FCFS e RR 13 Il quinto sistema passato in analisi secondo i medesimi parametri dei RTOS precedenti LINUXWORKS LynxOS esso stato progettato per applicazioni Hard Real Time ed dotato di una scalabilit lineare che ne fa incrementare la predicibilit operativa Questo sistema stato progettato in maniera modulare cos da rendere meglio gestibile la quantificazione del footprint Supporta diversi dispositivi di interrupt ai quali risponde in un tempo ragionevolmente accettabile Questo sistema dotato di un Context Switch determinis
114. tenere il codice vero e proprio da modificare ovvero non altro che l editor il quale permette all utente di effettuare le modifiche relative allo sviluppo dell applicazione di proprio interesse In ultimo possiamo individuare la zona 4 contenente la barra dei men e la barra degli strumenti la prima fondamentale in quanto permette di attivare i comandi e le azioni relative al codice nativo ed alle funzionalit dell ambiente di sviluppo nella loro completezza mentre la seconda non altro che una barra contenente le scorciatoie alle funzioni pi popolari dei men sopraccitati L insieme di tutti questi componenti e aree di lavoro genera cos un ambiente software user friendly dove il programmatore pu procedere nello sviluppo dell applicazione di suo interesse dedicando il minor tempo possibile ad operazioni fuorvianti essendo esse stesse completamente automatizzate e rese disponibili dal framework dell IDE stesso 3 2 Emulatore Mentre l IDE si occupa sostanzialmente di generare il nostro applicativo vediamo ora cosa sia necessario al fine di caricare il software sulla memoria interna del nostro microcontrollore e monitorare l esecuzione dei processi L elemento utile a tale operazione il JTAG Joint Test Fig 3 5 Emulatore JTAG link Action Group che permette cos di trasferire le informazioni necessarie tra il PC o meglio l ambiente di sviluppo ed il microcontrollore stesso 21 Innanzitutto
115. ter controllare separatamente la locazione dei fronti di salita e di discesa per fare ci si sfruttano adeguatamente dei registri che caratterizzano la maniera in cui debba essere impostata la PWM Nel nostro uC vi un solo blocco PWM con impiego su operazioni Counter o Timer che pu utilizzare il clock periferico o uno degli ingressi di cattura come sorgente di clock ed inoltre pu essere impiegato come Timer standard se la modalit PWM fosse disabilitata 50 4 2 8 3 Watchdog Timer WDT Il Watchdog Timer ovvero il temporizzatore di supervisione un sistema di temporizzazione hardware che permette alla CPU la rilevazione di un loop infinito di programma o di una situazione di deadlock due o pi task si bloccano a vicenda aspettando che uno esegua una certa azione che serve all altro e viceversa Tale rilevazione pu consentire di prendere dei provvedimenti per correggere la situazione generalmente effettuando un reset del sistema evitando cos di finire in uno stato erroneo Quando il WDT abilitato esso generer un system reset se l applicativo utilizzatore non ricarica resetta il Watchdog prima di un determinato ammantare di tempo Nell LPC2378 il WDT pu essere utilizzato in modalit debug ed inoltre questo uC fornito di un flag che indica la presenza o meno di un operazione di reset del WDC stesso 4 2 8 4 Wake Up Timer La funzione fondamentale del Wake Up Timer quella di monitorare il crista
116. tico grazie ad uno scheduler a rapida gestione Per quanto riguarda lo scheduler questo sistema ne presenta quattro tra 1 pi comuni ed utilizzati e supporta diversi File System tra cui Lynx Fast File System e ISO 9660 File System purtroppo per non sembra supportare il File System di tipo FAT Anche questo sistema malgrado le buone caratteristiche operative ha licenza proprietaria 14 Sesto ed ultimo RTOS con licenza proprietaria analizzato lo IAR PowerPac innanzi tutto dotato di un footprint molto ridotto nonostante ci diverse caratteristiche del sistema sono gi incluse nella versione base Per quanto riguarda gli interrupt il sistema totalmente interrompibile in un tempo brevissimo e questa caratteristica fa di PowerPac un valido RTOS da utilizzare nelle situazioni time critical Gode inoltre di un Context Switch Time estremamente breve che abbinato ad un interrupt latency altrettanto ridotto Zero Interrupt Latency crea una responsivit del sistema molto interessante Per quanto riguarda il File System supportato il FAT nelle sue diverse varianti 20 A livello di scheduler vengono offerti un preemptive scheduling nel caso generale e successivamente qualora si presentino processi con identica priorit la politica di schedulazione viene commutata in RR Relativamente alla licenza anche in questo caso ci troviamo di fronte ad un sistema con licenza proprietaria 15 2 4 Scelta dei RTOS di interesse A questo
117. tinazione nella relativa sa porta sull Evaluation Board destinata alle attivita di collaudo Fig 3 6 Cavo JTAG a 20 pins e di caricamento Flash In conclusione bene fare presente che la scelta stata dettata soprattutto dalla forte integrabilit tra il j link e l ambiente di sviluppo IAR Embedded Workbench 5 0 29 3 3 Evaluation Board Come accennato nella parte conclusiva al paragrafo precedente il cavo JTAG a 20 pins direttamente collegato al connettore dedicato presente sull Evaluation Board vediamo ora meglio nel dettaglio cosa sia una scheda di valutazione e quali siano le sue peculiarit Una Evaluation Board un circuito stampato contenete un microprocessore nel nostro caso un microcontrollore e la minima logica di supporto di cui si necessita per testare e valutare le prestazioni del suddetto uC Dovendo quindi sviluppare un applicazione e testarne le relative performance dovremo dunque disporre di determinate interfacce che rendano possibile il completo utilizzo delle funzionalit offerte dal microchip stesso favorendo cos la comunicazione e la gestione degli input e degli output Per quanto ci riguarda l EB fornitaci la OLIMEX LPC2378 STK in figura della quale seguir una breve descrizione riguardante le relative interfacce e funzionalit Interfaccia Ethernet Porta EXT2 Porta EXT1 Interfaccia USB Interfaccia CAN vuu ras gt E sia 220 MMH OLIMEX COM DEU LPC 2378 STK 1 54 C
118. titasking return 0 61 Come si pu notare dalle prime righe del main sono presenti diversi comandi di inizializzazione che hanno lo scopo di avviare uno alla volta differenti frammenti utili del sistema hardware e software a partire dal kernel del sistema operativo sino alle porte led A questo punto risulta necessaria trattandosi di un cambio di contesto la creazione di almeno per quanto ci riguarda sono pi che sufficienti due tasks ciascuno dei quali creato dalla relativa funzione In ultimo luogo troviamo l istruzione os_start la quale provoca l avvio del sistema in modalit multitasking e come nel caso precedente da questa funzione il programma non deve pi uscirne mentre per quanto riguarda l istruzione return 0 essa serve ad individuare un eventuale esecuzione errata del programma Ma il vero problema stato anche in questa occasione individuare l effettiva routine del cambio di contesto quest ultima dopo numerose ricerche stata localizzata in un file di libreria denominato oskern c che risiede in una zona diversa dai files dell applicazione Pi propriamente la funzione interessata os_INTERWORK void OS ChangeTask void la quale opera con istruzioni a pi basso livello ed individua un codice particolarmente conciso ed ottimizzato vediamo dunque di seguito la porzione di codice interessata alla valutazione sperimentale del CST su questo RTOS OS_INTERWORK void OS_ChangeTask void
119. to del test fossero dovute solamente all effettiva gestione differente della memoria tra i due sistemi e non a ipotesi operative dissimili 82 6 Analisi dei risultati e conclusioni Eccoci giunti all epilogo di questa interessante esperienza Questo capitolo si configura come compendio basato sui risultati ottenuti e consultabili nei relativi reports al Capitolo 5 effettuato tale compendio verra fatta un analisi quanto piu possibile approfondita degli esiti relativi ai tests eseguiti e successivamente verranno tratte le considerazioni finali con lo scopo di individuare in conclusione quale tra i due RTOS messi a confronto sia per noi effettivamente il sistema 6 1 Commenti ai risultati ottenuti Ai paragrafi precedenti abbiamo visto le modalita con cui si sono svolti i tests relativi ai tre parametri caratteristici riguardanti i due RTOS messi a confronto ovvero il CST Interrupt Latency ed il Footprint e successivamente abbiamo riportato in maniera puramente informativa 1 risultati ottenuti Vediamo ora nel particolare di commentare 1 reports precedenti e di trarre per ciascun parametro una specifica conclusione relativamente ai due RTOS confrontati 6 1 1 Context Switch Time Come prima cosa bene riportare in forma pi schematica e comprensibile quanto citato nel report relativo alla valutazione di questo parametro nei due RTOS Scrutando il grafico alla pagina seguente e la relativa tabella contenenti
120. tro da 8 bit exrINT l informazione che permetta di definire le modalit di rilevazione dell interruzione tale registro visibile nella tabella seguente REGISTRO EXTINT 5 4 RESERVED RESERVED RESERVED Tab 5 9 Astrazione schematica del registro EXTINT Essendo noi interessanti all interrupt esterno EJNTO andremo come nei casi precedenti a configurare 1 LSB di tale registro contenente i flags relativi all interrupt esterno Il settaggio di questo registro visibile nella funzione _irq _ nested _ arm void EINTO_Handler void contenuta nel file extint c per la quale vale la pena commentare il relativo codice _ _irg __nested __arm void EINTO_ Handler void EXTINT 1 semino luciani 1 interrupt __disable_interrupt handles nes eint0_counter flashing USB Link LED GPIO_SC_FIO GPIO_SC semino luciani 77 printf INTERRUPT 0K n semino luciani USB_LINK_LED_FIO USB_LINK_LED_MASK __enable_interrupt handles nested interrupt VICADDRESS 0 Acknowledge Interrupt eyed a ada cia e Siete Ss ae Se oa Eee Se Se eo aloj a Sea San Seton ee See Sinha La funzione precedente non altro che il gestore degli interrupt relativamente al P2 10 in modalit EINTO la prima istruzione che incontriamo ovvero la modifica del registro EXTINT estremamente importante in quanto tale registro contiene gli Interrupt Flags permettendo c
121. troduciamo alcuni concetti e definizioni di base che caratterizzano lo studio della teoria e degli algoritmi della schedulazione Real Time Definiamo anzitutto il concetto di processo Per processo o task intendiamo una sequenza di istruzioni che in assenza di altre attivit viene eseguita dal processore in modo continuativo fino al suo completamento 12 La situazione di riferimento per un ambiente Real Time quella in cui sono presenti numerosi processi ciascuno con particolari esigenze di schedulazione In questo caso necessario individuare una strategia di assegnazione del processore che sequenzializzi Puso della risorsa fisica secondo un criterio stabilito a priori Gli stati in cui un task vive all interno dello scheduler sono principalmente tre e RUN caso in cui il task attualmente in esecuzione e READY i tasks che appartengono a questa categoria sono in grado di essere lanciati in esecuzione ma non sono correntemente in esecuzione poich un differente task di uguale o maggiore priorit gi nello stato di run e STOP un task in tale stato se sta correntemente attendendo un evento temporale un timer o un evento esterno un semaforo I tasks in questo stato non sono disponibili allo scheduling Fig 2 1 Stato dei processi di uno scheduler generico Quanto visto sopra soltanto uno schema generale di ci che deve al minimo effettuare uno scheduler infatti nei RTOS buona parte dell esecuzione dei
122. ttesa L FCFS un algoritmo senza diritto di prelazione ed ha prestazioni migliori con processi lunghi mentre penalizza i processi brevi Fig 2 4 Sequenza temporale di un FCFS scheduler I processi schedulati con una logica algoritmica di questo genere al contrario dei tipi con diritto di prelazione non soffrono del fenomeno della Starvation Come nel caso dello scheduler non preemptive anche in questo caso non necessario ottimizzare il CST poich la frequenza di cambio di contesto talmente bassa che il CST non va ad intaccare con una percentuale confrontabile il totale del tempo 2 2 6 Supported Platforms Ad ogni stagione il giusto abbigliamento Ogni RTOS nel proprio datasheet ha un elenco di piattaforme hardware sulle quali esso pu essere fatto girare Quando si ha da risolvere un problema come nel nostro caso di controllo necessario effettuare una ricerca per vedere quale possa essere in base alle sue caratteristiche una piattaforma hardware adeguata i e ARM7 9 Cortex M3 AVR PIC ed altri Per piattaforma adeguata si intende un hardware come pu essere ad esempio un uC che sia ottimizzato ed abbia una valida struttura hardware affinch l applicazione che andr ad essere portata caricata venga eseguita nel modo migliore Generalmente una volta scelta la piattaforma si passa direttamente alla ricerca di un RTOS che sia stato progettato o perlomeno facilmente portabile adattabile i
123. tti un RTOS non deve essere necessariamente veloce la cosa importante che risponda entro un tempo massimo ben conosciuto 4 Un RTOS deve garantire un elaborazione rapida dal punto di vista temporale anche se possibile che la risposta non sia precisissima Ad esempio una funzione di calcolo pu individuare il peso di un oggetto senza giungere alla precisione del milligrammo poich deve comunque fornire una risposta in un preciso tempo da quando si posto il peso nella bilancia Tale ragionamento non significa che si possano anche dare risposte errate ma che si debba spostare l attenzione sul tempo della risposta Questi tipi di sistemi devono dare l opportunit allo sviluppatore di conoscere a priori le pessime probabilit in cui si ottiene la risposta Viceversa un sistema operativo tradizionale deve garantire un elaborazione corretta dal punto di vista logico anche se possibile tollerare che qualche risposta arrivi in anticipo o in ritardo IRTOS si possono dividere in due categorie 5 e Sistemi Hard richiedono una rigida precisione nella risposta in termini temporali infatti il mancare una scadenza ha come conseguenza quello di invalidare il funzionamento dell intero sistema Un esempio di sistema hard potrebbe essere quello di una catena di montaggio in cui basta che un pezzo abbia un ritardo e l intera catena si blocca perch quel pezzo indispensabile e Sistemi Soft si limitano ad un rispetto statistico to
124. tutto alla memoria Flash del nostro microcontrollore e attiviamo il debug Ponendo cos due sonde una ai capi del LED ed una ai capi del microinterruttore ovvero tra il pin EXT2 24 ed il pin EXT2 40 possibile finalmente individuare il tempo che intercorre tra il fronte che individua la pressione del microinterruttore ed il fronte che individua l esecuzione della routine di interrupt associata 78 5 2 3 Report risultati ottenuti x Andiamo ora a fare una breve rassegna di quanto stato visualizzato sul monitor dell oscilloscopio senza per come nel caso del report relativo al CST trarre alcuna conclusione Vediamo qua sotto un istantanea scattata dopo aver posizionato tramite la consolle dei cursori i riferimenti utili ad effettuare l operazione di sottrazione sull asse dei tempi tra i due fronti volutamente mutati in ordine complementare in maniera tale da esaltare lo spazio che di fatto li separa ovvero l Interrupt Latency File Vertical Timebase Trigger Display Cursors Measure Math Analysis Utilities Help 1 00 Vidiv 200 nsidivf Stop 1 58V 0 mv offset 10 0kS 5 0GSisfEdge Negative x1 10ns 1 3000 ps X2 1 2990 us 1 AX 769 2 kHz 01 08 2008 15 20 03 Fig 5 11 Screenshot all oscilloscopio dell Interrupt Latency di IAR PowerPac Come accennato all inizio del paragrafo 5 2 2 il risultato da considerarsi coincidente tra i due sistemi per i motivi gia specificati in precedenz
125. ui le pi importanti al nostro scopo sono due la prima TargetResetInit che contiene le chiamate alla funzione di inizializzazione del GPIO considerato come interrupt in ingresso ed alla funzione relativa all inizializzazione della VIC successivamente nell entry point troviamo la chiamata alla funzione denominata 74 GPIOInit 4 FAST_PORT DIR_OUT GPIO Sc che relativa al pilotaggio del GPIO per quanto riguarda la gestione dell uscita A questo punto il programma esegue l istruzione EINTInit che definita nel file extint c buona parte delle modifiche apportate al codice sono state effettuate all interno di questa funzione e vale quindi la pena di analizzarle singolarmente DWORD EINTInit void EXTMODE 1 EXTPOLAR 1 IOOINTENF B1_MASK Bl interrupt by falling edge semino luciani if install _irq EINTO_INT void EINTO Handler HIGHEST_PRIORITY FALSE semino luciani return FALSE return TRUE Se prima abbiamo inizializzato il P2 10 come interrupt definiamo ora le modalit con cui esso debba essere rilevato e successivamente installato nella tabella delle interruzioni per agevolare la valutazione dei risultati all oscilloscopio abbiamo dovuto modificare i due registri da 8 bit ciascuno ExTMoDE ed ExTPoLAR visibili nelle due tabelle seguenti REGISTRO EXTMODE RESERVED RESERVED RESERVED RESERVED EXTMODE3 EXTMODE2 EXT
126. ulla scheda ottenendo un elevato grado di copertura anche quando la maggior parte dei componenti non raggiungibile per contatto da parte di un tester 16 Con la necessit di verificare anche il comportamento del codice eseguito dal uC al boundary scan si sono aggiunte componenti di controllo nei dispositivi pilotabili attraverso l interfaccia JTAG ci ha reso possibile l analisi in tempo reale dei valori dei singoli registri del dispositivo i e PC R1 R2 registri specifici per le periferiche etc e la loro modifica Tra le ulteriori funzionalit aggiunte stremante interessante la possibilit di inserire all interno del codice dei breakpoint che permettono tramite l interruzione dell esecuzione di un programma di osservare in tempo reale che il programma funzioni come previsto inoltre tramite catene JTAG possibile debuggare il comportamento di pi dispositivi presenti sulla scheda Stabilito cosa vuol dire JTAG bene valutare quali siano realmente i mezzi per rendere possibile la comunicazione JTAG tra il computer ed il chip e poter cos applicare tutte le attivit di diagnostica ovviamente non si pu comunicare JTAG direttamente con un chip tramite un cavo USB ma necessario uno specifico dispositivo spesso denominato 28 anch esso JTAG o emulatore Fig 3 5 che possa trasformare le informazioni provenienti dal computer e dirette al microchip in questione compatibilmente con lo standard JTAG
127. ut get 421 the vesto for i s i lt VIC_SIZE r DWORD VIC_BASE_ADDR VECT_ADDR_INDEX DWORD VIC_DASE_ADDR VEC sacs J Messages Errors 0 Warnings O 2 3 Fig 3 4 Screenshot dell IDE IAR Embedded Workbench 5 0 Come si pu vedere dallo screenshot in figura relativo all ambiente di sviluppo si pu notare come l area di lavoro sia fondamentalmente suddivisa in quattro zone principali che abbiamo numerato per poterle meglio analizzare 26 La zona 1 rappresenta la quella di esplorazione di norma presenta un diagramma ad albero del Workspace relativo al progetto sul quale si sta lavorando ed individua la zona nella quale possibile modificare i connotati del progetto stesso a livello di file Tale zona pu essere arricchita di ulteriori visualizzazioni qualora l ambiente sia integrato con programmi di versionamento o altro La zona 2 molto variabile in quanto ci che risiede in questo modulo direttamente connesso e dipendente dalle informazioni a cui siamo interessati quali log di compilazione informazioni di debug risultati delle ricerche etc tra tutte queste possibili caselle di comunicazione all interno di tale modulo ha un importanza rilevante il Terminal I O il quale permette di visualizzare eventuali informazioni in uscita i e una printf o di inserire dati in ingresso La parte preponderante della schermata la zona 3 che adibita a con
128. viene inserito nel pool lo scheduler lo mette in fondo alla coda e gli assegna il processore solamente dopo averlo assegnato una volta a tutti gli altri processi In questo caso i tasks possono essere sospesi durante la loro esecuzione e quindi lo scheduler da considerarsi con prelazione Tuttavia lo scheduling viene eseguito ad intervalli regolari che non dipendono da quando viene inserito un nuovo processo nel pool Le prestazioni di questo algoritmo sono dunque influenzate dal tempo medio di attesa sebbene consenta a tutti i processi di ottenere il controllo del processore ed eviti quindi il problema dell attesa indefinita vista in precedenza Starvation In questo algoritmo di scheduling il CST assume un importanza estremamente rilevante in quanto la sua potenza deriva proprio dal continuo cambio di contesto nei processi 2 2 5 4 FCFS scheduling L algoritmo di schedulazione FCFS First Come First Served e basato sulla logica FIFO First In First Out esso infatti esegue 1 processi nello stesso ordine in cui essi vengono forniti al sistema Il primo processo ad essere eseguito e esattamente quello che per primo 17 richiede l uso del processore Quelli successivi vengono serviti non appena questo ha terminato la propria esecuzione e cosi avviene di seguito per tutti gli altri posti in coda Questo tipo di algoritmo molto semplice da implementare ma solitamente anche poco efficiente almeno considerando il tempo medio d a
129. vo In questo caso c da notare che un CST estremamente ottimizzato non effettivamente necessario in quanto la commutazione di contesto molto meno frequente rispetto al caso precedente 2 2 5 3 Round Robin scheduling RR L espressione Round Robin viene usata in molti contesti per riferirsi ad un sistema in cui diversi partecipanti ad una attivit si alternano in modo circolare Infatti questo nome deriva dall espressione francese in uso nel diciassettesimo secolo ruban rond che significa fiocco rosso essa veniva usata per riferirsi ad un modo di disporre in circolo le firme di una petizione inviata alle autorit in modo che non fosse possibile identificare un capolista di quest ultima o un ordine gerarchico tra 1 firmanti 16 Nello scheduling RR si fissa un intervallo di tempo detto time slice quantum of tick e si assegna il processore ad ogni task nel pool a rotazione per una quantita di tempo pari alla slice i time slice priority gt Low o 8 8 tel tl 2 e time KEY F preemption task completion Fig 2 3 Diagramma temporale di un Round Robin scheduler Questo tipo di scheduling consente di simulare l esecuzione contemporanea di pi processi infatti se la slice di tempo molto piccola si pu avere l impressione che il processore esegua contemporaneamente pi tasks anche se ad ogni istante di tempo il processore pu eseguire al pi un processo Quando un task
130. zionale del cambio di contesto sia maggiore in quanto bene ricordare che la porzione di codice considerata per il calcolo del CST al RTOS precedente risultava essere una chiamata a funzione la quale conteneva poi a sua volta ulteriori istruzioni e chiamate al contrario del caso attuale in cui il codice realmente eseguito espresso inline direttamente all interno della funzione principale Scorrendo il listato soprastante si possono notare numerose interruzioni individuate dalla presenza del simbolo 1 1 questo sta a significare l elisione di una porzione di codice che sarebbe comunque stata e lunga e di scarsi contenuti sperimentali Da qui segue che il codice citato lo stretto sufficiente alla discussione della nostra applicazione di test 63 Analogamente al RTOS precedente si pu notare la presenza delle due coppie di istruzioni GPIO_SC_FIO GPIO SC poste agli estremi delle linee di codice che operano l effettivo cambio di contesto e gestiscono l attivit multitasking anche in questo caso la funzionalit di queste coppie la medesima del RTOS precedente ovvero la generazione di picchi atti ad essere rilevati all oscilloscopio ufficializzando cos il passaggio del programma attraverso quelle righe e di conseguenza il tempo che intercorre tra le due Un ulteriore piccola nota va spesa a favore della coerenza mantenuta nell inserimento delle istruzioni di valutazione nei due sistemi operativi analizzati pi speci

Download Pdf Manuals

image

Related Search

Related Contents

GEOSDEC – Guide utilisateur Page 1  Fisher-Price 74270 Motorized Toy Car User Manual  Samsung GT-S5830 Benutzerhandbuch  Scarica Italiano  Gebrauchsanweisung  Samsung MM-X7 User Manual  Lightolier CD7-4 User's Manual  Anais V Jornada de Enfermagem  Dalian Good Display Co.,Ltd LCD Module User Manual YM 0078    

Copyright © All rights reserved.
Failed to retrieve file