Raspberry를 데이터 로거로 설정


13

제목에서 알 수 있듯이 직렬 포트에서 일부 정보를 읽고 파일에 기록하는 간단한 내장 응용 프로그램을 작업 중이며 디스플레이에 약간의 상태를 표시합니다.

나는 이제 로깅이 실행되는 것처럼 보이며 시스템을 구성하려고하는데 몇 가지 질문이 있습니다.

  1. 이 시스템은 FAT32 USB 스틱에 데이터를 기록하기 위해 만들어졌으며 언제라도 플러그를 뽑거나 다시 꽂거나 교체 할 수 있습니다. 삽입 된 USB 대용량 저장 장치를 고정 된 디렉토리에 자동 마운트하는 기본 방법은 무엇입니까? usbmount 패키지는이 작업을 거의 수행하는 것처럼 보이지만 유지 관리가 부족하면 약간주의해야합니다.

  2. 전원 공급 장치를 보장 할 수 없으며 클린 셧다운을 수행합니다. 고맙게도 내부 OS 정보 외에 기록 할 파일은 로그뿐입니다. OS 용 저널링 파일 시스템이 저를 보호합니까? 아니면 시스템을 읽기 전용으로 마운트하거나 RAM 디스크로 땜질해야합니까?

  3. USB 스틱의 FAT 파일 시스템이 정전 및 갑작스런 배출에서 살아남고 복구됩니까? 마운트 될 때마다 새 로그 파일을 작성해야합니까?

  4. X 서버를 자동으로 시작하고 LXDE 자동 시작 스크립트를 사용하여 상태 표시를 시작하고 창 관리자 / 화면 보호기를 비활성화하도록 설정했습니다. 지속적인 디스플레이를 유지하기위한 다른 문제가 있습니까?

  5. 로거는 이더넷에 액세스 할 수 없으며 정확한 시계가 필요합니다. RasClock 모듈이 적합한 옵션입니까?

긴 글과 여러 개의 반 관련 질문에 대해 죄송합니다.

소프트웨어를 완전히 제어 할 수있는 간단한 임베디드 장치를 다루는 데 익숙해졌으며 실제 운영 체제를 올바르게 구성하는 작업으로 인해 약간 불안해졌습니다. 반면에 나는이 유형의 응용 프로그램에 Pi를 사용하는 유일한 사람이 아니라고 생각하므로 질문이 특정 상황에 너무 구체적이지 않기를 바랍니다.


작동하는 USB-> 직렬 솔루션을 다른 데이터 로거가 사용해 볼 수있는 곳을 설명하고 있습니까? 내 스크레이퍼 / 로거 / 웹캠 Pi에서 추가 가치를 얻고 자합니다. 감사!
Tai Viinikka

답변:


7

이 시스템은 FAT32 USB 스틱에 데이터를 기록하기 위해 만들어졌으며 언제라도 플러그를 뽑거나 다시 꽂거나 교체 할 수 있습니다.

분리 그 부분은 문제가있다. AFAIK, 컴퓨터 시스템은 어디에도 잠재적 인 문제없이 언제라도 USB 스틱을 발표 할 수있는 권리를 약속하지 않습니다. 그래서 당신은 그 문제를 해결하는 방법에 대해 생각해야 할 것입니다.

전원 공급 장치를 보장 할 수 없으며 클린 셧다운을 수행합니다.

다시 말하지만 컴퓨터 시스템의 전원을 갑자기 끊는 것은 위험합니다. 그것은 일반적으로 괜찮습니다 (누가 정전으로 인해 실수로이를 여러 번하지 않은 사람입니까?). 하지만 파이로 SD 카드 손상을보고하는 사람들은 드문 것 같습니다. 따라서 "대부분의 시스템이 완전히 종료되지 않습니다"라는 의미가 있다면 다시 생각해야합니다. 왜냐하면 막 다른 길 전략이기 때문입니다. 키보드 나 네트워크 연결없이 종료트리거 할 수 있습니다 . 비슷한 방법으로 USB 스틱을 완전히 분리 할 수도 있습니다.

캐싱을 제한하기 위해 sync옵션을 추가 할 수 /etc/fstab있지만 다음을 man mount참고하십시오.

쓰기주기가 제한된 미디어 (예 : 일부 플래시 드라이브)의 경우 "동기화"로 인해 수명주기 단축이 발생할 수 있습니다.

여기에는 SD 카드가 포함되지만 미디어를 간헐적으로 테스트 (적절한 경우 교체)하는 것이 좋습니다. 이것은 일반적인 성능에 약간 영향을 줄 것이라고 생각합니다.

