Linux设备驱动 -- RTC驱动移植DS1339
查看原理图RTC芯片采用的是DS1339芯片这是达拉斯半导体公司的一款RTC芯片使用I2C接口。芯片接在RK3568的I2C5。Linux内核支持DS1339检索linux内核是否支持DS1339芯片驱动。通过搜索可知到Linux系统内核中已有达拉斯DS1339的驱动DS13xx这一系列芯片都是使用同一个驱动。内核参考文档kernel/Documentation/rtc.txt、kernel/Documentation/devicetree/bindings/rtc/rtc-ds1307.txt驱动源码位置kernel/drivers/rtc/rtc-ds1307.c驱动注册和匹配staticconststructof_device_idds1307_of_match[]{// ...{.compatibledallas,ds1339,.data(void*)ds_1339},// ...};staticstructi2c_driverds1307_driver{.driver{.namertc-ds1307,.of_match_tableof_match_ptr(ds1307_of_match),.pmds1307_pm_ops,},.probeds1307_probe,.removeds1307_remove,.id_tableds1307_id,};module_i2c_driver(ds1307_driver);配置内核使能配置使能-Device Drivers-Real TimeClock(RTC_CLASS[y])-Dallas/Maxim DS1307/37/38/39/40/41,ST M41T00,EPSON RX-8025,ISL12057(RTC_DRV_DS1307[y])CONFIG_RTC_DRV_DS1307y编写设备树节点i2c5{statusokay;pinctrl-0i2c5m0_xfer;rtc_ds1339:rtc68{compatibledallas,ds1339;reg0x68;trickle-resistor-ohms2000;statusokay;};pinctrl-0属性将i2c5对应的引脚配置为i2c功能。compatible属性其值必须是dallas,ds1339否则无法和内核中已有的驱动匹配。reg属性ds1339 rtc芯片的i2c地址。trickle-resistor-ohms用于配置 RTC 芯片涓流充电电路的限流电阻阻值单位欧姆核心作用是限制对 RTC 备用充电电池的充电电流防止过充仅适用于支持涓流充电的 RTC 芯片如 DS1339取值需匹配芯片手册要求如 DS1339 常用 2000/4000/8000 等无充电需求时可省略或设为 0。编写配置好设备树节点重新编译内核。用户空间访问# 读取当前时间cat/sys/class/rtc/rtc0/time# 读取日期cat/sys/class/rtc/rtc0/date# 设置时间 (格式: HH:MM:SS)echo12:34:56/sys/class/rtc/rtc0/time# 设置日期 (格式: YYYY-MM-DD)echo2024-01-01/sys/class/rtc/rtc0/date
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2496832.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!