Licursi David INTRODUZIONE
V
L’acquirente medio di questo tipo di prodotto si aspetta di poterlo inserire nel proprio sistema e di realizzare la
propria applicazione con notevole risparmio di tempo rispetto allo sviluppo integrale di hardware e software e,
elemento non meno importante, senza necessitare di approfondite conoscenze hardware. Proprio per questo
motivo il prodotto andava accompagnato da software e manualistica quanto più completi possibile.
Ho dapprima analizzato le librerie sviluppate dall’azienda e riportate anch’esse in appendice:
§ DEFS.H Contiene le definizioni dei tipi di dati e le macro di manipolazione dei bit.
§ H83003.H Contiene le definizioni dei registri dell’Hitachi H8/3003.
§ ECS8B.H Contiene le definizioni ed i prototipi di funzioni per il modulo ECS8B.
§ ECS8B.C Contiene Startup e le librerie di funzioni per il modulo ECS8B.
Successivamente ho curato lo sviluppo in linguaggio C di un sistema operativo real time e di due librerie di
funzioni che consentono, grazie all’utilizzo di un display LCD e di una tastiera a matrice, la realizzazione di
applicazioni custom. Normalmente infatti lo sviluppatore si trova a dover gestire almeno una tastiera ed un
display per la realizzazione di qualsiasi sistema in cui l’operatore possa interagire con il controllo. Vale la pena
dunque realizzare delle librerie di funzioni riutilizzabili per qualsiasi target application. Più sofisticata invece la
necessità di un sistema operativo, le cui caratteristiche condizionano pesantemente le prestazioni di un sistema.
Soddisfacendo le esigenze di timing del sistema in cui opera, un sistema operativo real time (RTOS) consente la
realizzazione di un ampio ventaglio di applicazioni sensibili alla tempestività ed alla deterministicità della
risposta così comuni nelle automazioni industriali e nei sistemi automotive ad esempio.
Grazie al software prodotto, lo sviluppatore ha visibilità sul sistema solo limitatamente ad un ristretto numero di
funzioni. L’applicazione custom sarà dunque costituita al minimo da un main() in cui l’algoritmo
dell’applicazione si avvale delle funzioni contenute nelle librerie del modulo tastiera e display per interfacciarsi
con l’hardware:
Tas t iera a
matrice
Sistema Operativo
Display
LCD
Applicazione custom
Modulo
Tastiera a
matrice
(libreria funzioni)
Algoritmo
applicazione
Modulo
Di splay
LCD
(libreria funzioni)
Licursi David INTRODUZIONE
VI
L’implementazione di un applicativo sull’hardware del microcomputer ECS8B si riduce così a poco più di una
mera sequenza di chiamate alle seguenti funzioni:
Interfaccia applicazione
Disply LCD
Kernel Interfaccia applicazione
Tastiera a matrice
DispInit()
DispDefChar()
DispClrScr()
DispClrLine()
DispStr()
DispChar()
DispHorBarInit()
DispHorBar()
OSInit()
OSIntEnter()
OSIntExit()
OSMboxCreate()
OSMboxPend()
OSMboxPost()
OSQCreate()
OSQPend()
OSQPost()
OSSemCreate()
OSSemPend()
OSSemPost()
OSSchedLock()
OSSchedUnlock()
OSStart()
OSTaskChangePrio()
OSTaskCreate()
OSTaskDel()
OSTimeDly()
OSTimeGet()
OSTimeSet()
OSTimeTick()
KeyInit()
KeyGetKey()
KeyHit()
KeyFlush()
KeyGetKeyDownTime()
Per la stesura del codice si è utilizzato il tool di sviluppo CodeMaker 1.0.2 prodotto da SofTec stessa. Tale
software integra, in ambiente Microsoft Windows, un editor di testi ed un compilatore C GNU ed è
specificamente orientato alla compilazione di codice per la famiglia Hitachi H8/300. Il codice qui sviluppato è
stato adattato alla scheda ECS8B equipaggiata con Hitachi H8/3003 ma, grazie all’esiguità del codice redatto in
assembly, può essere portato abbastanza agevolmente su qualsiasi altro hardware embedded e proprio a questo
fine è stato elaborato.
Nulla vieta l’utilizzo del codice C anche sulle logiche ad architettura PC che tanto si sono diffuse durante questi
mesi di sviluppo. E’ vero infatti che, grazie allo sviluppo tecnologico, l’hardware qui supportato non è
assolutamente più da considerarsi allo stato dell’arte in quanto non dotato di quegli standard “de iure” affermatisi
nel caotico mare degli standard “de facto”.
La tesi si articola nelle seguenti sezioni:
Sistemi embedded Introduzione ai sistemi embedded, definizione e campi applicativi. Stato dell’arte delle
architetture embedded e panoramica sugli standard hardware e di sistema affermatisi in
questi anni. Architetture software adottabili per la realizzazione di un’applicazione e
generalità sui sistemi operativi orientati alle logiche embedded. Windows CE e Linux
come scelte per il futuro.
Sistema Operativo Descrizione del Sistema Operativo real time e di tutte le sue funzionalità. Struttura del
kernel ed amministrazione dei tasks, gestione degli interruptus e strutture software per la
comunicazione e sincronizzazione tra i processi. Essendo il kernel portabile su altri
hardware, si affrontano i dettagli di inizializzazione e configurazione.
Licursi David INTRODUZIONE
VII
Moduli software Due potenti librerie per interfacciare un microcomputer embedded con una tastiera a
matrice ed un display LCD. Essendo estremamente portabili, si affrontano, oltre alle
funzioni di interfaccia, generalità sull’hardware, problematiche tipiche, e macro di
configurazione.
Seguono infine in appendice le informazioni tecniche più approfondite sull’hardware ed i listati completi redatti
in linguaggio C o in assembly.
Grazie a questo software, ora un acquirente del microcomputer ECS8B basato su Hitachi H8 può contare su un
sistema operativo multitasking real time completamente preemptive e su due librerie di funzioni che gli
consentono la gestione, in maniera del tutto trasparente dal punto di vista hardware, delle periferiche più comuni
per un sistema interattivo: una tastiera ed un display. Con questi strumenti a disposizione si può realizzare in
poche ore un’applicazione dalle brillanti prestazioni e di facile ottimizzazione, senza contare i benefici apportati
in termini di leggibilità del software, che diventa dunque di assai facile manutenzione.
Licursi David
1
SEZIONE I
SISTEMI EMBEDDED
Licursi David SISTEMI EMBEDDED
2
1 SISTEMI EMBEDDED
Una logica viene detta embedded ogniqualvolta essa non venga vista direttamente dall’utente come un computer,
ma sia inserita in un sistema atto a svolgere una peculiare, e non per questo elementare, funzione. Di dimensioni
contenute e di potenze assai variabili secondo le necessità, i sistemi embedded vengono implementati in una
moltitudine di applicazioni:
I dispositivi embedded, per loro stessa natura, non dispongono di un’interfaccia grafica oppure ne integrano una
con funzionalità alquanto limitate. Tale situazione era accettabile fino a quando tali sistemi erano destinati a
Controlli di processo
Automazione
industriale
Automotive
Office automation
Periferiche per
computers
Robotica
Sistemi
embedded
Domotica
Sistemi ant ibloccaggio
Controllo motori
Airbags
Fax
Fotocopiatrici
Stampanti
Modems
Elettrodomestici
Ant i fur t i
Cronotermostati
Licursi David SISTEMI EMBEDDED
3
svolgere un limitato numero di compiti ma, ora che i sistemi
embedded vengono destinati allo svolgimento di compiti
sempre più complessi, è sempre più evidente la necessità di
rendere disponibile una GUI (Graphical User Interface)
interattiva e funzionale. A differenza di quanto accade nel
mondo PC, dove le interfacce utente forniscono tutte le
stesse funzionalità, nel mondo embedded è necessario
realizzare interfacce ad hoc, ovvero studiate per un
particolare dispositivo e applicazione. Dunque le GUI dei
sistemi embedded sono una diversa dall’altra ed integrano
tutte e sole le funzionalità richieste dalla specifica
applicazione.
Una logica embedded, cioè compatta, può essere realizzata a
partire da un microprocessore e quindi seguire il più delle
volte un’architettura PC, oppure attorno ad un
microcontrollore. Un microcrocontrollore può essere definito
come l’unione di un nucleo simile a quello di un
microprocessore con un certo numero di unità funzionali di
due differenti tipologie: quelle di supporto all’attività interna
e quelle che consentono il collegamento con le periferiche esterne. Tali funzioni aggiuntive non sono
normalmente presenti in un microprocessore. L’idea è quella di rendere il microcontrollore un’unità il più
possibile completa e autonoma, al punto di poter gestire senza bisogno di interfacce molti dispositivi periferici.
Ciò contribuisce ancor più alla compattezza di hardware che normalmente deve fare i conti con spazi angusti,
vibrazioni ed alte temperature di esercizio più che necessitare di prestazioni estreme.
Sebbene il settore dei microprocessori sia
prepotentemente proiettato verso la rincorsa di
architetture ultra veloci e ad elevato grado di
parallelismo, nel settore dei microcontrollori non
succede necessariamente la stessa cosa. Infatti, mentre
ad esempio nei personal computers sono stati da
parecchi anni abbandonati i processori a 16 bit e si operi
oggi con architetture a 32 e a 64 bit, nei controlli
industriali o nell’ambito consumer una consistente fetta
del mercato dei microcontrollori è tuttora dominata
dalle architetture a 8 bit o 32 bit. Pochi sono i controller
a 32 bit, alcuni dei quali in architettura RISC o
integranti funzioni di Digital Signal Processing. Il
motivo di ciò va ricercato sostanzialmente nel fatto che i
sistemi embedded sono delle architetture ottimizzate per
le applicazioni di controllo, per le quali non richiedono
un’elevata velocità di calcolo né tanto meno necessitano
di grande potenza di elaborazione, al contrario dei
microprocessori i quali devono tipicamente gestire
un’elevata quantità di dati e corpose modalità grafiche.
Esistono tuttavia molte applicazioni nelle quali è
Licursi David SISTEMI EMBEDDED
4
U205
RAM 32Kx8
U204
RAM 128Kx8
U203
FLASH 128/512Kx8
J401
Function Pack Connector
Hitachi H8/3003
U501
8 D flip-flps array
J501
LCD
Connector
J502
Keyboard
Connector
U502
8 D flip-flps array
Rows
U503
3-state bus
Transceiver
Columns
J402
Serial 0
J403
Serial 1
U402
RS 232
Dual
Driver
U202
Voltage Supervisor
U304
Power Switching Regulator
U201
Serial EEPROM 64x16
U702
6 Schmitt Trigger array
U601
8 Darlington array
U602
8 Darlington array
J404
RS 485
U403
RS485
transceiver
U703
6 Schmitt Trigger array
U701
6 Schmitt Trigger array
J601
I/O
Connector
U303
3-state bus
Transceiver
A
d
d
r
e
s
s
B
U
S
D
a
t
a
B
U
S
necessaria un’elevata velocità di calcolo, come ad esempio nel controllo dei sistemi integrati in un autoveicolo o
comunque in apparecchiature o sistemi ad elevata complessità.
L’hardware sviluppato da SofTec è si un archetipo degli attuali presenti sul mercato, spesso più simili ad un
piccolo PC che ad una logica integrata, ma è emblematicamente rappresentativo di un sistema embedded. Come
visibile in figura, al microcontrollore Hitachi H8/3003 sono affiancate funzionalità che consentono al prodotto
un ampio ventaglio di applicazioni: