zoukankan      html  css  js  c++  java
  • 20、RTC驱动程序

    drivers tc tc-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. 修改archarmplat-s3c24xxcommon-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

     


  • 相关阅读:
    HTTP 缓存图解
    http协议构成整理
    HTTP2.0
    Event Loop
    斐波那契数列
    归并排序
    快速排序
    史上最全前端资源
    Js 将 Date 转化为指定格式的String
    vue-cli webpack全局引入jquery
  • 原文地址:https://www.cnblogs.com/liusiluandzhangkun/p/8654896.html
Copyright © 2011-2022 走看看