drivers\rtc\rtc-s3c.c

s3c_rtc_init

     platform_driver_register

           s3c_rtc_probe

                    rtc_device_register("s3c", &pdev->dev, &s3c_rtcops, THIS_MODULE)

                              rtc_dev_prepare

                                        cdev_init(&rtc->char_dev, &rtc_dev_fops);

  rtc_dev_add_device

                                        cdev_add









app:    open("/dev/rtc0");

-------------------------------------------

kernel: sys_open

                rtc_dev_fops.open

                         rtc_dev_open

                                 // 根据次设备号找到以前用"rtc_device_register"注册的rtc_device

                                 struct rtc_device *rtc = container_of(inode->i_cdev,struct  rtc_device, char_dev);

                                 const struct rtc_class_ops *ops = rtc->ops;

                                 err = ops->open ? ops->open(rtc->dev.parent) : 0;







s3c_rtc_open

app:    ioctl(fd, RTC_RD_TIME,...)

-------------------------------------------

kernel: sys_ioctl

                rtc_dev_fops.ioctl

                       rtc_dev_ioctl

                                      struct rtc_device *rtc = file->private_data;

                                      rtc_read_time(rtc, &tm);

                                            
err = rtc->ops->read_time(rtc->dev.parent, tm);

                                                    s3c_rtc_gettime

             

             

               

测试RTC:

1. 修改arch\arm\plat-s3c24xx\common-smdk.c

static struct platform_device __initdata *smdk_devs[] = {

&s3c_device_nand,

&smdk_led4,

&smdk_led5,

&smdk_led6,

&smdk_led7,

改为(在数组smdk_devs里加上s3c_device_rtc):

static struct platform_device __initdata *smdk_devs[] = {

&s3c_device_nand,

&smdk_led4,

&smdk_led5,

&smdk_led6,

&smdk_led7,

&s3c_device_rtc,





在 smdk_machine_init(void) 里添加设备 platform_add_devices(smdk_devs, ARRAY_SIZE(smdk_devs));   也就是把数组smdk_devs里的设备,注册到设备链表里。    方便以后与注册的驱动链表匹配。

2. make uImage, 使用新内核启动

3. ls /dev/rtc* -l

   date /* 显示系统时间 */

   date 123015402011.30 /* 设置系统时间 date [MMDDhhmm[[CC]YY][.ss]] */

   hwclock -w           /* 把系统时间写入RTC */

   

   短电,重启,执行date

注:韦老师总结,我添加了一点东西

RTC驱动程序分析的更多相关文章

  1. android 电容屏(三):驱动调试之驱动程序分析篇

    平台信息: 内核:linux3.4.39系统:android4.4 平台:S5P4418(cortex a9) 作者:瘋耔(欢迎转载,请注明作者) 欢迎指正错误,共同学习.共同进步!! 关注博主新浪博 ...

  2. 【转】android 电容屏(三):驱动调试之驱动程序分析篇

    关键词:android  电容屏 tp 工作队列 中断 坐点计算  电容屏主要参数平台信息:内核:linux2.6/linux3.0系统:android/android4.0  平台:S5PV310( ...

  3. [国嵌攻略][143][LCD驱动程序分析]

    LCD驱动程序分析 LCD驱动程序代码在/drivers/video/s3c2410fb.c文件中,在该驱动的s3c2410fb_init中注册了平台驱动,该驱动的初始化代码在s3c24xxfc_pr ...

  4. Microsoft宣布为Power BI提供AI模型构建器,关键驱动程序分析和Azure机器学习集成

    微软的Power BI现在是一种正在大量结合人工智能(AI)的商业分析服务,它使用户无需编码经验或深厚的技术专长就能够创建报告,仪表板等.近日西雅图公司宣布推出几款新的AI功能,包括图像识别和文本分析 ...

  5. linux PWM蜂鸣器移植以及驱动程序分析【转】

    本文转载自:https://blog.csdn.net/lxllinux/article/details/80885331 一.关于PWM:        PWM(Pulse Width Modula ...

  6. LED驱动程序分析

    混杂设备 LED驱动程序分析 /******************************* * *杂项设备驱动:miscdevice *majior=10; * * *************** ...

  7. 【转载】帧缓冲驱动程序分析及其在BSP上的添加

    原文地址:(四)帧缓冲驱动程序分析及其在BSP上的添加 作者:gfvvz 一.BSP修改及其分析   1. BSP中直接配置的四个寄存器 S3C6410数据手册的第14.5部分是显示控制器的编程模型部 ...

  8. RT-Thread下的串口驱动程序分析【转载】

    编写本文稿的目的,在于通过分析stm32平台上的串口中断源码,学习 RTT中如何编写中断处理程序 如何编写RTT设备驱动接口代码 了解串行设备的常见处理机制 先以RTT官方源码中的STM32 BSP包 ...

  9. Linux中块设备驱动程序分析

    基于<Linux设备驱动程序>书中的sbull程序以对Linux块设备驱动总结分析. 開始之前先来了解这个块设备中的核心数据结构: struct sbull_dev {         i ...

随机推荐

  1. Android自己定义View的实现方法

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17357967 不知不觉中,带你一步步深入了解View系列的文章已经写到第四篇了.回 ...

  2. python(18)- 协程函数及应用

    协程 def init(func): def wrapper(*args,**kwargs): obj = func(*args,**kwargs) next(obj) return obj retu ...

  3. shell(3):文本处理、基本语法和脚本编写

    一.awk.变量.运算符.if多分支 awk:shell编辑器的一种文本处理工具/命令,同grep.sed一样均可解释正则.具体运用下面awk文本处理有详细说明. 变量:分为系统变量和临时变量.变量一 ...

  4. opencv yuv420与Mat互转

    项目用到opencv 融合图片的功能,经过一天的调试,达到预期目标,先将如何调用opencv库实现YUV42与Mat互转记录下来. 一.下载opencv编译的库下载地址是:http://opencv. ...

  5. Selenium系列之--08 操作已打开的浏览器

    Can Selenium interact with an existing browser session? 参考上面的文章 1. 建一个ReuseWebDriver类 import java.io ...

  6. vue-router篇

    目录结构: -lib-vue.js -lib-vue-router.js -js-main.js -index.html 1.安装和基本配置 2.传参以及获取传参 3.子路由 4.手动访问和传参 5. ...

  7. python--函数程序分析

    写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作 import os #加载模块 def xiu(a,b,c): #三个接受值的形参 f = open(a,encod ...

  8. ActionChains报错问题总结

    在使用Python2.7+Selenium3.0.2+Firefox50.1时,鼠标事件ActionChains运行总是报错,报错信息如下: C:\Python36\python3.exe C:/Us ...

  9. SharePoint ULS Log Viewer 日志查看器

    SharePoint ULS Log Viewer 日志查看器 项目描写叙述 这是一个Windows应用程序,更加轻松方便查看SharePoint ULS日志文件.支持筛选和简单的视图. 信息 这是一 ...

  10. The type List is not generic(转载)

    错误:The type List is not generic; it cannot be parameterized with arguments <Activity> 代码如下: pu ...