rtc_class = class_create(THIS_MODULE, "rtc"); if (IS_ERR(rtc_class)) { printk(KERN_ERR "%s: couldn't create class\n", __FILE__); return PTR_ERR(rtc_class); } rtc_class->suspend = rtc_suspend; rtc_class->resume = rtc_resume; rtc_dev_init(); rtc_sysfs_init(rtc_class); ...
1、rtc_class_ops填充 驱动主要工作是填充 rtc_class_ops结构体,结构体描述了RTC芯片能够提供的所有操作方式: struct rtc_class_ops { int (*open)(struct device *); void (*release)(struct device *); int (*ioctl)(struct device *, unsigned int, unsigned long); int (*read_time)(struct device ...
->schedule_work--调度irqwork执行rtc_timer_do_work()函数。 rtc子系统对具体rtc设备的操作通过stm32_rtc_ops执行: staticconststructrtc_class_ops stm32_rtc_ops ={ .read_time=stm32_rtc_read_time, .set_time=stm32_rtc_set_time, .read_alarm=stm32_rtc_read_alarm, .set_alarm=stm32_rtc_set_...
structrtc_device *rtc_device_register(constchar*name,structdevice *dev,conststructrtc_class_ops *ops,structmodule *owner){structrtc_device*rtc;structrtc_wkalrmalrm;intid, err;// 1、Linux支持多个RTC设备,所以需要为每一个设备分配一个ID// 对应与/dev/rtc0,/dev/rtc1,,,/dev/rtcNid = ida_si...
driver/rtc/class.c: 此文件向linux内核驱动模型注册了一个类RTC, 同时为底层的RTC驱动提供了注册/注销RTC接口。同时实现了RTC相关的PM操作。 driver/rtc/rtc-dev.c: 将各种各样的RTC设备抽象成一个字符设备,同时提供文件操作函数集。 driver/rtc/rtc-sysfs.c: 用户可以通过sysfs文件系统方便快捷的操作rtc设备。
1、rtc_class_ops 填充 驱动主要工作是填充 rtc_class_ops结构体,结构体描述了RTC芯片能够提供的所有操作方式: structrtc_class_ops{int(*open)(struct device *);void(*release)(struct device *);int(*ioctl)(struct device *,unsignedint,unsignedlong);int(*read_time)(struct device *, struct rtc_time...
首先rtc设备肯定是struct device的子类;系统中有多个RTC设备的时候,每个设备要有自己的ID和name;接下来的rtc_class_ops是一个非常关键的变量,它包含了设置时间、读取时间、设置闹钟,读取闹钟等回调函数,设备驱动中就是通过这些接口屏蔽硬件差异的,这会是实现设备驱动的关键部分;其它还有跟timer相关的变量、同步与互斥...
schedule_work(&rtc->irqwork); returnerr; } 5、rtc在sysfs文件系统中的呈现 之前曾建立过名为rtc的class: rtc_class = class_create(THIS_MODULE,"rtc"); 查看之: # ls /sys/class/rtc/ rtc0 # ls -l /sys/class/rtc/ lrwxrwxrwx1root root02021-01-0112:00rtc0 -> ../../devices/platform...
在瑞芯微的系统中,安卓部分程序其实最终也是依赖**/sys/class/rtc/rtc0** 下的文件节点实现时间管理功能的。 一、Linux 时间操作命令 :date、hwclock Linux时间有两个: 系统时间(Wall Time), RTC时间。 1.系统时间(WT): 由Linux系统软件维持的时间,通过Linux命令date查看: ...
1.RTC HW driver完成注册之后,rtc子系统会在/dev下自动创建新的rtc字符设备,附上rtc_device_register源码,路径/linux-4.4/drivers/rtc/class.c /** * rtc_device_register - register w/ RTC class * @dev: the device to register * * rtc_device_unregister() must be called when the class device is...