在 Linux 系統中的時鐘,可分為硬體時鐘及系統時鐘。

硬體時鐘可以依賴輔助電源(電池)持續累計時間;而系統時鐘則每次重新啟動就會重置。
所以一般 Linux 在開機時會做個和硬體時鐘同步的動作(hwclock -s),
但是在 Embedded Linux 中是要手動操作的(如果沒有設定CONFIG_RTC_HCTOSYS=y)。

1. 重新編譯 Kernel 選項  CONFIG_RTC_HCTOSYS=y

2. 使用 hwclock
   先利用 date 指令調整好系統時間,再用 hwclock -w 寫入硬體時鐘,
   往後開機只要自動執行用 hwclock -s 即可抓到正確的時間囉!
   (可以先執行 date 跟 hwclock 這兩個指令來看它初始的狀態)
 1.jpg
   在上圖中ㄧ開始 date 指令可以看到初始的linux系統時間,接下來經過設定改變它的日期時間。
   接下來執行hwclock可以看到他的初始時間,並經由 hwclock –w 將 linux 系統時間寫入到硬體時間中,
   接下來就可以看到經過設定的硬體時間,不像剛開始初始的時間ㄧ樣停留不動。
   (設定好之後基本上只要硬體時間有電池可以支撐,那麼就算板子關掉重開也不會影響到設定好的硬體時間)
2.jpg
   但是在重新開機之後會出現一個情況,linux的系統時間還是回復到了初始狀態,但是硬體時間則是維持原修改的狀態,繼續計數時間。   為了解決這個情況可以透過 hwclock –s 這個指令,將硬體時間設定給linux系統時間。
   Hwclock 參數設定如下:
   hwclock: invalid option -- h
   BusyBox v1.13.1 (2009-03-27 21:00:34 CST) multi-call binary
   Usage: hwclock [-r|--show] [-s|--hctosys] [-w|--systohc] [-l|--localtime] [-u|--utc] [-f FILE]
   Query and set hardware clock (RTC)
Options:
        -r    Show hardware clock time
        -s    Set system time from hardware clock
        -w    Set hardware clock to system time
        -u    Hardware clock is in UTC
        -l    Hardware clock is in local time
        -f    FILE Use specified device (e.g. /dev/rtc2)
   為了節省麻煩每次重新開機都要自己設定ㄧ次,可以透過啟動命令稿的編譯讓它自動執行。
   (可以寫在/etc/profile中)
3.jpg
    修改好之後可以在下圖中看到進入系統之後直接自行調整好時間。
4.jpg

參考資料:
http://keepworking-keepwalking.blogspot.com/2008/09/linux-rtc-driver.html

arrow
arrow
    全站熱搜

    BB 發表在 痞客邦 留言(0) 人氣()