當 Linux 開發者談論一個實時時鐘,他們通常指的是某種能記錄墻上時間,并且有備用電 池,以至于在系統關機的時候仍然可以工作的器件。 Linux 有兩個系列廣泛兼容的用戶空間 RTC 設備節點:
/dev/rtc : PC 機及兼容機系統提供的 RTC 接口,這種接口對于非 x86 系統來說不是 很輕便。
/dev/rtc0,/dev/rtc1 :是各種系統上,被各種 RTC 芯片所支持的框架的一部分。 iTOP-6818 開發板以上兩種均支持,設備節點對應為“/dev/rtc”和“/dev/rtc0”。 iTOP-6818 開發板的內核鏡像,默認支持實時時鐘,另外還需要有紐扣電池,如下圖所示。 如果用戶購買的時候,指明需要順豐空運,那么開發板上應該是不帶有紐扣電池的,電池的型 號為 cr1220,用戶可自行購買。
01.png (422.09 KB, 下載次數: 77)
下載附件
2018-7-24 10:31 上傳
1.內核驅動
iTOP-6818 的實時時鐘 RTC 驅動是內核目錄下的“drivers/rtc/rtc-nxp.c”文件,如下 圖所示。
02.png (44.69 KB, 下載次數: 54)
下載附件
2018-7-24 10:31 上傳
進入內核源碼目錄,使用“export ARCH=arm”,然后使用“make menuconfig”命 令,如下圖所示,選擇“Device Drivers --->”,輸入回車。
03.png (365.27 KB, 下載次數: 60)
下載附件
2018-7-24 10:31 上傳
如下圖所示,在“Device Drivers --->”下,選擇“Real Time Clock --->”,輸入回 車。
04.png (409.05 KB, 下載次數: 57)
下載附件
2018-7-24 10:31 上傳
如下圖所示,“SLsiAP RTC”,即為實時時鐘 RTC 驅動選項。這個選項默認是配置的, 用戶使用默認的內核鏡像即可。
05.png (391.52 KB, 下載次數: 62)
下載附件
2018-7-24 10:31 上傳
2.測試
壓縮包中有“topeet_rtctest.tar.gz”,其中有源碼和二進制文件。源碼文件中包含獲取 實時時鐘和打印出實時時鐘時間的代碼。 2.1命令行設置時間和測試
如下圖所示,可以使用“date”命令可以直接查看系統時間,上電開機之后(斷電,取下紐扣電池,上電開機),時間是默認的時間“Thu Jan 1 00:00:51 CST 2015”。
06.png (89.33 KB, 下載次數: 57)
下載附件
2018-7-24 10:31 上傳
使用命令“date -s "2018-07-17 17:43:00"”設置系統時間,接著使用命令“date” 可以查到系統時間已經更新,接著使用命令“hwclock --systohc”將系統時間同步到 RTC 實 時時鐘,如下圖所示。
07.png (157.09 KB, 下載次數: 59)
下載附件
2018-7-24 10:31 上傳
安裝上紐扣電池,斷電再開機,使用命令“date”,如下圖所示,時間仍然是 2018 年, 說明實時時鐘起作用了。
08.png (94.94 KB, 下載次數: 51)
下載附件
2018-7-24 10:31 上傳
2.2 測試程序讀取時間測試
如下圖所示,iTOP-6818 的實時時鐘,設備節點“/dev/rtc0”都可以正常調用。
09.png (91.23 KB, 下載次數: 60)
下載附件
2018-7-24 10:31 上傳
測試程序 topeet_rtctest 需要傳遞設備節點,如果不傳遞設備節點,默認使用的是 “/dev/rtc0”,所以默認也是可以正常運行,如下圖所示,使用命令“./topeet_rtctest”運 行程序。
10.png (88.46 KB, 下載次數: 55)
下載附件
2018-7-24 10:32 上傳
如下圖所示,使用命令“./topeet_rtctest /dev/rtc0”,設備節點“/dev/rtc0”也是可以 正常運行。
11.png (78.73 KB, 下載次數: 49)
下載附件
2018-7-24 10:32 上傳
|