當(dāng) Linux 開發(fā)者談?wù)撘粋(gè)實(shí)時(shí)時(shí)鐘,他們通常指的是某種能記錄墻上時(shí)間,并且有備用電 池,以至于在系統(tǒng)關(guān)機(jī)的時(shí)候仍然可以工作的器件。 Linux 有兩個(gè)系列廣泛兼容的用戶空間 RTC 設(shè)備節(jié)點(diǎn):
/dev/rtc : PC 機(jī)及兼容機(jī)系統(tǒng)提供的 RTC 接口,這種接口對于非 x86 系統(tǒng)來說不是 很輕便。
/dev/rtc0,/dev/rtc1 :是各種系統(tǒng)上,被各種 RTC 芯片所支持的框架的一部分。 iTOP-6818 開發(fā)板以上兩種均支持,設(shè)備節(jié)點(diǎn)對應(yīng)為“/dev/rtc”和“/dev/rtc0”。 iTOP-6818 開發(fā)板的內(nèi)核鏡像,默認(rèn)支持實(shí)時(shí)時(shí)鐘,另外還需要有紐扣電池,如下圖所示。 如果用戶購買的時(shí)候,指明需要順豐空運(yùn),那么開發(fā)板上應(yīng)該是不帶有紐扣電池的,電池的型 號(hào)為 cr1220,用戶可自行購買。
1.內(nèi)核驅(qū)動(dòng)
iTOP-6818 的實(shí)時(shí)時(shí)鐘 RTC 驅(qū)動(dòng)是內(nèi)核目錄下的“drivers/rtc/rtc-nxp.c”文件,如下 圖所示。
進(jìn)入內(nèi)核源碼目錄,使用“export ARCH=arm”,然后使用“make menuconfig”命 令,如下圖所示,選擇“Device Drivers --->”,輸入回車。
如下圖所示,在“Device Drivers --->”下,選擇“Real Time Clock --->”,輸入回 車。
如下圖所示,“SLsiAP RTC”,即為實(shí)時(shí)時(shí)鐘 RTC 驅(qū)動(dòng)選項(xiàng)。這個(gè)選項(xiàng)默認(rèn)是配置的, 用戶使用默認(rèn)的內(nèi)核鏡像即可。
2.測試
壓縮包中有“topeet_rtctest.tar.gz”,其中有源碼和二進(jìn)制文件。源碼文件中包含獲取 實(shí)時(shí)時(shí)鐘和打印出實(shí)時(shí)時(shí)鐘時(shí)間的代碼。 2.1命令行設(shè)置時(shí)間和測試
如下圖所示,可以使用“date”命令可以直接查看系統(tǒng)時(shí)間,上電開機(jī)之后(斷電,取下紐扣電池,上電開機(jī)),時(shí)間是默認(rèn)的時(shí)間“Thu Jan 1 00:00:51 CST 2015”。
使用命令“date -s "2018-07-17 17:43:00"”設(shè)置系統(tǒng)時(shí)間,接著使用命令“date” 可以查到系統(tǒng)時(shí)間已經(jīng)更新,接著使用命令“hwclock --systohc”將系統(tǒng)時(shí)間同步到 RTC 實(shí) 時(shí)時(shí)鐘,如下圖所示。
安裝上紐扣電池,斷電再開機(jī),使用命令“date”,如下圖所示,時(shí)間仍然是 2018 年, 說明實(shí)時(shí)時(shí)鐘起作用了。
2.2 測試程序讀取時(shí)間測試
如下圖所示,iTOP-6818 的實(shí)時(shí)時(shí)鐘,設(shè)備節(jié)點(diǎn)“/dev/rtc0”都可以正常調(diào)用。
測試程序 topeet_rtctest 需要傳遞設(shè)備節(jié)點(diǎn),如果不傳遞設(shè)備節(jié)點(diǎn),默認(rèn)使用的是 “/dev/rtc0”,所以默認(rèn)也是可以正常運(yùn)行,如下圖所示,使用命令“./topeet_rtctest”運(yùn) 行程序。
如下圖所示,使用命令“./topeet_rtctest /dev/rtc0”,設(shè)備節(jié)點(diǎn)“/dev/rtc0”也是可以 正常運(yùn)行。
|