Configurazione di Raspberry come registratore di dati


13

Come dice il titolo, sto lavorando a una semplice applicazione incorporata che legge alcune informazioni dalla porta seriale e le registra in un file, oltre a visualizzare un po 'di stato sul display.

Ora sono sul palco che la registrazione sembra essere in esecuzione e sto cercando di configurare il sistema e ho un paio di domande.

  1. Il sistema è destinato a registrare i dati su una chiavetta USB FAT32, che può essere scollegata, ricollegata o sostituita in qualsiasi momento. Qual è il metodo preferito per montare automaticamente qualsiasi archivio di massa USB inserito in una directory fissa? Il pacchetto usbmount sembra quasi fare questo, ma la mancanza di manutenzione rende un po 'diffidente.

  2. Non posso garantire l'alimentazione elettrica ed eseguire arresti puliti. Per fortuna gli unici file da scrivere, oltre alle informazioni interne sul sistema operativo, dovrebbero essere i registri. Un file system journaling per il sistema operativo mi salverà da me stesso o dovrei montare il sistema in sola lettura o armeggiare con i dischi RAM?

  3. Il file system FAT sulla chiavetta USB sopravviverà e si riprenderà da interruzioni di corrente e espulsioni improvvise? Devo creare un nuovo file di registro ogni volta che viene montato?

  4. Ho impostato il server X per l'avvio automatico e ho manipolato gli script di avvio automatico LXDE per avviare la visualizzazione dello stato e disabilitare il gestore delle finestre / screen saver. Ci sono altri trucchi per mantenere una visualizzazione continua?

  5. Il logger non avrà accesso a Ethernet e piuttosto avrà bisogno di un orologio preciso. Il modulo RasClock è un'opzione adatta?

Ci scusiamo per il lungo post e le molteplici domande semi-correlate.

Sono abituato a gestire semplici dispositivi embedded per i quali ho il pieno controllo del software e il compito di configurare correttamente un sistema operativo reale mi rende un po 'ansioso. D'altro canto, sospetto piuttosto che non sia l'unico (ab-) ad usare il Pi per questo tipo di applicazione, quindi spero che le domande non siano troppo specifiche per la mia situazione particolare.


Stai descrivendo la tua soluzione USB-> seriale funzionante da qualche parte in modo che altri aspiranti registratori di dati possano provarla? Sono desideroso di ottenere un valore aggiuntivo dal mio raschietto / logger / webcam Pi. Grazie!
Tai Viinikka,

Risposte:


7

Il sistema è destinato a registrare i dati su una chiavetta USB FAT32, che può essere scollegata, ricollegata o sostituita in qualsiasi momento.

La parte non collegata è problematica. AFAIK, nessun sistema informatico ti promette il diritto di strappare una chiavetta USB senza preavviso in qualsiasi momento senza potenziali problemi. Quindi dovrai pensare a come aggirare questo.

Non posso garantire l'alimentazione elettrica ed eseguire arresti puliti.

Ancora una volta, interrompere improvvisamente (quasi) qualsiasi sistema informatico è rischioso. Di solito finisce bene (chi non lo ha fatto un sacco di volte, per caso, a causa di mancanza di corrente, ecc.), Ma sembra che ci sia un numero insolito di persone che segnalano corruzione della scheda SD con il pi. Quindi, se intendi "Per lo più il sistema non verrà spento in modo pulito" devi ripensare, perché sarà una strategia senza uscita. Si noti che è possibile attivare un arresto senza una tastiera o una connessione di rete. È possibile utilizzare un metodo simile per attivare anche uno smontaggio pulito della chiavetta USB.

È possibile aggiungere l' syncopzione /etc/fstabper limitare la memorizzazione nella cache, ma man mountnote:

Nel caso di supporti con un numero limitato di cicli di scrittura (ad es. Alcune unità flash), la "sincronizzazione" può causare la riduzione del ciclo di vita.

Ciò include le schede SD, anche se ricordati di testare in modo intermittente (e sostituire, se del caso) i tuoi file multimediali, potrebbe valere la pena. Ciò inciderà leggermente sulle prestazioni generali, credo.

Quindi, cerca di evitare di strappare la spina o la chiavetta USB all'improvviso nel miglior modo possibile e certamente non progettare un'installazione che dipende da questo. Ad esempio, non dire a te stesso o agli altri utenti, "Va bene scollegare la chiavetta USB quando vuoi", perché non lo è e non puoi farlo.

