Thiết lập Raspberry làm bộ ghi dữ liệu


13

Như tiêu đề cho biết tôi đang làm việc trên một ứng dụng nhúng đơn giản, đọc một số thông tin từ cổng nối tiếp và ghi nhật ký vào tệp, ngoài việc hiển thị một chút trạng thái trên màn hình.

Bây giờ tôi đang ở giai đoạn đăng nhập dường như đang chạy và tôi đang cố gắng định cấu hình hệ thống và tôi có một vài câu hỏi.

  1. Hệ thống được dự định để ghi nhật ký dữ liệu vào thanh USB FAT32, có thể được rút ra, cắm lại hoặc thay thế bất cứ lúc nào. Phương pháp ưa thích để tự động gắn bất kỳ bộ lưu trữ dung lượng lớn USB nào vào một thư mục cố định là gì? Gói usbmount dường như gần như làm điều này nhưng việc thiếu bảo trì làm cho bit cảnh giác.

  2. Tôi không thể đảm bảo cung cấp điện và thực hiện tắt máy sạch. Rất may, các tệp duy nhất được viết, ngoài thông tin hệ điều hành nội bộ, phải là nhật ký. Hệ thống tập tin nhật ký cho HĐH sẽ cứu tôi khỏi chính tôi hay tôi nên lắp hệ thống chỉ đọc hoặc sửa lại với các đĩa RAM?

  3. Hệ thống tập tin FAT trên thanh USB sẽ tồn tại và phục hồi sau khi mất điện và xuất tinh đột ngột? Tôi có nên tạo một tệp nhật ký mới mỗi lần nó được gắn không?

  4. Tôi đã thiết lập máy chủ X để tự động khởi động và xử lý các tập lệnh tự khởi động LXDE để bắt đầu hiển thị trạng thái và vô hiệu hóa trình quản lý cửa sổ / trình bảo vệ màn hình. Có bất kỳ vấn đề khác để duy trì một màn hình liên tục?

  5. Bộ ghi sẽ không có quyền truy cập Ethernet và thay vào đó cần một đồng hồ chính xác. Là mô-đun RasClock là một lựa chọn phù hợp?

Xin lỗi về bài viết dài và nhiều câu hỏi liên quan đến bán.

Tôi đã quen với việc xử lý các thiết bị nhúng đơn giản mà tôi có toàn quyền kiểm soát phần mềm và nhiệm vụ cấu hình chính xác một hệ điều hành thực sự khiến tôi hơi lo lắng. Mặt khác, tôi khá nghi ngờ rằng tôi không phải là người duy nhất (ab-) sử dụng Pi cho loại ứng dụng này nên hy vọng các câu hỏi không quá cụ thể đối với tình huống cụ thể của tôi.


Bạn có đang mô tả giải pháp nối tiếp USB-> đang hoạt động của mình ở đâu đó để các bộ dữ liệu tương tự khác có thể thử không? Tôi rất muốn nhận được một số giá trị bổ sung từ trình quét / logger / webcam Pi của tôi. Cảm ơn!
Tai Viinikka

Câu trả lời:


7

Hệ thống được dự định để ghi nhật ký dữ liệu vào thanh USB FAT32, có thể được rút ra, cắm lại hoặc thay thế bất cứ lúc nào.

Phần không kết nối đó là vấn đề. AFAIK, không có hệ thống máy tính ở bất cứ đâu hứa hẹn cho bạn quyền rút ra một thanh USB không báo trước tại bất kỳ thời điểm nào mà không có vấn đề tiềm ẩn. Vì vậy, bạn sẽ phải suy nghĩ về cách khắc phục điều đó.

Tôi không thể đảm bảo cung cấp điện và thực hiện tắt máy sạch.

Một lần nữa, đột nhiên cắt nguồn (chỉ khoảng) bất kỳ hệ thống máy tính nào cũng có rủi ro. Nó thường kết thúc tốt đẹp (người đã không làm điều này rất nhiều lần, do tai nạn, do mất điện, v.v?), Nhưng dường như có một số lượng người bất thường báo cáo tham nhũng thẻ SD với pi. Vì vậy, nếu bạn muốn nói, "Chủ yếu là hệ thống sẽ không bị tắt một cách sạch sẽ" bạn cần suy nghĩ lại, bởi vì đó sẽ là một chiến lược cuối cùng. Lưu ý rằng có thể kích hoạt tắt máy mà không cần kết nối bàn phím hoặc mạng. Bạn cũng có thể sử dụng một phương pháp tương tự để kích hoạt việc ngắt kết nối thanh usb.

Bạn có thể thêm synctùy chọn /etc/fstabđể hạn chế bộ đệm, nhưng man mountghi chú:

Trong trường hợp phương tiện có số chu kỳ ghi hạn chế (ví dụ: một số ổ flash), "đồng bộ hóa" có thể gây ra rút ngắn vòng đời.

Điều này bao gồm thẻ SD, mặc dù miễn là bạn nhớ kiểm tra không liên tục (và thay thế, khi thích hợp) phương tiện của bạn có thể có giá trị trong khi. Điều này sẽ tác động đến hiệu suất chung một chút, tôi nghĩ.

Vì vậy, hãy cố gắng tránh rút phích cắm hoặc thanh usb đột ngột hết mức có thể và chắc chắn không thiết kế một thiết lập phụ thuộc vào điều này. Ví dụ, đừng nói với bản thân hoặc người dùng khác, "Bạn có thể rút phích cắm USB bất cứ khi nào bạn muốn", bởi vì điều đó không phải và bạn không thể làm như vậy.

