国产精品一区在线观看你懂的,三级电影网站免费观看,日韩黄色网,大黄网站在线观看

當(dāng)前位置: 首頁(yè) >應(yīng)用方案 >技術(shù)應(yīng)用 >

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

RTC簡(jiǎn)介:

RTC指實(shí)時(shí)時(shí)鐘,主要作用是為電子設(shè)備提供精準(zhǔn)的時(shí)間基準(zhǔn)。RTC分為兩類,片內(nèi)RTC和外部(掛)RTC。

? 內(nèi)部RTC

集成在芯片內(nèi)部,RTC模塊和時(shí)鐘配置系統(tǒng)一般處于后備區(qū)域,即在系統(tǒng)復(fù)位或從待機(jī)模式喚醒后,RTC的設(shè)置和時(shí)間維持不變。

? 外部RTC

獨(dú)立于主芯片的IC,也稱為時(shí)鐘芯片。通常使用獨(dú)立電源,一般為紐扣電池。在系統(tǒng)斷電后仍能自動(dòng)運(yùn)轉(zhuǎn),維系統(tǒng)更新實(shí)時(shí)時(shí)間。當(dāng)系統(tǒng)上電后,通過(guò)相應(yīng)的接口從外部RTC讀取當(dāng)前時(shí)間,用于同步系統(tǒng)時(shí)間。

本文介紹在基于MT76x8的Openwrt系統(tǒng)下增加外部RTC(EPSON,RX8010SJ)及相應(yīng)的驅(qū)動(dòng)支持。

EPSON,RX8010SJ:

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

既然是基于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ū)動(dòng)

   Save && Exit.

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

make kernel_menuconfig

kernel_menuconfig

   DeviceDrivers --->

       <*> I2C support --->

       <*> I2C device interface

2  增加RTC驅(qū)動(dòng)

       I2CHardware Bus support --->

           <*> Ralink I2C Controller

<*> MT7621/MT7628 I2C Controller

3、修改dts文件以打開I2C外設(shè)功能

&i2c {

   status = "okay";

};

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

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)

編譯&& 下載到目標(biāo)板。

經(jīng)過(guò)以上步驟,已經(jīng)完成了I2C驅(qū)動(dòng)支持,至此已經(jīng)可以在/dev下看到i2c-0的節(jié)點(diǎn)。并且可用通過(guò)代碼或者指令訪問(wèn)EPSON RX8010SJ芯片,進(jìn)行簡(jiǎn)單的設(shè)置和讀取時(shí)間。

查看I2C設(shè)備:

3  增加RTC驅(qū)動(dòng)

查看時(shí)間寄存器:

4  增加RTC驅(qū)動(dòng)

但這種使用非常復(fù)雜,接下來(lái)需要添加EPSONRX8010SJ相關(guān)的驅(qū)動(dòng),以便使用hwclock更簡(jiǎn)單的訪問(wèn)時(shí)鐘芯片。

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

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

Make kernel_menuconfig增加內(nèi)核對(duì)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ū)動(dòng)

Save && Exit.

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

&i2c {

   status = "okay";

       rtc@32 {

       compatible = "epson,rx8010";

       reg = <0x32>;

   };

};

其中0x32為EPSON RX8010SJ的I2C從機(jī)地址,而compatible字段,參考:內(nèi)核/driver/rtc/rtc-rx8010.c如下:

static const struct of_device_id rx8010_of_match[] = {

   { .compatible = "epson,rx8010" },

   { }

};

編譯&& 下載到目標(biāo)板。


步、時(shí)間讀取和寫入

通過(guò)   hwclock指令操作。

在使用hwclock時(shí)可能會(huì)出現(xiàn)如下錯(cuò)誤:

6  增加RTC驅(qū)動(dòng)

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

7  增加RTC驅(qū)動(dòng)

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

8  增加RTC驅(qū)動(dòng)

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

9  增加RTC驅(qū)動(dòng)

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


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


相關(guān)閱讀:

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

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

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


點(diǎn)擊撥打: 億佰特官網(wǎng) 4000-330-990