Linux下RTC驱动的简单分析
2017-07-16 21:30
363 查看
详细查看文件:drivers\rtc\rtc-s3c.c
RTC驱动调用分析
当我们的应用程序进行open和ioctl操作时:
测试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
RTC驱动调用分析
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
当我们的应用程序进行open和ioctl操作时:
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,
2. make uImage, 使用新内核启动
3. ls /dev/rtc* -l
date /* 显示系统时间 */
date 123015402011.30 /* 设置系统时间 date [MMDDhhmm[[CC]YY][.ss]] */
hwclock -w /* 把系统时间写入RTC */
短电,重启,执行date
相关文章推荐
- Linux驱动修炼之道-RTC子系统框架与源码分析
- LINUX驱动分析之RTC(三)
- linux input输入子系统分析《二》:s3c2440的ADC简单驱动实例分析
- linux驱动—input输入子系统—The simplest example(一个最简单的实例)分析(1)
- LINUX驱动分析之RTC(四)
- LINUX驱动分析之RTC(一)
- Linux驱动修炼之道-RTC子系统框架与源码分析【转】
- Linux设备驱动--linux RTC 驱动模型分析
- 学习笔记 --- LINUX RTC驱动分析
- 慢慢学Linux驱动开发,第四篇,USB工作原理简单分析
- LINUX驱动分析之RTC(三)
- LINUX驱动分析之RTC(一)
- LINUX驱动分析之RTC(二)
- linux驱动分析之DS1302 RTC
- Linux RTC驱动分析(一)----pcf8563驱动和class.c
- LINUX驱动分析之RTC(三)
- ARM-Linux驱动--RTC(实时时钟)驱动分析
- linux input输入子系统分析《二》:s3c2440的ADC简单驱动实例分析
- 慢慢学Linux驱动开发,第四篇,USB工作原理简单分析
- Linux RTC驱动模型分析之rtc-sysfs.c