Devo molto del mio successo nella progettazione alla mia università. Non tanto per avermi insegnato le potenziali cause di guasto dei condensatori, ma soprattutto per avermi insegnato cos'è la legge di Murphy, e come essa può colpire quando meno te lo aspetti. Come tanti, dividevo il mio tempo tra Warcraft e esami estenuanti, facendo cieco affidamento sul buon funzionamento del mio computer.
A quei tempi, i computer erano piuttosto rudimentali e non era raro trovarsi di fronte alla "schermata blu della morte" di tanto in tanto. È già abbastanza frustrante essere interrotti durante una partita di Warcraft, ma perdere ore di lavoro a causa di un arresto anomalo del sistema è un'esperienza da incubo. Come progettista, potresti aver vissuto un'esperienza simile quando il tuo microcontrollore ha causato un guasto durante il funzionamento.
In un sistema embedded, i guasti ai microcontrollori (MCU) potrebbero avere ripercussioni ben più serie del mancato rispetto della data di consegna del tuo progetto. I microcontrollori sono spesso il centro nevralgico di apparecchi elettronici come macchine di pagamento, dispositivi medici e sistemi di sicurezza. Questi sistemi richiedono un'elevata stabilità e spesso hanno basse tolleranze per i guasti di sistema.
Un'unità MCU danneggiata può portare a un arresto completo delle operazioni. Ciò può causare inconvenienti agli utenti, o comportare rischi per la sicurezza in applicazioni critiche. Predisporre un meccanismo di sicurezza è estremamente importante. Per i clienti, sistemi inaffidabili influiscono sulla capacità operativa e possono potenzialmente causare perdite economiche. Per noi progettisti, avere a che fare con centinaia di prodotti difettosi è un duro colpo sia per il nostro orgoglio che per la nostra reputazione.
Un sistema embedded affidabile richiede uno sforzo congiunto del progettista di hardware e del programmatore di firmware. Alcuni difetti di progettazione possono passare inosservati durante la fase di sviluppo e manifestarsi solo in fase di funzionamento. Quando questo succede, su chi ricade la maggior parte delle responsabilità?
Prima di iniziare a puntare il dito, diamo un'occhiata alle cause di malfunzionamento più comuni.
Lo Stack di un microcontrollore è un'area della sua RAM interna utilizzata per un uso temporaneo. La dimensione di una Memory Stack è limitata e varia a seconda dei diversi MCU. Quando il programmatore del firmware alloca una variabile maggiore rispetto alla dimensione dello stack, può verificarsi un sovraccarico durante il tempo di esecuzione causando il malfunzionamento del firmware.
Nella programmazione del firmware dell'MCU, un puntatore è comunemente usato per indicare l'indirizzo di una variabile o delle funzioni del programma. La dichiarazione e l'utilizzo dei puntatori richiedono che il programmatore del firmware rispetti la rigorosa sintassi definita dal linguaggio di programmazione, spesso in C. L'introduzione di un puntatore illegale può far sì che il microcontrollore tenti di elaborare variabili o funzioni in indirizzi che sono al di fuori del suo campo di validità. Questo potrebbe causare il crash del microcontrollore.
Un fattore spesso trascurato è che l’unità MCU ha bisogno di una rete elettrica stabile per funzionare in modo affidabile. Il microcontrollore potrebbe danneggiarsi quando la sua fonte di alimentazione è costantemente interrotta da interferenze esterne. Un calo della tensione di esercizio può causare un comportamento anomalo dell’unità MCU o addirittura il suo crash.
La mancata gestione delle interferenze elettriche, in particolare quelle indotte da relè e motori, potrebbe causare il crash del microcontrollore. Durante un vecchio progetto di pilotaggio di un motore a corrente continua, il mio MCU si guastava ogni volta che cercava di pilotare il motore all'indietro. Ho risolto questo problema semplicemente aumentando il suo isolamento elettrico con un amplificatore operazionale.
A volte, il guasto di un microcontrollore non ha nulla a che fare con i tecnici hardware e firmware. I giunti di saldatura di bassa qualità sui pin dell'MCU possono causare un comportamento imprevedibile del microcontrollore. Se riscontri il problema solo su alcuni dei tuoi sistemi embedded, potresti voler indagare sulla qualità del tuo produttore.
Invece di addossarsi le colpe, gli ingegneri hardware e firmware dovrebbero fare la loro parte nella progettazione di un sistema embedded affidabile. Coltivare una buona etica di programmazione e la pianificazione preventiva dell'allocazione di memoria sono fondamentali per la buona riuscita del progetto. Per i programmatori, anche semplificare il progetto riducendo al minino i bug può essere una scelta vincente.
I progettisti hardware devono considerare l'ambiente in cui il sistema verrà utilizzato e prepararsi a tutte le eventualità. Questo significa aderire a tutte le migliori pratiche di progettazione e utilizzare appieno gli strumenti del tuo software PCB per testare il progetto. Quando hai bisogno di uno strumento di layout PCB intuitivo e dotato di tutto il necessario per costruire circuiti stampati di alta qualità, quello che ti serve è CircuitMaker. Non solo avrai a disposizione un software di progettazione PCB di facile utilizzo; gli utenti di CircuitMaker hanno anche accesso a uno spazio di lavoro personale sulla piattaforma Altium 365. Qui potrai caricare e archiviare i tuoi dati di progettazione nel cloud e visualizzare facilmente i tuoi progetti tramite il tuo browser, all'interno di una piattaforma sicura.
Inizia a utilizzare CircuitMaker già oggi e preparati per il nuovo CircuitMaker Pro di Altium.