따라서 가능한 한 빨리 플러그 또는 USB 스틱을 잡아 당기는 것을 피하십시오. 확실히 이것에 의존하는 설정을 설계하지 마십시오. 예를 들어, 자신이나 다른 사용자에게 "원할 때마다 USB 스틱을 분리해도 괜찮습니다"라고 말하지 마십시오. 그렇지 않은 경우에는 그렇게 할 수 없기 때문입니다.

sync응용 프로그램에서 적절한 호출을하는 것은 (예를 들어, 유휴 상태이거나 상당한 쓰기 후에) 좋은 생각입니다.

당신은 일단 당신이 설치 및 구성 원하는 모든 것을 , 당신은 잠재적으로 루트 파일 시스템을 마운트 할 수있는 읽기 전용, 별도의 파티션을 만들 경우에 대한 /var, /run그리고 /tmp그 RW를 장착; 마운트 된 파티션 중 하나를 작성하고 rw 디렉토리를 심볼릭 링크 할 수도 있습니다.

라즈 비안 파이에서는 /run이미 tmpfs (RAM)이므로 걱정할 필요가 없습니다 . /sys/procRAM도 있습니다 (하지만이 의도하는 것을 제외하고는 아무것도 사용하지 않음). 시스템이 단일 목적이며 모든 데이터가 USB 스틱으로 이동하는 /var경우 유일한 문제는 아니지만 비판적으로 그렇게 생각합니다.


우리의 주요 문제는 비상 정지 중 언제라도 전원이 차단 될 수 있다는 것입니다. 테스트 중에 빈번하게 발생하는 것으로 의심됩니다 (따라서 로거를 시작해야 함). Pi의 백업 배터리를 사용하고 전원 손실을 감지하기 위해 일종의 센서를 연결할 수 있는지 확인합니다. 그러나 루트 파일 시스템이 읽기 전용 모드로 마운트되고 USB 메모리가 주기적 플러시 등을 통해 보호된다면 내 인생은 훨씬 쉬워 질 것입니다.
doynax

@doynax : 루트 파일 시스템 RO를 사용하여 실행할 수 있습니다. 나는 그것에 대해 아무런 경험이 없지만, 기본 관심사가 무엇인지 믿는 것에 대해 마지막에 두 개의 단락을 추가했습니다.
goldilocks

2

이전에는 메모리 카드를 읽고 쓰는 장치 드라이버를 연구했습니다. 작동 중에는 전원이 끊길 수 있으므로 배터리 나 커패시터 백업 전원도 도움이되지 않습니다. 칩의 형식 사양에 따라 "핫"제거 및 삽입으로 인한 최소한의 손상이 필요한 동작을 추론했습니다.

기본적으로해야 할 일은 데이터 블록의 쓰기 도중 중단 된 경우 (또는 접점이 적절하게) 사실을 인식 할 수 있도록하는 것입니다. 기본적으로 데이터에 블록 번호 (고정 크기가 아닌 경우 길이)를 추가하고 끝에 crc 및 (같은) 블록 번호를 추가하십시오.

첫 번째 쓰기는 다음 블록 번호가 아닌 값으로 끝납니다. 이렇게하면 쓰기가 완료되지 않으면 블록 번호가 일치하지 않으며 해당 데이터 블록이 가비지 인 것으로 알려져 있습니다. 그런 다음 실제 블록 번호, 길이, 선호하는 알고리즘으로 생성 된 CRC 및 실제 블록 번호로 데이터 블록을 작성하십시오. CRC는 데이터를 손상시키는 엄밀한 연락처로부터 보호하는 것입니다.

전원이 복구되거나 메모리 카드가 다시 삽입되면 블록 시작 및 종료 시퀀스 번호가 일치하지 않거나 CRC가 올바르지 않은 지점까지 순차적 블록 만 허용하십시오. 해당 블록을 제거하고 로깅을 재개하십시오.

이것은 저수준 물건입니다. 파일 시스템을 통해이를 수행하는 것은 또 다른 이야기입니다.

실제로 필요한 것은 FAT의 중복 사본이며 FAT 테이블에서 비슷한 작업을 수행합니다. 일련 번호는 가장 최근의 것을 알려주며, 앞 / 뒤 일치 및 CRC는 무결성을 보장합니다.

취침 시간이 지났으므로 이것이 분명하기를 바랍니다.


1

정확한 시계는 저렴한 GPS 모듈이 많이 있습니다. 그보다 더 정확한 시계를 찾기가 어렵습니다.


그것은 훌륭한 제안입니다. 시계 설정 및 배터리 취급 문제를 해결하십시오. 시간대 (및 내가 생각하는 DST 규칙)를 추적하면됩니다. 순수한 데이터 로거의 경우 세계 시간이 좋습니다.
doynax

하늘의 어느 부분도 보이지 않을 때 GPS 모듈이 실내에서 작동하며 간단한 RTC에 비해 여전히 이점을 제공합니까?
Stéphane Gourichon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.