Ahududu bir veri kaydedici olarak ayarlama


13

Başlık durumu olarak, seri bağlantı noktasından bazı bilgileri okuyan ve bunu dosyaya kaydeden basit bir gömülü uygulama üzerinde çalışıyorum, ayrıca ekranda biraz durum gösterme.

Şimdi aşamada oturum açıyor gibi görünüyor ve sistemi yapılandırmaya çalışıyorum ve birkaç sorum var.

  1. Sistem, verileri herhangi bir zamanda çıkarılabilen, çıkarılabilen veya değiştirilebilen bir FAT32 USB çubuğuna kaydetmeyi amaçlamaktadır. Takılan herhangi bir USB yığın deposunu sabit bir dizine otomatik olarak monte etmek için tercih edilen yöntem nedir? Usbmount paketi neredeyse bunu yapıyor gibi görünüyor, ancak bakım eksikliği biraz ihtiyatlı.

  2. Güç kaynağını garanti edemiyorum ve temiz kapatma işlemleri gerçekleştiremiyorum. Neyse ki, dahili işletim sistemi bilgilerinin yanı sıra yazılacak tek dosya günlükler olmalıdır. İşletim sistemi için bir günlük dosyalama sistemi beni kendimden kurtaracak mı yoksa sistemi salt okunur olarak mı takmalı yoksa RAM diskleriyle mi takmalıyım?

  3. USB çubuğundaki FAT dosya sistemi elektrik kesintilerinden ve ani elektrik kesintilerinden kurtulacak mı? Her bağlandığında yeni bir günlük dosyası oluşturmalı mıyım?

  4. X sunucusunu otomatik olarak başlayacak şekilde ayarladım ve durum ekranını başlatmak ve pencere yöneticisi / ekran koruyucuyu devre dışı bırakmak için LXDE otomatik başlatma komut dosyalarıyla uğraştım. Sürekli bir ekranı korumak için başka gotcha'lar var mı?

  5. Kaydedicinin Ethernet erişimi olmayacak ve bunun yerine doğru bir saate ihtiyacı olacaktır. RasClock modülü uygun bir seçenek mi?

Uzun yazı ve yarı ilgili birden çok soru için üzgünüm.

Yazılım üzerinde tam kontrole sahip olduğum basit gömülü cihazlarla uğraşmaya alışkınım ve gerçek bir işletim sistemini doğru bir şekilde yapılandırma görevi beni biraz endişelendiriyor. Öte yandan bu tür bir uygulama için Pi kullanan tek (ab-) olmadığından şüpheleniyorum, bu yüzden umarım sorular benim özel durumuma çok özel değildir.


Çalışan USB-> seri çözümünüzü, başka bir veri kaydedicisinin deneyebileceği bir yerde mi tarif ediyorsunuz? Ben kazıyıcı / logger / webcam Pi bazı ek değer almak için istekli. Teşekkürler!
Tai Viinikka

Yanıtlar:


7

Sistem, verileri herhangi bir zamanda çıkarılabilen, çıkarılabilen veya değiştirilebilen bir FAT32 USB çubuğuna kaydetmeyi amaçlamaktadır.

Bunun fişsiz kısmı sorunlu. AFAIK, hiçbir bilgisayar sistemi, herhangi bir noktada potansiyel sorun yaşamadan herhangi bir zamanda duyurulan bir USB çubuğunu çıkarma hakkını vaat etmez. Yani bunun üstesinden nasıl geleceğinizi düşünmeniz gerekecek.

Güç kaynağını garanti edemiyorum ve temiz kapatma işlemleri gerçekleştiremiyorum.

Yine, herhangi bir bilgisayar sistemini aniden kesmek (neredeyse) risklidir. Bu genellikle (nedeniyle elektrik kesintisi, vs? İçin, kazara, bazen bu bir demet yapmadı kim) kadar tamam biter, ama pi ile SD kart yolsuzluğu bildiren kişilerin alışılmadık miktarda var gibi görünüyor. Yani, "Çoğunlukla sistem temiz bir şekilde kapatılmayacak" demek isterseniz, yeniden düşünmeniz gerekir, çünkü bu bir çıkmaz strateji olacaktır. Klavye veya ağ bağlantısı olmadan kapanmayı tetiklemenin mümkün olduğunu unutmayın . USB çubuğunun temiz bir şekilde çıkarılmasını tetiklemek için benzer bir yöntem kullanabilirsiniz.

Önbelleğe almayı kısıtlamak için syncseçeneği ekleyebilirsiniz /etc/fstab, ancak man mountnot:

Sınırlı sayıda yazma döngüsüne (örneğin, bazı flash sürücüler) sahip ortamlarda "senkronizasyon" yaşam döngüsünün kısalmasına neden olabilir.

Bu, SD kartlarını içerir, ancak medyanızı aralıklı olarak test etmeyi (ve uygun olduğunda değiştirmeyi) hatırladığınız sürece, buna değer olabilir. Bunun genel performansı biraz etkileyeceğini düşünüyorum.

