14 * Rather than expecting every RTC to implement "don't care" 15 * for day/month/year fields, just force the alarm to have 16 * the right values for those fields. 17 * 18 * RTC_WKALM_SET should be used instead. Not only does it 19 * eliminate the need for a separate RTC_AIE...
rtcsetYYYY-MM-DDThh:mm:ss [rtc] rtc wkalmrd [rtc] rtc wkalmset YYYY-MM-DDThh:mm:ss [rtc] rtc almread [rtc] rtc almset YYYY-MM-DDThh:mm:ss [rtc] rtc aieon [rtc] rtc aieoff [rtc] 如下是设置Alarm的流程: rtc rd--读取时间。 rtc aieon--打开aie中断。 rtc almset 2024-01-18...
1caseRTC_ALM_SET:2mutex_unlock(&rtc->ops_lock);34if(copy_from_user(&alarm.time, uarg,sizeof(tm)))5return-EFAULT;67alarm.enabled =0;8alarm.pending =0;9alarm.time.tm_wday = -1;10alarm.time.tm_yday = -1;11alarm.time.tm_isdst = -1;1213/*RTC_ALM_SET alarms may be up to ...
不同的MCU,会有区别 */staticrt_err_trtc_alarm_time_set(structrt_rtc_device*p_dev){am_hal_rtc_time_trtc_Time={0};time_ttimestamp=0;structtm*p_tm;if(p_dev->wkalarm.enable){timestamp=get_rtc_timestamp();p_tm=localtime(×tamp);if(p_tm->tm_year<100){return-RT_ERROR;}rtc_T...
(3) RTC_WKALM_SET,RTC_WKALM_RD 。。。 RTCs 使用一个功能更强大的api,他可以处理超过24小时的报警时间。这个API支持设置更长的报警时间,支持单次请求的IRQ中断。 (4) RTC_UIE_ON,RTC_UIE_OFF ... 如果RTC提供IRQ,他可能也提供每秒更新的IRQ中断。如果需要,RTC结构可以模仿这个机制。
rtc_dev_ioctl函数对其他的命令处理都是类似的,比如RTC_ALM_READ命令会通过rtc_read_alarm函数获取到闹钟值,而rtc_read_alarm函数经过层层调用,最终会调用rtc_class_ops中的read_alarm函数来获取闹钟值。 至此,Linux内核中RTC驱动调用流程就很清晰了,如下图所示:...
76int(*set_time)(struct device *,struct rtc_time *);77int(*read_alarm)(struct device *,struct rtc_wkalrm *);78int(*set_alarm)(struct device *,struct rtc_wkalrm *);79int(*proc)(struct device *,struct seq_file *);80int(*set_mmss64)(struct device *,time64_t secs);81int(*set...
RTC_WKALM_SET Some RTCs support a more powerful alarm interface, using these ioctls to read or write the RTC's alarm time (respectively) with this structure: struct rtc_wkalrm { unsigned char enabled; unsigned char pending; struct rtc_time time; }; The enabled flag is used to enable or...
(3) RTC_WKALM_SET,RTC_WKALM_RD 。。。 RTCs 使用一个功能更强大的api,他可以处理超过24小时的报警时间。这个API支持设置更长的报警时间,支持单次请求的IRQ中断。 (4) RTC_UIE_ON,RTC_UIE_OFF ... 如果RTC提供IRQ,他可能也提供每秒更新的IRQ中断。如果需要,RTC结构可以模仿这个机制。
* RTC_ALM_SET, RTC_ALM_READ, RTC_WKALM_SET, RTC_WKALM_RD 调用set_alarm/read_alarm * RTC_IRQP_SET, RTC_IRQP_READ 调用irq_set_freq来实现。如果不支持修改中断频率,就不要定义这个函数。 * RTC_PIE_ON, RTC_PIE_OFF 通过irq_set_state来实现。