本文来源电子发烧友社区,作者:voidpbq, 帖子地址:https://bbs.elecfans.com/jishu_2299996_1_1.html
一、前言
本章简单的介绍下开发板使用的rtc电路以及如何测试。
二、硬件分析
rtc电路
G2-L gpio
三、 代码分析
1. makefile
OKG2L-linux-sdk10OKG2L-linux-kerneldriversrtcMakefile
ccflags-$(CONFIG_RTC_DEBUG):= -DDEBUG
obj-$(CONFIG_RTC_LIB) += rtc-lib.o
obj-$(CONFIG_RTC_HCTOSYS) += hctosys.o
obj-$(CONFIG_RTC_SYSTOHC) += systohc.o
obj-$(CONFIG_RTC_CLASS) += rtc-core.o
obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o
查看makefile可以看到对应的编译情况。
OKG2L-linux-sdk10OKG2L-linux-kerneldrivers
obj-$(CONFIG_RTC_LIB) += rtc/
配置config路径
OKG2L-linux-sdk10OKG2L-linux-kernelarcharm64configsOKG2L-C_defconfig
默认是打开的
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_PCF8563=y
CONFIG_RTC_DRV_RX8581=y
我没用看到如下三个配置定义,存疑。
CONFIG_RTC_LIB=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_SYSTOHC=y
2. dtsi
dtsi路径:OKG2L-linux-sdk10OKG2L-linux-kernelarcharm64bootdtsrenesasOKG2L-C.dtsi
&i2c2 {
pinctrl-0 = <&i2c2_pins>;
pinctrl-names = "default";
status = "okay";
pcf8563:rtc@51 {
compatible =
"nxp,pcf8563";
reg = <0x51>;
status = "okay";
};
wm8960: codec[url=home.php?mod=space&uid=105298]@1a[/url] {
compatible =
"wlf,wm8960";
#sound-dai-cells = <0>;
reg = <0x1a>;
};
};
3. 驱动
OKG2L-linux-sdk10OKG2L-linux-kerneldriversrtcrtc-
pcf8563.c
#ifdef CONFIG_OF
static const struct of_device_id pcf8563_of_match[] = {
{ .compatible = "nxp,pcf8563" },
{}
};
MODULE_DEVICE_TABLE(of, pcf8563_of_match);
#endif
dtsi的compatible 会匹配驱动中of_device_id
4. 代码分析
设备名称为0,检索dts中的rtc节点
查看rtc设备
root@okg2l:/dev# ls -l rtc
rtc rtc0
root@okg2l:/dev# ls -l rtc0
crw------- 1 root root 253, 0 Aug 16 20:36 rtc0
root@okg2l:/dev# ls -l rtc
lrwxrwxrwx 1 root root 4 Aug 16 20:36 rtc -> rtc0
在dev目录下可以查看到rtc信息,其中rtc是一个link文件指向rtc0
四、测试
【命令】date
【命令】date -s "time"
【命令】hwclock -s
【命令】hwclock -w
五、小结
使用屏幕测试了rtc,只能显示时间,应用按钮太小了还是什么原因,无法实现设置和调整时间。
-
飞凌
+关注
关注
0文章
134浏览量
16095 -
开发板试用
+关注
关注
3文章
301浏览量
2039
发布评论请先 登录
相关推荐
评论