Fabbricazione PCB di precisione, PCB ad alta frequenza, PCB ad alta velocità, PCB standard, PCB multistrato e assemblaggio PCB.
La fabbrica di servizi personalizzati PCB e PCBA più affidabile.
PCB Tecnico

PCB Tecnico - Suggerimenti multipli per schede madri PCB incorporate

PCB Tecnico

PCB Tecnico - Suggerimenti multipli per schede madri PCB incorporate

Suggerimenti multipli per schede madri PCB incorporate

2021-11-06
View:533
Author:Will

Diventare un ingegnere formale di progettazione e sviluppo della scheda madre PCB incorporato è un processo difficile, che richiede agli sviluppatori di mantenere e gestire ogni bit e byte del sistema. Da un ciclo di sviluppo ben regolato a una rigorosa implementazione e ispezioni di sistema, ci sono molte tecnologie per lo sviluppo di sistemi embedded ad alta affidabilità. Oggi, introdurrò 7 tecniche PCB che sono facili da usare e possono essere utilizzate per molto tempo. Sono molto utili per garantire che il sistema funzioni in modo più affidabile e catturare comportamenti anormali.

Gli sviluppatori di software sono spesso un gruppo di persone molto ottimisti, purché il loro codice funzioni fedelmente per molto tempo, niente di più. Sembra piuttosto raro che un microcontrollore salti fuori dallo spazio applicativo ed esegua in uno spazio di codice inaspettato. Tuttavia, la possibilità che ciò accada non è meno di un overflow buffer o un puntatore sbagliato che perde riferimento. Succederà! Il comportamento del sistema dopo che ciò accade è incerto, perché lo spazio di memoria è 0xFF per impostazione predefinita, o perché l'area di memoria di solito non è scritta, il valore può essere conosciuto solo da Dio.

Ma ci sono competenze di linker o IDE abbastanza complete che possono essere utilizzate per aiutare a identificare tali eventi e recuperare il sistema da loro. Il trucco è usare il comando FILL per riempire la ROM inutilizzata con un modello di bit noto. Per riempire la memoria inutilizzata, ci sono molte combinazioni possibili che possono essere utilizzate, ma se si desidera costruire un sistema più affidabile, la scelta più ovvia è quella di posizionare i gestori di guasti ISR in queste posizioni. Se qualcosa va storto nel sistema e il processore inizia ad eseguire codice al di fuori dello spazio del programma, esso attiverà l'ISR e fornirà l'opportunità di memorizzare il processore, i registri e lo stato del sistema prima di decidere sulle azioni correttive.

scheda pcb

Un grande vantaggio per gli ingegneri embedded è che il nostro IDE e la catena di strumenti possono generare automaticamente il checksum dello spazio di memoria o dell'applicazione (Checksum), verificando così se l'applicazione è intatta sulla base di questo checksum. È interessante notare che in molti di questi casi, il checksum viene utilizzato solo quando il codice del programma viene caricato nel dispositivo.

Tuttavia, se il CRC o il checksum viene mantenuto in memoria, verificare che l'applicazione sia ancora intatta all'avvio (o anche periodicamente per un sistema di lunga durata) è un ottimo modo per garantire che non accadano cose inaspettate. Al giorno d'oggi, la probabilità che un'applicazione programmata cambi è molto piccola, ma considerando i miliardi di microcontrollori consegnati ogni anno e l'ambiente di lavoro potenzialmente difficile, la possibilità che un'applicazione di strumenti medici si crash non è zero. Più probabilmente, un difetto nel sistema può causare la scrittura flash o la cancellazione flash in un determinato settore, distruggendo così l'integrità dell'applicazione.

Esegui controllo RAM all'avvio

Per costruire un sistema più affidabile e solido, è molto importante assicurarsi che l'hardware del sistema funzioni normalmente. Dopo tutto, l'hardware fallirà. (Fortunatamente, il software non fallisce mai, il software farà solo quello che il codice vuole che faccia, sia che sia giusto o sbagliato). Verificare che non ci siano problemi con la RAM interna o esterna all'avvio è un buon modo per garantire che l'hardware possa funzionare come previsto.

Esistono molti metodi diversi per eseguire controlli RAM, ma il metodo comune è quello di scrivere un modello noto e quindi attendere un breve periodo di tempo prima di leggerlo nuovamente. Il risultato dovrebbe essere che quello che leggi è quello che scrivi. La verità è che nella maggior parte dei casi il controllo RAM viene superato, che è il risultato che vogliamo. Tuttavia, c'è una piccolissima possibilità che il controllo non passi, il che offre un'eccellente opportunità per il sistema di indicare un problema hardware.

Usa il monitor stack

Per molti sviluppatori embedded, lo stack sembra essere una forza piuttosto misteriosa. Quando cominciarono ad accadere cose strane, gli ingegneri erano finalmente inciampati, e cominciarono a pensare a quello che poteva accadere in pila. Il risultato è regolare ciecamente la dimensione e la posizione dello stack e così via. Ma l'errore spesso non è correlato allo stack, ma come può essere così sicuro? Dopo tutto, quanti ingegneri hanno effettivamente eseguito un'analisi delle dimensioni dello stack nel peggiore dei casi?