Effettuare syncchiamate appropriate nella propria applicazione (ad es. Quando è inattivo o dopo una scrittura significativa) è una buona idea.

Una volta che hai tutto quello che vuoi installato e configurato , è potenzialmente in grado montare il filesystem di root di sola lettura, se si crea partizioni separate per /var, /rune /tmpe montare quelli rw; potresti anche creare una di queste partizioni montate e collegare simbolicamente le directory rw in essa.

Su un raspbian pi, non devi preoccuparti /run, dato che è già tmpfs (RAM); /syse /procsono anche nella RAM (ma non li usano per nulla tranne quello a cui sono destinati). Se il sistema è per un solo scopo e tutti i tuoi dati vanno sulla chiavetta USB, /varè l'unico problematico ma non, credo, in modo critico.


Il nostro problema principale è che l'alimentazione potrebbe interrompersi in qualsiasi momento durante un arresto di emergenza, qualcosa che sospetto si verifichi frequentemente durante il test (quindi la necessità di un logger per iniziare). Controllerò che potremmo attaccare una batteria di backup per il Pi e forse collegare una sorta di sensore per rilevare la perdita di energia. Tuttavia la mia vita sarebbe molto più semplice se il file system di root potesse essere montato in modalità di sola lettura e la memoria USB protetta da vampate periodiche e simili.
doynax,

@doynax: è possibile eseguire il RO RO filesystem di root. Non ne ho alcuna esperienza, ma alla fine ho aggiunto un paio di paragrafi su ciò che credo siano le preoccupazioni di base.
riccioli d'oro

2

In una vita precedente ho lavorato su driver di dispositivo che leggessero / scrivessero schede di memoria. Potrebbero essere strappati nel mezzo di qualsiasi operazione, quindi anche la batteria o il backup del condensatore non avrebbero aiutato. Sulla base delle specifiche di formattazione dei chip, ho dedotto il comportamento richiesto per avere il minimo danno fatto dalla rimozione e dall'inserimento "a caldo".

Fondamentalmente, ciò che devi fare è assicurarti che se sei interrotto a metà scrittura di un blocco di dati (o i contatti sono squirrely) puoi riconoscere il fatto. fondamentalmente antepone i dati con un numero di blocco (e lunghezza se non di dimensioni fisse) e aggiungi un crc e (lo stesso) numero di blocco alla fine.

La prima scrittura che fai è alla fine, con un valore che NON è il numero di blocco successivo. In questo modo, se la scrittura non viene completata, si verificherà una mancata corrispondenza del numero di blocco e tale blocco di dati è noto come immondizia. Quindi scrivi il tuo blocco di dati con il numero di blocco reale, seguito dalla lunghezza, seguito dal tuo CRC generato dal tuo algoritmo preferito e dal numero di blocco reale di nuovo. (Il CRC deve proteggere dai contatti aggressivi che corrompono i tuoi dati).

Quando viene ripristinata l'alimentazione o reinserita la scheda di memoria, accettare i blocchi sequenziali solo nel punto in cui i numeri di inizio e fine del blocco non corrispondono o il CRC non è corretto. Rimuovere quel blocco e riprendere la registrazione.

Questa è roba di basso livello però. Farlo attraverso un file system è un'altra storia.

Ciò di cui hai veramente bisogno sono copie ridondanti del tuo FAT e fare qualcosa di simile attorno al tavolo FAT. Il numero sequenziale ti dirà quale è il più recente e la corrispondenza fronte / retro e CRC garantiranno l'integrità.

È passata la mia ora di andare a letto quindi spero che sia abbastanza chiaro.


1

Per quanto riguarda l'orologio preciso, ci sono molti moduli GPS economici disponibili. Difficile trovare un orologio più preciso di così.


Questo è un suggerimento eccellente. Salvaci il problema di impostare l'orologio e gestire la batteria. Dovremo solo tenere traccia del fuso orario (e delle regole dell'ora legale suppongo), e per un puro data logger il tempo universale dovrebbe andare bene.
doynax,

Un modulo GPS funziona in interni quando nessuna parte del cielo è visibile e offre comunque un vantaggio rispetto a un semplice RTC?
Stéphane Gourichon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.