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,...)(读写使用ioctl实现的不是read和write)
-------------------------------------------
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,

2. make uImage, 使用新内核启动
3. ls /dev/rtc* -l
date /* 显示系统时间 */
date 123015402011.30 /* 设置系统时间 date [MMDDhhmm[[CC]YY][.ss]] */
hwclock -w /* 把系统时间写入RTC */

短电,重启,执行date

20、RTC驱动程序的更多相关文章

  1. RTC驱动程序分析

    drivers\rtc\rtc-s3c.c s3c_rtc_init      platform_driver_register            s3c_rtc_probe           ...

  2. 第43章 RTC—实时时钟

    第43章     RTC—实时时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...

  3. 第43章 RTC—实时时钟—零死角玩转STM32-F429系列

    第43章     RTC—实时时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...

  4. S3C2440上RTC时钟驱动开发实例讲解(转载)

    嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤.一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便.如有错误之处,谢请指正. 共享资源,欢迎转载:http:/ ...

  5. linux RTC 驱动模型分析【转】

    转自:http://blog.csdn.net/yaozhenguo2006/article/details/6824970 RTC(real time clock)实时时钟,主要作用是给Linux系 ...

  6. 嵌入式Linux设备驱动程序:编写内核设备驱动程序

    嵌入式Linux设备驱动程序:编写内核设备驱动程序 Embedded Linux device drivers: Writing a kernel device driver 编写内核设备驱动程序 最 ...

  7. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  8. u-boot学习笔记(一):基础概念

    1.U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目.U-Boot的作用是系统引导.U-Boot从FADSROM.8xxROM.PPCBOOT逐步发展演化 ...

  9. U-Boot

    U-Boot U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目.从FADSROM.8xxROM.PPCBOOT逐步发展演化而来.其源码目录.编译形式与Li ...

随机推荐

  1. 动态引入js代码

    var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = & ...

  2. echarts插件-从后台请求的数据在页面显示空白的问题

    最近的项目里面关于统计图方面的问题,有涉及到很多,也在博客里面更新了自己所遇到的问题,开发过程中会遇到很多问题,解决技术问题的方法也有千千万 图片.png 在百度上百度了一下,发现了问题所在之处,不得 ...

  3. oracle取随机结果测试

    http://www.2cto.com/database/201307/227524.html

  4. EasyUI——DataGrid中嵌入Radio

    前一篇博客写到项目中的广告位管理,当时没有写到今天的问题,这个问题当时也是困扰我好久. 经过自己的努力和同志们的帮助,最后最终解决. 实现要求把全部的广告位后面的单选button设成一组,目的是一个广 ...

  5. UDP 打洞示例 包含 服务器 客户端

    客户端示例: #include "Net.h" #include "../p2pInfo.h" int main() { CUdp  udp; if (0!=u ...

  6. collapse折叠

    基本: <button class="btn btn-primary" data-toggle="collapse" data-target=" ...

  7. react+react-router+mobx+element打造管理后台系统---react-amdin-element

    react-admin-element,一款基于react的后台管理系统. 那么我们和其他的后台管理系统有什么区别呢? demo地址:点我进入demo演示 github地址:点我进入github 1. ...

  8. 事件循环(Event Loop)

    1.什么是事件循环? JavaScript为单线程执行的,所以是从上到下依次执行,js分为两个任务,宏任务和微任务 首先执行宏任务(第一次就是执行所有的同步代码),再执行所有的微任务,执行完毕之后再次 ...

  9. Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包)

    如果你用Android Studio开发,并且要用其他项目作为library,这个问题是很容易出现的.出现这个问题的原因是包的重复引用,意思就是在你自己的项目中引用了某个包,而被你作为library的 ...

  10. golang recover

    package main import "fmt" func divideByZero() { // Use this deferred function to handle er ...