Clock

無網路、無 RTC 系統的短暫斷電後恢復時鐘

  • September 3, 2013

我使用 Raspberry Pi 製作了一個可程式電源開關(儘管這個問題不是 RPi 特有的——它更多的是由硬體缺陷引起的“通用 Linux”。)Raspberry 沒有電池支持的 RTC;它旨在通過網路啟動後立即聯網工作並同步其時鐘。

我的問題是,雖然我通過網路對所述開關進行程式,並且可以通過這種方式在給定時間打開/關閉給定套接字,但設備本身將在不同位置使用,包括非聯網位置。如果我把它從我程式的地方帶到它要插入的地方,它就會斷電並且時鐘會失去狀態。在我重新啟動它後,它沒有連接來恢復日期。

沒電的幾分鐘對我來說不是問題——我不介意時鐘延遲一兩分鐘。我介意它在 43 年後關閉,就像我打開非聯網後的情況一樣。

是否有一些巧妙的方法可以將啟動時的時鐘恢復到系統因斷電而關閉之前的狀態?(每秒將其寫入作為 RPi 儲存介質的 SD 卡會很快殺死卡,所以這不是一個選擇。)

我看到了幾種方法可以解決這個問題

  1. 掃描文件系統以查找具有最新修改或訪問時間的文件。使用該時間設置時鐘。它很慢,而且準確性可能會很遠,但它會起作用。如果您知道某個目錄/文件被頻繁修改,則可以將其用作源。
  2. 按照你提到的想法去做;‘每隔幾秒鐘觸摸一個文件’。許多 SD 卡都有磨損均衡功能。所以你不會一直寫到完全相同的位置,因此這根本不是問題。
  3. 使用 NVRAM。根據需要將目前日期寫入 NVRAM,然後在啟動時恢復。NVRAM 很小,但您可以毫無問題地在其中儲存幾個字節。
  4. 使用 GPS 進行時間同步。這就是我在需要時間但無法訪問網路的設備上所做的。USB GPS 設備價格便宜,而且它們提供非常準確的時間源。

引用自:https://unix.stackexchange.com/questions/89248