Progetti embedded e kernel real time

Ho avuto indicazione di preparare una nuova apparecchiatura embedded per effettuare una funzione tutto sommato semplice (simulare l'oscillazione di una campana mediante dei battiti ripetuti).

Con l'occasione ho voluto sperimentare la differenza di implementazione di un sistema del genere (tutto sommato semplice) fra una totalmente "from scratch" ed una che sfrutta un kernel real time.

Avrei voluto sperimentare anche il cosiddetto Micro Framework, ma, checchè se ne dica, non è così "micro" come si vuole far credere.

Un paio di indicazioni: il micro "target" è un Cortex M0 di NXP, attualmente un LPC1114, 32KB Rom ed 8 KB Ram, il compilatore usato è il GCC 4.5.1, librerie REDLIB ottimizzate per Cortex, e l'ambiente di sviluppo la RedSuite 4.0 di CodeRed.

Il kernel real time utilizzato è il FreeRTOS, gratuito, oramai giunto alla versione 7 e con il porting su 34 architetture diverse.

Il micro è un oggettino di fascia bassa, per costi (ma non per prestazioni) sostituto di un pic di fascia media, quotato intorno a 1,5€ per i canonici 1000 pezzi, il sistema di sviluppo, con tanto di debugger in circuit costa intorno ai 20 euro più iva e spedizione (da embedded artists, digikey o altri) mentre IDE e compilatore sono gratuiti fino a 128K in una versione custom chiamata LPCXpresso.

Ovviamente, se uno sviluppa per lavoro, sono disponibili diversi "upgrade" fino ad arrivare alla RedSuite4.0 senza limiti di download ad un prezzo di 700 euro (l'ho comperata due settimane fa)che, comparati a suite tipo IAR o KEIL sono decisamente più abbordabili.

Quello che mi ha veramente stupito in positivo è l'overhead dell'introduzione del kernel nel progetto. Soprattutto se viene paragonata all'overhead del micro framework.

In termini di FLASH il freertos occupa 6,2K contro i 256 dell'implementazione minima del net micro framework.

E la cosa diventa ancora più significativa se si tiene conto che ho usato l'opzione di compilazione O0 (nessuna ottimizzazione) ed ho lasciato le librerie di debug, e... il test è stato effettuato con 4 task in esecuzione contemporanea (saranno cavolate ma sono sempre 4 task)

L'esperimento promette bene.

Alla prossima

 

 

posted @ martedì 14 giugno 2011 12:13

Print