关linux的RTC驱动

Linux内核的时钟中断机制(2) 7.2 Linux内核对RTC的编程 MC146818 RTC芯片(或其他兼容芯片,如DS12887)可以在IRQ8上产生周期性的中断,中断的频率在2HZ~8192HZ之间。与MC146818 RTC对应的设备驱动程序实现在include/linux/rtc.h和drivers/char/rtc.c文件中,对应的设备文件是/dev/rtc(major=10,minor=135,只读字符设备)。因此 阅读详情

Linux的RTC驱动相对还是比较简单的,可以将它作为一个普通的字符型设备,或者一个misc设备,也可以是一个平台设备,这都没有关系,主要还是对rtc_ops这个文件操作结构体中的成员填充,这里主要涉及到两个方面比较重要:

 

1. 在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。

   系统时钟的设定就是我们常用的date命令,而我们写的RTC驱动就是为硬件时钟服务的,它有属于自己的命令hwclock,因此使用date命令是不可能调用到我们的驱动的(在这点上开始把我郁闷到了,写完驱动之后,傻傻的用date指令来测试,当然结果是什么都没有),我们可以通过hwclock的一些指令来实现更新rtc时钟——也就是系统时钟和硬件时钟的交互。

 

hwclock –r         显示硬件时钟与日期

hwclock –s         将系统时钟调整为与目前的硬件时钟一致。

hwclock –w        将硬件时钟调整为与目前的系统时钟一致。

 

2. 第二点就是内核空间和用户空间的交互,在系统启动结束,我们实际是处在用户态,因此我们使用指令输入的内容也是在用户态,而我们的驱动是在内核态的,内核态和用户态是互相不可见的,因此我们需要特殊的函数来实现这两种形态的交互,这就是以下两个函数:

copy_from_user(从用户态到内核态)

copy_to_user   (从内核态到用户态)

当然这两个函数需要我们在内核驱动中实现。

RTC最基本的两个命令就是设置时间,读取时间。

 

设置时间——设置时间会调用系统默认的RTC_SET_TIME,很显然就是处在用户态的用户将自己所要设置的时间信息传递给内核态,

case RTC_SET_TIME:

  {

     struct rtc_time rtc_tm;

     if (copy_from_user(&rtc_tm, (struct rtc_time*)arg, sizeof(struct rtc_time)))

                     return -EFAULT;

  sep4020_rtc_settime(&rtc_tm);//把用户态得到的信息传递给设置时间这个函数

     return 0;

      }

读取时间——设置时间会调用系统默认的RTC_RD_TIME,很显然就是需要通过内核态的驱动将芯片时钟取出,并传递给用户态

case RTC_RD_TIME: /* Read the time/date from RTC */

       {

              sep4020_rtc_gettime(&septime);//通过驱动的读函数读取芯片时钟

              copy_to_user((void *)arg, &septime, sizeof septime);//传递给用户态

       }

