当前位置: 首页 > news >正文

万网网站建设方案书 备案网络规划设计师2022论文5月

万网网站建设方案书 备案,网络规划设计师2022论文5月,SSC网站开发H5,网站开发文件综述一.RTC时间框架概述 RTC#xff08;Real Time Clock#xff09;是一种用于计时的模块#xff0c;可以是再soc内部#xff0c;也可以是外部模块。对于soc内部的RTC#xff0c;只需要读取寄存器即可#xff0c;对于外部模块的RTC#xff0c;一般需要使用到I2C接口进行读取…一.RTC时间框架概述 RTCReal Time Clock是一种用于计时的模块可以是再soc内部也可以是外部模块。对于soc内部的RTC只需要读取寄存器即可对于外部模块的RTC一般需要使用到I2C接口进行读取。至于如何供电都是可以在主电源断开后使用纽扣电源辅助供电达到设备断电仍然可以计时的效果。 对于soc内部的RTC需要额外的晶振而外部模块的RTC不需要。 在linux内核里rtc是一个字符设备内核实现了一个通用的字符设备层提供给应用层系统调用给底下的RTC硬件驱动层提供注册接口。每款RTC需要编写对应的硬件驱动填写读取和设置时间的回调函数并且注册进系统。从上到下分别是应用层、rtc通用字符设备层、rtc底层驱动层。 Linux 内核中,RTC 驱动的结构图如下所示, 可以分为三个层次: 接口层负责向用户空间提供操作的结点以及相关接口。 • RTC Core, 为rtc 驱动提供了一套API, 完成设备和驱动的注册等。 • RTC 驱动层负责具体的RTC 驱动实现如设置时间、闹钟等设置寄存器的操作。 二.RTC设备驱动 申请rtc_deviceRTC注册函数 struct rtc_device *devm_rtc_device_register(struct device *dev, const char *name, const struct rtc_class_ops *ops, struct module *owner)这个接口会自动帮你从设备树的aliases节点获取rtcx的序号如果没有填写就自动分配一个序号。 注销rtc_deviceRTC注销函数 void devm_rtc_device_unregister(struct device *dev, struct rtc_device *rtc)内核RTC框架提供了3中数据结构 struct rtc_time、struct rtc_device和struct rtc_device_ops结构其定义如下 struct rtc_time {int tm_sec, tm_min, tm_hour, tm_mday, tm_mon, tm_year/*从1900开始*/;int tm_wday, tm_yday, tm_isdst/*夏令时标志*/; };struct rtc_device {struct device dev;struct module *owner;int id; // 由内核提供给rtc设备的全局索引/dev/rtcidchar name[RTC_DEVICE_NAME_SIZE];const struct rtc_class_ops *ops; // 一组操作例如 设置/读取 时间/闹钟struct mutex ops_lock;struct cdev char_dev;ulong flags;ulong irq_data;spinlock_t irq_lock;wait_queue_head_t irq_queue;struct rtc_task *irq_task;spinlock_t irq_task_lock;int irq_freq;int max_user_freq;struct work_struct irqwork; };struct rtc_class_ops {int (*open)(struct device *dev); // 用户在设备/dev/rtc1上调用read时的callbackint (*release)(struct device *dev);// 用户在设备/dev/rtc1上调用close时的callbackint (*ioctl)(struct device *dev, uint cmd, ulong arg); // 用户在设备/dev/rtc1上调用ioctl时的callbackint (*read_time)(struct device *dev, struct rtc_time *tm); // rtc内核的回调函数int (*set_time)(struct device *dev, struct rtc_time *tm);int (*read_alarm)(struct device *dev, struct rtc_wkalrm *alarm);int (*set_alarm)(struct device *dev, struct rtc_wkalrm *alarm);int (*read_callback)(struct device *dev, int data); // 用户在设备/dev/rtc1上调用read时的callbackint (*alarm_irq_enable)(struct device *dev, uint enabled); };// rtc模块提供了宏to_rtc_device(d)把 struct device结构转变为struct rtc_device{}结构 读取和设置时间  驱动程序负责提供读取和设置设备时间的函数。RTC总是以二进制编码的格式存储/恢复时间其中每个4位表示0~9而非0~F内核提供bcd2bin()和bin2bcd()两个转换的宏。提供辅助函数rtc_valid_tm(struct rtm_time *)用于确定struct rtc_time{}表示合法的时间。 函数使用示例 static int foo_rtc_read_time(struct device *dev, struct rtc_time *tm) {struct foo_regs regs;int error foo_device_read(dev, regs, 0, sizeof(regs));if (error) return error;tm-tm_sec bcd2bin(regs.seconds);tm-tm_min bcd2bin(regs.minutes);tm-tm_hour bcd2bin(regs.cent_hours);tm-tm_mday bcd2bin(regs.date);tm-tm_wday bcd2bin(regs.day) - 1;tm-tm_mon bcd2bin(regs.month) - 1;tm-tm_year bcd2bin(regs.years) 100; // 设备的epoch是2000加回到1900return rtc_valid_tm(tm); }static int foo_rtc_set_time(struct device *dev, struct rtc_time *tm) {struct foo_regs regs;regs.seconds bin2bcd(tm-tm_sec);regs.minutes bin2bcd(tm-tm_min);regs.cent_hours bin2bcd(tm-tm_hour);regs.day bin2bcd(tm-tm_wday 1);regs.date bin2bcd(tm-tm_mday);regs.month bin2bcd(tm-tm_mon 1);regs.cent_hours | BQ32K_CENT;regs.years bin2bcd(tm-tm_year % 100);return write_into_device(dev, regs, 0, sizeof(regs)); } 三.RTC用户空间 rtc在sys中拥有一个类可以查看一些信息。 name 查看rtc型号 range 查看rtc支持的起始时间和结束时间 date 查看rtc当前日期 time 查看rtc当前时间 since_epoch 查看当前rtc时间距离epoch经历了多少秒epoch是一个时间点1970 年 1 月 1 日凌晨零点零分零秒 hctosys 这个rtc是否在上电时候同步设置系统时间 max_user_freq 可读可写用于查看和设置RTC周期中断的最大频率一般是1hz offset 查看和设置当前的rtc校准精度的偏移值和回调read_offset、set_offset有关注意是ppb为单位而且是可正可负 wakealarm 查看和设置闹钟时间有的rtc会被隐藏起来这个属性sys属性如何隐藏可以参考rtc_attr_group、rtc_attr_is_visible、rtc_does_wakealarm这三个。 在注册rtc驱动的时候会自动在proc注册一个文件/proc/driver/rtc此文件只可以读
http://www.pierceye.com/news/868268/

