linux中的rtc驱动位于drivers/rtc下,里面包含了许多开发平台的RTC驱动,我们这里是以S3C24xx为主,所以它的RTC驱动为rtc-s3c.c
1.进入..../drivers/rtc/rtc-s3c.c
还是首先进入入口函数,如下图所示:
?
这里注册了一个“s3c2410-rtc”名称的平台设备驱动
而“s3c2410-rtc”的平台设备,在....Class.c文件主要定义了RTC子系统,
而内核初始化,便会进入Class.c,进入rtc_init()->rtc_dev_init(),来注册字符设备:
err = alloc_chrdev_region...这个RTC平台设备,没有注册,所以平台驱动没有被匹配上,接下来我们来修改内核里的注册数组
4.1进入arch/arm/plat-s3c24xx/Common-smdk.c
如下图所示,在smdk_devs...[]里,添加RTC的平台设备即可,当内核启动时,就会调用该数组,将里面的platform_device统统注册一遍
?