Linux RTC 驱动框架 实时时钟(Real-Time Clock,简称 RTC)是一种能够持续记录时间的电子设备。它通常用于计算机、嵌入式系统和其他需要准确时间记录的设备中。RTC 可以在系统关机或断电的情况下继续运行,因此即使在系统重启后也能保持准确的时间。class.c:为底层驱动提供 register 与 unregister 接口用于 RTC 设备的注册/注销。初始化 RTC设备结构、sysfs、proc;:提供用户程序与 RTC 的接口函数;dev.c:将 RTC设备抽象为通用的字符设备,提供文件操作函数( 阅读详情

相关推荐

Linux驱动编程 - RTC子系统

Linux中RTC子系统

hinewcc的博客 1541

imx6ull-驱动开发篇40——Linux RTC 驱动简介

本文介绍了Linux下RTC驱动程序的开发方法,详细解析了RTC驱动从底层硬件操作到上层接口的实现机制。

m0_62228566的博客 1096

linux RTC设备驱动

一. RTC设备结构体 struct rtc_device { struct device dev; //设备文件 struct module *owner; //模块所有者 int id; //RTC次设备 char name[RTC_DEVICE_NAME_SIZE]; //RTC设备名 const struct rtc_class_ops *ops; //RTC

paomadi的专栏 3443

linux应用程序中设置RTC

接触过Linux的朋友们都知道,linux内部的时间分为系统时间和硬件时间。系统时间一般是在系统启动时读一下RTC,然后就依靠定时器维护的时间,这个时间的是掉电不保存的。而 硬件时间通常指的就是RTC,只要RTC有电池供电,这个时间是可以掉电保存的。系统时间在应用程序中,可以用gettimeofday() / setttimeofday() 读取和设置。 硬件时间在终端中可以通过如下命令设置:

wofeile880_jian的博客 3914

BL5372 RTC linux驱动

硬件 BL5372 RTC https://www.belling.com.cn/product_info.html?id=65 驱动 /* * An I2C driver for Beilin BL5372 RTC */ #include <linux/i2c.h> #include <linux/bcd.h> #include <linux/rtc.h> #include <linux/slab.h> #include <linux/mod.

weixin_43479963的博客 3214

Linux RTC驱动深入解析

Linux内核中的RTC驱动是一个复杂但有趣的领域,它要求开发者具备对Linux内核、设备驱动编程和硬件操作的深入理解。通过遵循Linux内核提供的RTC框架和接口,可以为多种硬件提供可靠的时间管理解决方案。希望本文能为那些对Linux RTC驱动感兴趣的开发者提供一个清晰的指导。在此基础上,读者可以进一步探讨如何处理时区更改、夏令时调整,以及如何通过网络时间协议(NTP)与RTC协同工作以确保系统时间的准确性。此外,对于高级用例,可以考虑实现更复杂的功能,比如闹钟中断处理和周期性更新。

小灰灰的博客 2243

Linux内核rtc驱动分析

参考资料:韦东山第二期经典视频教程 1、rtc内核驱动分析 linux内核中的rtc驱动位于drivers/rtc下,里面有许多开发平台的RTC驱动,我们这里是以S3C24xx为主,所以它的RTC驱动为rtc-s3c.c 1.1 ./drivers/rtc/rtc-s3c.c 首先进入入口函数,里面注册了一个s3c2410-rtc的平台设备驱动,当内核匹配到s3c2410-rtc平台设备,就会调用.probe函数s3c_rtc+probe: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直

Leon的博客 1178

Linux驱动开发: Linux下RTC实时时钟驱动

Linux内核版本: 3.5 1.1 Linux下RTC时间的读写分析 1.1.1 系统时间与RTC实时时钟时间 Linux系统下包含两个时间:系统时间和RTC时间。 系统时间:是由主芯片的定时器进行维护的时间,一般情况下都会选择芯片上最高精度的定时器作为系统时间的定时基准,以避免在系统运行较长时间后出现大的时间偏移。特点是掉电后不保存。 RTC时间:是指系统中包含的RTC芯片内部所维护的时间。RTC芯片都有电池+系统电源的双重供电机制,在系统正常工作时由系统供电,在系统掉电后由电池进行供电。因此

4429

嵌入式linux系统时间和RTC时间异常解决

给RTC时钟芯片装上纽扣电池,启动系统进入终端。#再设置硬件时钟RTC,同步系统时间。

weixin_44470384的博客 734

细节增强卷积DEConv详解及代码复现

这种预训练模型能够捕捉图像的基本特征,为后续的端到端训练提供良好的初始参数。例如,在RESIDE和RESIDE-6K数据集上的实验结果表明,使用MSPLCK模块的MixDehazeNet-L模型在RESIDE-IN数据集上首次超过了42dB的PSNR指标,且在所有数据集上均优于先前的方法。例如,在RESIDE和RESIDE-6K数据集上的实验结果表明,使用MSPLCK模块的MixDehazeNet-L模型在RESIDE-IN数据集上首次超过了42dB的PSNR指标,且在所有数据集上均优于先前的方法。

hasakie的博客 1910

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

POST 接口,将参数拼接到 URL 上,而不是将其作为表单数据发送

pig_ning的博客 3146

Linux RTC驱动笔记

本文介绍了Linux系统中的RTC(实时时钟)驱动相关知识。主要内容包括:RTC的基本概念与分类(内部RTC和外部RTC的优缺点);迅为RK3568/RK3588开发板上的RTC外设电路设计分析;Linux RTC子系统的三层架构(用户空间、设备驱动层和硬件层);最后以RX8010芯片为例,分析了其设备树配置和内核驱动实现,重点解读了驱动初始化、中断处理和时间设置等关键代码流程。文章为嵌入式开发者提供了RTC驱动的完整技术参考。

yan1139698896的博客 2603

使用 AFL++ 对 IoT 二进制文件进行模糊测试 - 第一部分

American fuzzy lop 是一款面向安全的模糊测试器,它采用一种新型的编译时插桩和遗传算法,可以自动发现干净、有趣的测试用例,从而触发目标二进制文件中新的内部状态。这显著提高了模糊测试代码的功能覆盖率。AFL 的地址是它已经有一段时间没有更新了。虽然 AFL 仍然运行良好,但有一个新项目 AFL++,它是 AFL 的一个分支,包含许多改进和新功能。AFL++ 的地址是,其源代码位于。在本文中,我们将研究如何使用 AFL++ 对 IoT 二进制文件进行模糊测试。

技术超强的网络安全平台 1088

Linux驱动开发之RTC

编写应用程序对HYM8563的RTC设备进行了设置时间以及读取当前RTC时间的实验。

woaidandanhou的博客 1067

详解APM的开方控制器sqrt_controller

前言 前面说过,sqrt_controller是对P项进行整定用途的,目的就是让P项的控制响应“软”下来,实际上就是一个经过改进的P控制器。读懂了sqrt_controller,那么你对APM的P控制器就了解得差不多了。 仅讨论P控制器,sqrt_controller的作用就是设定一个量linear_dist,以这个量的正负值为分界线划分出一个线性区域范围,在这个范围内表示误差量还很小,遵循Kp*error计算方式输出控制量。 超过linear_dist后,表明误差较大,此时不能由着误差单纯按照线性方式乘以

moumde的博客 4896

100 道大数据开发技术原理与实战面试宝典(必过答案详细解析)I

在数字化浪潮席卷全球的今天,大数据开发工程师已成为企业数字化转型的核心力量。无论是互联网巨头的用户行为分析,还是金融机构的风险控制,亦或是智慧城市的数据中枢,都离不开大数据技术的支撑。然而,面对BAT等头部企业严格的面试要求,候选人不仅需要掌握扎实的理论基础,更需具备将技术落地的实战能力。本文基于历年高频面试题与企业真实场景需求,梳理100道必考题目,涵盖基础概念、框架原理、算法设计、性能优化等核心领域,助你构建完整的知识体系,从容应对面试挑战。

AI天才研究院 1386

十八、(正点原子)Linux内核RTC驱动

RTC 设备驱动是一个标准的字符设备驱动,应用程序通过 open、 release、 read、 write 和ioctl等函数完成对 RTC 设备的操作。Linux 内核将 RTC 设备抽象为 rtc_device 结构体,因此 RTC 设备驱动就是申请并初始化rtc_device,最后将 rtc_device 注册到 Linux 内核里面,这样 Linux 内核就有一个 RTC 设备了。定义在 include/linux/rtc.h 文件中/* 设备 */int id;/* ID */

Tofu_Cabbage的博客 1395

Qt软件开发-Qt编译zlib完成文件压缩解压(win10)

在软件开发中进行有需求需要将生成的一些文件打包上传到服务器,或者从服务器下载压缩包下来内部解压。或者自己做一些打包工具,那么使用zlib开源就可以很方便的完成。接下来介绍在zlib在windows下如何利用Qt进行编译,调用,介绍mingw、msvc,32/64位编译办法,完成zip文件打包生成例子。可以单文件压缩打包,多文件压缩打包,目录压缩打包等等。

2216

RK3568 RTC驱动实验

本文章为RK3568 RTC驱动实验记录,仅供学习参考

道阻其长,未来可期。笔耕不辍,行则将至! 6742

学Simulink--基于多物理场耦合与系统集成的储能系统场景实例:压缩空气储能(CAES)系统的热力学建模与效率分析

本文提供了一个基于Simulink的压缩空气储能(CAES)系统热力学建模教程。通过多物理场耦合方法,详细演示了从系统架构设计到仿真测试的全过程,包括多级压缩机/膨胀机系统搭建、显热蓄热系统设计以及效率分析。文章重点强调了热管理对提升CAES效率的关键作用,并给出了68%电-电效率的优化案例。最后提出了变工况建模、不同蓄热介质对比等高级优化方向,为开发零碳大容量储能系统提供了实用工具和方法。

amy_mhd的博客 131

Roboguide与TIA V16通讯

Roboguide与TIA V16通讯

haier123888的博客 2674

26 Linux RTC 驱动

Linux 内核将 RTC 设备抽象为 rtc_device 结构体,所以 RTC 设备驱动就是申请并初始化rtc_device,最后将 rtc_device 注册到 Linux 内核中,最终内核就会有一个 RTC 设备。/* 设备 */int id;/* ID *//* RTC 设备底层操作函数 *//* 字符设备 */......

Toutiegongzhu的博客 1323

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linux RTC 驱动实验

rtc_dev_ioctl 函数对其他的命令处理都是类似的,比如 RTC_ALM_READ 命令会通过 rtc_read_alarm 函数获取到闹钟值,而 rtc_read_alarm 函数经过层层调用,最终会调用 rtc_class_ops 中的 read_alarm 函数来获取闹钟值。第 307 行,调用 devm_rtc_device_register 函数向系统注册 rtc_devcie,RTC 底层驱动集为snvs_rtc_ops。关于 I.MX6U 内部 RTC 驱动源码就讲解到这里。

qq_28576837的博客 1105

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Linux下RTC驱动的加载

pcf8563驱动的加载引言i2c驱动使能与验证rtc(pcf8563)驱动加载rtc(pcf8563)驱动验证指令 引言   rtc驱动芯片为嵌入式linux系统提供系统时间,通过I2C接口挂载在开发板设备树的i2c节点上。本文简述pcf8563驱动的加载过程,其余rtc芯片的加载过程类似,并验证了rtc(pcf8563)驱动的加载。 waring:   rtc驱动本质上是一个字符设备驱动,只不过Linux内核在通用的字符设备驱动接口上引入了RTC驱动框架(字符设备驱动的封装)。常用rtc芯片驱动已经存放

end_destiny 3640

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Linux i2c RTC 驱动解析

Linux i2c RTC 驱动解析1. i2c adapter1.1 device (dts)1.2 driver1.3 i2c transfer1.4 i2c-dev1.5 pin mux2. i2c client2.1 device (dts)2.2 driver2.3 interrupt3. RTC3.1 rtc框架3.2 walltime 和 rtc的同步3.3 rtc的使用 1. i2c adapter 1.1 device (dts) 首先我们需要在dts文件中增加i2c控制器(adapter

pwl999的博客 3255
上一篇: 关于C语言中的函数指针
下一篇: 非主流,wake up,你们是这个社会的未来
myleeming
博客等级 码龄18年 75粉丝 47原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值