Bu nedenle, fişi veya usb çubuğunu aniden olabildiğince aniden kaçınmaya çalışın ve kesinlikle buna bağlı bir kurulum tasarlamayın. Örneğin, kendinize veya diğer kullanıcılara "USB çubuğunu istediğiniz zaman çıkarmanız uygundur" deyin, çünkü değildir ve bunu yapamazsınız.

syncBaşvurunuzda uygun çağrılar yapmak (örneğin boşta veya önemli bir yazımdan sonra) iyi bir fikirdir.

Bir kez yüklü ve yapılandırılmış istediğiniz her şeyi , potansiyel kök dosya sistemi monte edebilirsiniz salt okunur, ayrı bölümler oluşturmak eğer için /var, /runve /tmpve bu rw monte; Ayrıca bu tür bir bağlı bölüm oluşturabilir ve rw dizinlerini içine bağlayabilirsiniz.

Raspbian pi'de, /runzaten tmpfs (RAM) olduğu için endişelenmenize gerek yok ; /sysve /procaynı zamanda RAM'dedir (ancak amaçlananlar dışında hiçbir şey için kullanmayın). Sistem tek bir amaç içinse ve tüm verileriniz USB çubuğa giderse /var, tek sorunlu olanıdır, ancak bence, kritik olarak öyle değil.


Birincil sorunumuz, gücün acil bir duruş sırasında herhangi bir zamanda kesilebileceğidir, test sırasında sık sık bir şey olacağından şüphelendiğim bir şey (bu nedenle bir günlükçünün başlaması gerekir). Pi için yedek bir bataryaya takabileceğimizi kontrol edeceğim ve belki de güç kaybını tespit etmek için bir çeşit sensörü bağlayacağım. Ancak kök dosya sistemi salt okunur modda monte edilebilirse ve USB bellek periyodik yıkama ve benzerleriyle korunursa hayatım çok daha kolay olurdu.
doynax

@doynax: the kök dosya sistemi RO ile çalıştırmak mümkündür. Bununla ilgili herhangi bir deneyimim yok, ancak temel endişelerin ne olduğuna inandığım yere sonunda birkaç paragraf ekledim.
goldilocks

2

Eski bir yaşamda, hafıza kartlarını okuyan / yazan aygıt sürücüleri üzerinde çalıştım. Herhangi bir işlemin ortasında çekilebilirler, bu nedenle pil veya kapasitör yedek gücü bile yardımcı olmaz. Yongaların biçimlendirme özelliklerine dayanarak, "sıcak" çıkarma ve yerleştirme ile minimum hasar almak için gereken davranışı çıkarımda bulundum.

Temel olarak, yapmanız gereken şey bir veri bloğunun orta yazımını keserseniz (veya kontaklar squirrely ise) gerçeği tanıyabileceğinizden emin olmaktır. temel olarak verileri bir blok numarası (ve sabit boyut değilse uzunluk) ile başa ekleyin ve sonuna bir crc ve (aynı) blok numarası ekleyin.

Yaptığınız ilk yazma bir sonraki blok numarası DEĞİL değerinde sondadır. Bu şekilde, yazmanız tamamlanmazsa, bir blok numarası uyuşmazlığı olur ve bu veri bloğunun çöp olduğu bilinir. Ardından veri bloğunuzu gerçek blok numarası, ardından uzunluk, ardından favori algoritmanız tarafından oluşturulan CRC'niz ve gerçek blok numarası ile tekrar yazın. (CRC, verilerinizi bozan sincap temaslarına karşı koruma sağlamak içindir).

Güç geri yüklendiğinde veya bellek kartı yeniden takıldığında, yalnızca blok başlangıç ​​ve bitiş sıra numaralarının eşleşmediği veya CRC'nin yanlış olduğu noktaya kadar sıralı blokları kabul edin. Bu bloğu kaldırın ve günlük kaydını sürdürün.

Bu düşük seviye şeyler olsa. Bir dosya sistemi üzerinden yapmak başka bir hikaye.

Gerçekten ihtiyacınız olan şey FAT'inizin yedek kopyalarıdır ve FAT tablosunda benzer bir şey yapar. Sıralı numara size hangisinin en son olduğunu söyleyecek ve ön / arka eşleşme ve CRC bütünlüğü sağlayacaktır.

Yatma vaktimi geçti, umarım bu yeterince açıktır.


1

Doğru saat gelince, birçok ucuz GPS modülü vardır. Bundan daha doğru bir saat bulmak zor.


Bu mükemmel bir öneri. Bize saati ayarlama ve bataryayla uğraşma zahmetinden kurtulun. Sadece zaman dilimini (ve sanırım DST kurallarını) takip etmemiz gerekecek ve saf bir veri kaydedici için evrensel zaman iyi olmalı.
doynax

Gökyüzünün hiçbir kısmı görünmüyorsa ve yine de basit bir RTC'ye fayda sağladığında GPS modülü kapalı alanda çalışıyor mu?
Stéphane Gourichon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.