【樹莓派】關於樹莓派掉電問題
樹莓派沒有電池,所以斷電斷網情況下,時間會停留在上次關機的時間。
如果再次開機,有網絡的情況下,可以進行時間同步。
但是極端情況下,沒有網絡,就只能手動去修改;而沒網的情況下,客戶不懂Linux,不會手動修改,那只能使用電池解決方案。
可以用這東西:
CR1220
CR1220電池是鋰二氧化錳一次性電池,不可充電,標稱電壓3v,常用於數碼產品及其他小電子產品的CMOS電池上、記憶功能或斷電參數保護,相機安裝這塊電池用來保存系統時間和設置,一般優質電池使用壽命2到3年。 如果不安裝該電池或者電池失效。
12表示電池的直徑是12.5mm,20代表電池的高度為2.0mm。很小吧。這麽小的一個紐扣玩意兒,可以支持2~3年。
這種電池很多,現在需要一個很小的紐扣電池就足夠了:
下面補充一下RTC與NTP相關:
RTC 與 NTP
早期版本的 FreeBSD 有一個問題是,如果使用 ntpd 來校準系統時鐘的話,如果長期開機,則在重啟之後,時間會差很遠,之前一直沒仔細研究這個問題。最近突然發現 FreeBSD 8.1-RELEASE 裏面沒有這個問題了,於是翻看了一下代碼和之前的一些郵件才明白是怎麽回事,總結一下:
一般來說操作系統在引導以後會自行維護時鐘,簡單地說,就是操作系統根據某個時鐘源,例如單CPU系統中的TSC,或多CPU系統中比較常用的高精度事件計時器HPET等等,計算出時間的流逝並修改系統時間。只有在系統剛剛引導的時候,才會直接取 RTC 時間(在關機時,主板上的電池仍可維持 RTC 電路的計時功能)。
我們知道,任何測量工具都是有誤差的,普通的 PC 系統上配置的計時裝置肯定不會做的非常精密,這也是我們為什麽要運行 ntpd 的主要原因。在系統運行的過程中,這些誤差不斷地積累,使用 ntpd 時,系統可以計算出所采用的時鐘源與實際的時間之間的誤差,並逐步調整時間源的計數周期與實際時間的比例,從而維持系統時鐘的精確性。
在重啟時,在內存中維護的系統時刻數據便隨之丟棄了,操作系統再次啟動時讀取的是先前未經修正過的、繼續在積累誤差的 RTC 時間數據(註意:RTC是不依賴於OS運行的;OS可以修改其時刻數據,但無論開機還是關機,只要維持其需要的電流即可確保 RTC 繼續自行更新,而無需 OS 幹預)。
FreeBSD先前的實現中,只有非常少的地方調用了 resettodr(9) 來修正 RTC 時間,這些地方主要是settimeofday()之類的直接設置內核時刻數據的點,而對於 ntp 的情況,則沒有相應的處理。
新的實現 (以r207360為主體,包含r207359, r207362)則增加了一個callout,每半小時將系統時鐘刷回RTC一次,從而解決了這個問題。
關於為什麽不應該使用 ntpdate 來對時(ntpdate會使用settimeofday()),請參考 A core的 這篇 介紹 NTP 的文章,以及我的 這篇 文章。
-----------------------------------
RTC(實時時鐘芯片)
RTC,英文全稱:Real-time clock,中文名稱:實時時鐘,是指可以像時鐘一様輸出實際時間的電子設備,一般會是集成電路,因此也稱為時鐘芯片。實時時鐘芯片是日常生活中應用最為廣泛的消費類電子產品之一。它為人們提供精確的實時時間,或者為電子系統提供精確的時間基準,目前實時時鐘芯片大多采用精度較高的晶體振蕩器作為時鐘源。
基本目前所有的RTC都需要後備電源供電,都是用紐扣電池,RTC功率低,而且使用的時長不長,用紐扣電池就最為合適。而在選用紐扣電池,我們一般都需要了解一下產品的特性,到底是客戶是否能自行更換電池?在後備電源這一塊,有沒有帶充電電路?預算在這個後備電源上投入多少成本?空間有多大?眾所周知,目前廣泛應用在RTC都是3V紐扣電池,而3V紐扣電池有分可充電與不可充電。
不可充電型的3V紐扣電池,都是用在一些產品基本接近不斷電狀態或者就算斷電時間不長,還有一個就是空間相對比較大。同規格的紐扣電池,不可充電的容量是比可充電的容量高出不少,就以CR1220與ML1220為例,CR1220的容量是45mah,ML1220的容量是15mah,不過不可充電的成本就低很多;而可充電的3V紐扣電池就多數用在哪些比較精密的,可能會斷電時間比較長的產品中,而空間都是比較小。比較不容易去更換電池,主電源斷電後,就靠這個後備電源來保存時間,比較容易理解,就好像我們以前用的諾基亞手機,當我們把手機電池拆掉了一個晚上,第二天裝上電池,我們都能看到手機上的時間還是很準確,不會復位,而這個時候,其實後備電池都用很大部分的電量,當裝會手機電池後,又會給這顆小電池充滿電。
【樹莓派】關於樹莓派掉電問題