RTC指實時時鐘,主要作用是為電子設備提供精準的時間基準。RTC分為兩類,片內(nèi)RTC和外部(掛)RTC。
? 內(nèi)部RTC
集成在芯片內(nèi)部,RTC模塊和時鐘配置系統(tǒng)一般處于后備區(qū)域,即在系統(tǒng)復位或從待機模式喚醒后,RTC的設置和時間維持不變。
? 外部RTC
獨立于主芯片的IC,也稱為時鐘芯片。通常使用獨立電源,一般為紐扣電池。在系統(tǒng)斷電后仍能自動運轉(zhuǎn),維系統(tǒng)更新實時時間。當系統(tǒng)上電后,通過相應的接口從外部RTC讀取當前時間,用于同步系統(tǒng)時間。
本文介紹在基于MT76x8的Openwrt系統(tǒng)下增加外部RTC(EPSON,RX8010SJ)及相應的驅(qū)動支持。
一個基于I2C串行接口的系統(tǒng)實時時鐘模塊,內(nèi)部包含一個32.768的晶體振蕩器。提供包括但不限于秒、分、時、星期、日、月、年等時間基準。
既然是基于I2C串行接口的模塊,那么第一步就需要在系統(tǒng)中添加I2C支持。
make menuconfig
Kernelmodules --->
I2Csupport --->
<*> kmod-i2c-core
<*> kmod-i2c-algo-bit
<*> kmod-i2c-gpio
<*> kmod-i2c-mt7628
Save && Exit.
make kernel_menuconfig
kernel_menuconfig
DeviceDrivers --->
<*> I2C support --->
<*> I2C device interface
I2CHardware Bus support --->
<*> Ralink I2C Controller
<*> MT7621/MT7628 I2C Controller
&i2c {
status = "okay";
};
同時需要注意I2C引腳是否作他用,如果另做他用,需要調(diào)整回來。
make manuconfig
menuconfig
Base system
Busybox
Miscellaneous Utilities --->
[*] i2cget (5.5 kb)
[*] i2cset (6.7 kb)
[*] i2cdump (7.1 kb)
[*] i2cdetect (7.1 kb)
編譯&& 下載到目標板。
經(jīng)過以上步驟,已經(jīng)完成了I2C驅(qū)動支持,至此已經(jīng)可以在/dev下看到i2c-0的節(jié)點。并且可用通過代碼或者指令訪問EPSON RX8010SJ芯片,進行簡單的設置和讀取時間。
查看I2C設備:
查看時間寄存器:
但這種使用非常復雜,接下來需要添加EPSONRX8010SJ相關的驅(qū)動,以便使用hwclock更簡單的訪問時鐘芯片。
Make kernel_menuconfig增加內(nèi)核對RTC模塊的支持
kernel_menucofig
Device Drivers
Real Time Clock
---Real Time Clock
[*] Set the RTC time based on NTP synchronization
[*]/sys/class/rtc/rtcN(sysfs)
[*] /proc/driver/rtc (procfs for rtcN)
[*] /dev/rtcN (character devices)
<*> Epson RX8010SJ
Save && Exit.
&i2c {
status = "okay";
rtc@32 {
compatible = "epson,rx8010";
reg = <0x32>;
};
};
其中0x32為EPSON RX8010SJ的I2C從機地址,而compatible字段,參考:內(nèi)核/driver/rtc/rtc-rx8010.c如下:
static const struct of_device_id rx8010_of_match[] = {
{ .compatible = "epson,rx8010" },
{ }
};
編譯&& 下載到目標板。
通過 hwclock指令操作。
在使用hwclock時可能會出現(xiàn)如下錯誤:
造成以上問題,可能是RTC芯片剛上電時,內(nèi)部時間非法,及通過驅(qū)動讀取到非法時間,導致調(diào)用驅(qū)動時傳入?yún)?shù)報錯。
此時需要通過寫入方式,將EPSON RX8010SJ內(nèi)部寄存器改為合法值,即將實時時鐘更新為系統(tǒng)時間。
再次通過hwclock指令讀取RTC時間,即可成功讀取到RTC(EPSON RX8010SJ)時間,如下圖:
當需要使用RTC更新系統(tǒng)時鐘時,即可簡單的使用指令:hwclock -s。執(zhí)行完此指令后,可通過date指令查看當前系統(tǒng)時間。
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多無線射頻模塊和無線通信技術資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進行了解,也可以直接撥打400電話咨詢技術專員!
相關閱讀:
7 X 24 銷售服務熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 南京辦事處葛經(jīng)理:17626012283
成都總部銷售經(jīng)理:
秦 科(無線模塊):18884314654 馮子恒(無線模塊):18884314734
蔡友銀(無線模塊):13882211021 葛宇龍(通信設備):19138800613
胡兵(外貿(mào)銷售經(jīng)理):18584911141、 [email protected]
業(yè)務郵箱:[email protected] 全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號B5棟(前臺座機:028-61543675)
?? 成都億佰特電子科技有限公司【版權所有】 蜀ICP備13019384號