Diversi articoli sui microcontrollori e sui relativi progetti hanno dato una visione alquanto globale dell'argomento, senza scendere molto nei dettagli sia hardware sia software. E' indubbio che, per quanto concerne la parte elettronica, non è possibile illustrarne più di tanto i dettagli, gli eventuali appassionati e/o curiosi possono comunque agevolmente approfondire gli argomenti utilizzando i link segnalati nei vari articoli.
Può essere tuttavia interessante esaminare il
lato software dello sviluppo di un
sistema embedded basato su microcontrollori o
MCU (Micro Controller Unit).
I
tool per la programmazione delle
MCU non differiscono molto, in linea di principio, da quelli utilizzati per lo sviluppo di applicazioni desktop. Le fasi principali sono sempre le stesse: scrittura del codice sorgente, compilazione e/o assemblaggio, generazione del codice binario.
La complicazione è data innanzitutto dal fatto che ogni microcontrollore — per essere più precisi, ogni
famiglia di microcontrollori — ha il suo
proprio linguaggio Assembly, come è noto a chi si occupa di programmazione in linguaggio Assembly: il linguaggio di un micro Intel 586/Pentium è diverso da quello di un Motorola 68x, che a sua volta è diverso da quello di un PowerPC.
Tutto ciò, unitamente al fatto che all'interno di ogni famiglia possono esistere differenze più o meno lievi nel set di istruzioni (istruzioni aggiunte a versioni più recenti, oppure istruzioni di modelli precedenti non più supportate) rischiano di causare veri e propri mal di testa allo sviluppatore, il quale, nel caso particolare delle applicazioni
embedded, non può concentrarsi solo sullo sviluppo di un software più o meno astratto, ma deve lavorare a stretto contatto con la parte hardware, sia collaborando con altri colleghi di un team, sia eseguendo da sé il processo completo di sviluppo, hardware e software contemporaneamente.
Come si sono evoluti negli anni i tool di programmazione per le applicazioni desktop/mainframe, altrettanto si sono evoluti i loro parenti stretti per la programmazione dei microcontrollori.
Esistono pertanto
ambienti IDE anche per lo sviluppo di sistemi
embedded, tra i quali uno dei più conosciuti e apprezzati dagli addetti ai lavori è
CodeWarrior di
Freescale. Quest'ultima è in realtà la società Motorola che opera nel settore dei semiconduttori: nel 2003 il ramo venne separato fondando una compagnia apposita,
Freescale appunto.
CodeWarrior era stato inizialmente creato e sviluppato da
Metrowerks a partire dal 1994. Nel 1999 quest'ultima venne acquistata da
Motorola Semiconductor e il suo prodotto
CodeWarrior, venne sviluppato e modificato per il target dei
sistemi embedded, dato che Motorola produceva una già allora ampia famiglia di microcontrollori basati sui suoi processori 6800 e 68000.