色猫咪av在线网址_91精品国产福利在线观看雪梨还会玩转热点_丁香花的视频免费观看_国产手机在线A∨免费视频_十八禁av无码免费网站APP_综合色一区二区亚洲_日韩精品小电影_漂亮人妻熟睡中被公侵犯_全新成人高清无码片_高级厕所偷窥白领美女嘘嘘

當前位置: 首頁 >應用方案 >技術應用 >

OpenWrt 19.07增加RTC(EPSON, RX8010SJ)驅(qū)動詳解

RTC簡介:

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ū)動支持。

EPSON,RX8010SJ:

一個基于I2C串行接口的系統(tǒng)實時時鐘模塊,內(nèi)部包含一個32.768的晶體振蕩器。提供包括但不限于秒、分、時、星期、日、月、年等時間基準。

既然是基于I2C串行接口的模塊,那么第一步就需要在系統(tǒng)中添加I2C支持。

第一步、添加I2C支持

1添加模塊支持

make menuconfig

   Kernelmodules --->

       I2Csupport --->

           <*> kmod-i2c-core

           <*> kmod-i2c-algo-bit

           <*> kmod-i2c-gpio

           <*> kmod-i2c-mt7628

1  增加RTC驅(qū)動

   Save && Exit.

2、添加內(nèi)核支持

make kernel_menuconfig

kernel_menuconfig

   DeviceDrivers --->

       <*> I2C support --->

       <*> I2C device interface

2  增加RTC驅(qū)動

       I2CHardware Bus support --->

           <*> Ralink I2C Controller

<*> MT7621/MT7628 I2C Controller

3、修改dts文件以打開I2C外設功能

&i2c {

   status = "okay";

};

同時需要注意I2C引腳是否作他用,如果另做他用,需要調(diào)整回來。

4、添加I2C常用工具集

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設備:

3  增加RTC驅(qū)動

查看時間寄存器:

4  增加RTC驅(qū)動

但這種使用非常復雜,接下來需要添加EPSONRX8010SJ相關的驅(qū)動,以便使用hwclock更簡單的訪問時鐘芯片。

第二步、添加EPSON RX8010SJ驅(qū)動

1、增加內(nèi)核模組配置

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

5  增加RTC驅(qū)動

Save && Exit.

2、修改dts文件,適配芯片

&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)如下錯誤:

6  增加RTC驅(qū)動

造成以上問題,可能是RTC芯片剛上電時,內(nèi)部時間非法,及通過驅(qū)動讀取到非法時間,導致調(diào)用驅(qū)動時傳入?yún)?shù)報錯。

7  增加RTC驅(qū)動

此時需要通過寫入方式,將EPSON RX8010SJ內(nèi)部寄存器改為合法值,即將實時時鐘更新為系統(tǒng)時間。

8  增加RTC驅(qū)動

再次通過hwclock指令讀取RTC時間,即可成功讀取到RTC(EPSON RX8010SJ)時間,如下圖:

9  增加RTC驅(qū)動

當需要使用RTC更新系統(tǒng)時鐘時,即可簡單的使用指令:hwclock -s。執(zhí)行完此指令后,可通過date指令查看當前系統(tǒng)時間。


今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多無線射頻模塊和無線通信技術資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進行了解,也可以直接撥打400電話咨詢技術專員!


相關閱讀:

1、系統(tǒng)與服務管理器systemd詳解

2、基于STM32F103+MAX4003的射頻功率表制作

3、Mosquitto詳解和基于Mosquitto實現(xiàn)MQTT通訊教程  


億佰特官網(wǎng) 4000-330-990

https://www.wjx.cn/jq/84863372.aspx