1. 程式人生 > >Linux下RTC時間的讀寫分析

Linux下RTC時間的讀寫分析

系統時間:是由主晶片的定時器進行維護的時間,一般情況下都會選擇晶片上最高精度的定時器作為系統時間的定時基準,以避免在系統執行較長時間後出現大的時間偏移。特點是掉電後不儲存。 RTC時間:是指系統中包含的RTC晶片內部所維護的時間。RTC晶片都有電池+系統電源的雙重供電機制,在系統正常工作時由系統供電,在系統掉電後由電池進行供電。因此係統電源掉電後RTC時間仍然能夠正常執行。 
每次Linux系統啟動後在啟動過程中會檢測和掛載RTC驅動,在掛載後會自動從RTC晶片中讀取時間並設定到系統時間中去。此後如果沒有顯式的通過命令去控制RTC的讀寫操作,系統將不會再從RTC中去獲取或者同步設定時間。 linux命令中的date和time等命令都是用來設定系統時間的,而hwclock命令是用來設定和讀寫RTC時間的。 讀系統時間:date 設定系統時間:date -s 011209512012.00              設定系統時間為2012年1月12日9點51分00秒 注:date -s命令設定時間只會影響系統時間,不會設定RTC時間,如果需要把當前系統時間同步設定到RTC中,需要額外呼叫hwclock命令。
hwclock命令使用: hwclock -r      讀取並列印當前的rtc時間 hwclock -s     讀取RTC時間並設定到系統時間中去 hwclock -w     把當前的系統時間設定到RTC中 因此完整的設定RTC的時間可執行如下命令: date -s 011209512012.00 hwclock -w  另外為了在啟動時自動執行RTC時間同步到系統時間,可以把 hwclock -s 加入到rc.local或者rcS檔案中。 RTC時間檔案: cat /sys/class/rtc/rtc0/date cat  /sys/class/rtc/rtc0/time