相关文章:

  • 网站开发工具的在南海建设工程交易中心网站
  • 广西建设厅官方网站文件通知wordpress默认字体颜色
  • 品牌网站建设联系方式网页截图快捷键是哪个键
  • 现在网站一般都是什么语言做的软件著作权证书
  • html5在网站建设中的本地环境wordpress修改php.ini
  • wap电影网站建设宁波谷歌seo推广
  • 中国建设银官方网站WordPress国内开发主题
  • 芜湖seo网站优化域名邮箱免费注册
  • 做宠物网站需要实现什么功能成都建工网站
  • jsp购物网站开发 论文海口澄迈县建设局网站
  • 单页销售网站制作制作花都区网站建设
  • 如何建立自己的购物网站discuz手机模板
  • 网站被刷流量怎么办wordpress fold主题
  • 做的新网站网上搜不到临沂免费做网站
  • 高端大气的网站制作建筑人才网下载
  • 如何快速提升网站关键词排名综合服务平台一站式服务平台网站开发
  • 阿土伯 是做网站的吗建设厅国网查询网站
  • 天长哪个广告公司做网站中国菲律宾汇率换算
  • 动漫在线制作网站wordpress get_template_part
  • 肇庆高端品牌网站建设住建部网站资质查询中宏建设集团
  • 扁平化网站模板下载莱西网站建设哪家好
  • 用vis做的简单网站网站建设需求方案pdf
  • 怎么免费做网站视频教学沈阳网站备案
  • 徐州有哪些网站制作公司太原住房和城乡建设部网站
  • 专门做摩托车的网站注册域名阿里云
  • 做个简单的网站建站公司费用
  • 网站建设举措网站免费建站方法
  • 遵义市双控体系建设网站wamp wordpress安装
  • 厦门的网站建设公司龙岗网站-建设深圳信科
  • 上海网站建设q.479185700強成都上界品牌设计事务所