Thực hiện các synccuộc gọi phù hợp trong ứng dụng của bạn (ví dụ: khi rảnh, hoặc sau khi viết đáng kể) là một ý tưởng hay.

Một khi bạn có tất cả mọi thứ bạn muốn cài đặt và cấu hình , bạn có khả năng có thể gắn kết hệ thống tập tin gốc read-only, nếu bạn tạo phân vùng riêng biệt cho /var, /run/tmp và gắn kết những rw; bạn cũng có thể tạo một phân vùng được gắn kết như vậy và liên kết các thư mục rw vào nó.

Trên một pi raspbian, bạn không phải lo lắng /run, vì nó đã là tmpfs (RAM) rồi; /sys/proccũng có trong RAM (nhưng không sử dụng chúng cho bất cứ điều gì ngoại trừ mục đích của chúng). Nếu hệ thống chỉ dành cho một mục đích duy nhất và tất cả dữ liệu của bạn chuyển sang thanh USB, thì đó /varlà vấn đề duy nhất nhưng không, tôi nghĩ, thực tế là như vậy.


Vấn đề chính của chúng tôi là nguồn điện có thể bị cắt bất cứ lúc nào trong khi dừng khẩn cấp, điều mà tôi nghi ngờ sẽ xảy ra thường xuyên trong quá trình thử nghiệm (do đó cần phải bắt đầu ghi nhật ký). Tôi sẽ kiểm tra xem chúng tôi có thể sử dụng pin dự phòng cho Pi không, và có lẽ kết nối một số loại cảm biến để phát hiện mất điện. Tuy nhiên, cuộc sống của tôi sẽ dễ dàng hơn rất nhiều nếu hệ thống tập tin gốc có thể được gắn ở chế độ chỉ đọc và bộ nhớ USB được bảo vệ thông qua các lần xả định kỳ và tương tự.
doynax

@doynax: Có thể chạy với hệ thống tập tin gốc RO. Tôi không có bất kỳ kinh nghiệm nào về điều đó, nhưng tôi đã thêm một vài đoạn ở cuối về những gì tôi tin rằng những mối quan tâm cơ bản là.
goldilocks

2

Ở kiếp trước, tôi làm việc trên các trình điều khiển thiết bị đọc / ghi thẻ nhớ. Chúng có thể được kéo mạnh ở giữa bất kỳ hoạt động nào, do đó, ngay cả pin hoặc tụ điện dự phòng cũng không giúp được gì. Dựa trên thông số kỹ thuật định dạng của chip, tôi đã suy ra hành vi cần thiết để có thiệt hại tối thiểu được thực hiện bằng cách loại bỏ và chèn "nóng".

Về cơ bản, những gì bạn cần làm là đảm bảo rằng nếu bạn bị cắt giữa phần ghi của một khối dữ liệu (hoặc các số liên lạc thì chắc chắn) bạn có thể nhận ra sự thật. về cơ bản hãy chuẩn bị dữ liệu với số khối (và độ dài nếu không phải là kích thước cố định) và nối thêm số khối crc và (giống nhau) ở cuối.

Viết đầu tiên bạn làm là ở cuối, với giá trị KHÔNG phải là số khối tiếp theo. Bằng cách này, nếu bài viết của bạn không hoàn thành, sẽ có một số khối không khớp và khối dữ liệu đó được coi là rác. Sau đó viết khối dữ liệu của bạn với số khối thực, theo sau là độ dài, theo sau là CRC của bạn được tạo bởi thuật toán yêu thích của bạn và số khối thực một lần nữa. (CRC là để bảo vệ chống lại các liên hệ nghiêm trọng làm hỏng dữ liệu của bạn).

Khi nguồn được phục hồi hoặc thẻ nhớ được lắp lại, chỉ chấp nhận các khối liên tiếp đến điểm khối bắt đầu và số thứ tự kết thúc không khớp hoặc CRC không chính xác. Hủy bỏ khối đó và tiếp tục đăng nhập.

Đây là công cụ cấp thấp mặc dù. Làm điều đó thông qua một hệ thống tập tin là một câu chuyện khác.

Những gì bạn thực sự cần là các bản sao dự phòng của FAT và thực hiện một điều tương tự xung quanh bảng FAT. Số thứ tự sẽ cho bạn biết số nào gần đây nhất và trận đấu trước / sau và CRC sẽ đảm bảo tính toàn vẹn.

Đã quá giờ đi ngủ nên tôi hy vọng điều này đủ rõ ràng.


1

Đối với đồng hồ chính xác, có rất nhiều mô-đun GPS giá rẻ có sẵn. Khó tìm được một chiếc đồng hồ chính xác hơn thế.


Đó là một gợi ý tuyệt vời. Cứu chúng tôi những rắc rối của việc đặt đồng hồ và xử lý pin. Chúng ta sẽ chỉ cần theo dõi múi giờ (và các quy tắc DST mà tôi cho là), và đối với một bộ ghi dữ liệu thuần túy thì thời gian phổ biến là ổn.
doynax

Có một mô-đun GPS hoạt động trong nhà khi không nhìn thấy một phần của bầu trời và vẫn cung cấp lợi ích so với RTC đơn giản?
Stéphane Gourichon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.