La principale differenza tra i programmatori hardware e quelli software sta nella focalizzazione.
Entrambi hanno bisogno di costruire programmi molto veloci, al fine di rendere l'uso più facile e reattivo. Tuttavia, lo fanno in modi completamente diversi. Vediamo alcuni dei punti principali che rendono questi due tipi di programmazione diversi:
1. Knowledge Base
Uno sviluppatore di software embedded dovrebbe conoscere l'hardware su cui sta lavorando. Più spesso che no, l'ingegnere di software incorporato dovrebbe scrivere del codice per controllare o usare l'hardware nel miglior modo possibile. Dovrebbe interagire con l'hardware più da vicino anche se non potrebbe parlare direttamente con gli 1 e gli 0.
Uno sviluppatore di software lavora su applicazioni che sono totalmente schermate dall'hardware su cui vengono eseguite e lo sviluppatore di software non deve sapere molto o in effetti nulla dell'hardware su cui il suo programma verrebbe eseguito.
2. Complessità del codice
Nel software embedded la complessità non è nelle linee di codice, il più delle volte. Configurare un gestore di interrupt per rispondere alla pressione di un pulsante e bilanciare la priorità tra la pressione di un pulsante e l'ingresso di un sensore di temperatura potrebbe aver richiesto un giorno intero di lavoro. Alla fine della giornata, lo sviluppatore di software embedded avrebbe scritto 50 righe di codice.
Uno sviluppatore di software generalmente scrive più righe di codice. La ragione è che uno sviluppatore di software costruisce un prodotto solo con le sue linee di codice, dal nulla.
3. Algoritmo & Elaborazione dati vs. Controllo del sistema
Un programma software generalmente ruota intorno a 2 aspetti: algoritmi e strutture dati. Prendete qualsiasi programma, esso calcolerà qualcosa: potrebbe memorizzare dati, spostare dati, elaborare dati o semplicemente presentare o cancellare dati. Qualsiasi software, da quello bancario, assicurativo, di vendita al dettaglio, di logistica a un semplice software basato su PC come Word, PowerPoint, ecc. lavora sui principi sopra menzionati.
Un software incorporato è più focalizzato verso il controllo e la gestione del sistema. È sviluppato per sfruttare il pieno potenziale dell'hardware e gestirlo a beneficio dell'utente. Anche se ci sarebbero dati e algoritmi nel software embedded, sarebbero lì solo per controllare e gestire l'hardware in modo migliore.
4. PC vs. PCB
Anche se gli sviluppatori embedded lavorano su PC non stanno scrivendo software per PC. Usano il PC per costruire il loro software che alla fine gira su un'altra piattaforma (un circuito stampato con un micro controller). Gli ingegneri di software embedded sviluppano software per queste macchine e spostano il binario eseguibile dal PC alla macchina usando strumenti di debug o opzioni di connettività specifiche.
Gli sviluppatori di software sviluppano software che gira su PC o equivalenti PC (ad esempio server, smartwear ecc.). Se il software viene eseguito in una banca, in un cantiere navale, in un aeroporto o in un negozio di alimentari, viene eseguito su un computer. Forse oggi girano anche su telefoni cellulari e tablet. Da una prospettiva embedded oggi i tablet e i cellulari non differiscono molto dai PC in quanto sono tutti più "general purpose".
5. Oscilloscopi vs. Breakpoints
Il debugging del software embedded è diverso dal debugging del software applicativo proprio come lo sviluppo. Potete vedere gli sviluppatori embedded usare oscilloscopi, analizzatori logici e multimetri durante il debugging di una sospensione piuttosto che usare punti di interruzione.
Gli sviluppatori di software usano più spesso i punti di interruzione del debugging e le opzioni di debug che il loro IDE fornisce per eseguire il debug del codice, profilare il codice, ecc.