La dimensione dello stack viene allocata staticamente al momento della compilazione, ma lo stack viene utilizzato in modo dinamico. Quando il codice viene eseguito, le variabili, gli indirizzi di ritorno e le altre informazioni necessarie all'applicazione vengono memorizzati continuamente nello stack. Questo meccanismo fa sì che lo stack cresca continuamente nella sua memoria allocata. Tuttavia, questa crescita talvolta supera il limite di capacità determinato al momento della compilazione, causando la distruzione dei dati nelle aree di memoria adiacenti.

Un modo per assicurarsi assolutamente che lo stack funzioni correttamente è quello di implementare uno stack monitor come parte del codice "salute" del sistema (quanti ingegneri lo fanno?). Il monitor dello stack crea un'area buffer tra lo stack e l'area di memoria "altra" e la riempie con un modello di bit noto. Quindi il monitor monitorerà continuamente se ci sono cambiamenti nel modello. Se il modello di bit cambia, significa che lo stack è cresciuto troppo, e il sistema sta per essere spinto all'inferno oscuro! In questo momento, il monitor può registrare il verificarsi di eventi, lo stato del sistema e qualsiasi altro dato utile per la diagnosi futura dei problemi.

I monitor stack sono forniti nella maggior parte dei sistemi operativi in tempo reale (RTOS) o microcontroller che implementano un'unità di protezione della memoria (MPU). La cosa spaventosa è che queste funzioni sono disattivate per impostazione predefinita, o sono spesso disattivate deliberatamente dagli sviluppatori. Una rapida ricerca su Internet rivela che molte persone suggeriscono di spegnere il monitor stack nel sistema operativo in tempo reale per risparmiare 56 byte di spazio di memoria flash, ecc. Questo non vale la pena guadagnare!

Usa MPU

In passato, era difficile trovare un'unità di protezione della memoria (MPU) in un microcontrollore piccolo ed economico, ma questa situazione ha cominciato a cambiare. Ora i microcontrollori da high-end a low-end hanno già MPU, e questi MPU offrono agli sviluppatori di software PCB incorporati l'opportunità di migliorare notevolmente la robustezza del loro firmware.

MPU è stato gradualmente accoppiato al sistema operativo al fine di stabilire uno spazio di memoria, dove l'elaborazione è separata, o il compito può eseguire il suo codice senza preoccuparsi di essere calpestato. Se succede qualcosa, l'elaborazione incontrollata verrà annullata e verranno implementate altre misure protettive. Si prega di prestare attenzione al microcontrollore con questo tipo di componente, se c'è, si prega di fare maggior uso della sua caratteristica.

Costruire un potente sistema di sorveglianza

Una delle implementazioni di watchdog sempre preferite che troverete spesso è dove il watchdog è abilitato (questo è un buon inizio), ma è anche possibile utilizzare un timer periodico per Dove il watchdog è eliminato; L'attivazione del timer è completamente isolata da qualsiasi situazione che si verifica nel programma. Lo scopo dell'utilizzo del watchdog è quello di aiutare a garantire che in caso di errore, il watchdog non venga cancellato, cioè, quando il lavoro viene sospeso, il sistema sarà costretto ad eseguire un ripristino hardware per il recupero. L'utilizzo di un timer indipendente dall'attività del sistema consente al cane da guardia di rimanere pulito anche se il sistema ha fallito.

Come integrare le attività applicative nel sistema watchdog, gli sviluppatori di schede madri PCB incorporati devono considerare e progettare attentamente. Ad esempio, esiste una tecnica che consente a ogni attività eseguita entro un determinato periodo di tempo di indicare che può completare con successo l'attività. In questo caso, il cane da guardia non viene ripulito ed è costretto ad essere resettato. Ci sono anche alcune tecnologie più avanzate, come l'uso di un processore watchdog esterno, che può essere utilizzato per monitorare il comportamento del processore PCB principale e viceversa. Per un sistema affidabile, è molto importante stabilire un sistema di sorveglianza forte.

Evitare l'allocazione di memoria volatile

Gli ingegneri che non sono abituati a lavorare in un ambiente con risorse limitate possono provare a utilizzare le caratteristiche del loro linguaggio di programmazione, che consente loro di utilizzare l'allocazione di memoria PCB volatile. Dopo tutto, questa è una tecnologia PCB spesso utilizzata nei sistemi di calcolo. Nei sistemi di calcolo, la memoria viene allocata solo quando necessario. Ad esempio, quando si sviluppano in C, gli ingegneri tendono a usare malloc per allocare spazio sul mucchio. C'è un'operazione che verrà eseguita. Una volta completato, è possibile utilizzare free per restituire la memoria allocata per l'uso dell'heap.