QQ...隔了一個月的時間,終於又發文了,前段時間都在準備研討會的報告,真是令人緊張到爆阿,還好順利的結束了。

 

ARM版中利用RTC時間設定linux系統時間

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

 

1. 重新編譯 Kernel 選項 (我使用的kernel似乎沒有這個選項,SO這個部份沒做。)

CONFIG_RTC_HCTOSYS=y

 

2. 使用 hwclock

先利用 date 指令調整好系統時間,再用 hwclock -w 寫入硬體時鐘,往後開機只要自動執行用 hwclock -s 即可抓到正確的時間囉!

剛拿回來的板子若尚未做任何的設定,可以先執行datehwclock這兩個指令來看它初始的狀態。

 時間修改-01.jpg

 

        在上圖中ㄧ開始date指令可以看到初始的linux系統時間,接下來經過設定改變它的日期時間。接下來執行hwclock可以看到他的初始時間,並經由
hwclock –wlinux系統時間寫入到硬體時間中,接下來就可以看到經過設定的硬體時間,不像剛開始初始的時間ㄧ樣停留不動。

設定好之後基本上只要硬體時間有電池可以支撐,那麼就算板子關掉重開也不會影響到設定好的硬體時間。

 時間修改-02.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中。

時間修改-03.jpg

 

修改好之後可以在下圖中看到進入系統之後直接自行調整好時間。

時間修改-04.jpg

 

參考資料:

http://keepworking-keepwalking.blogspot.com/2008/09/linux-rtc-driver.html


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 flykof 的頭像
    flykof

    十年磨一劍

    flykof 發表在 痞客邦 留言(1) 人氣()