电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

S3C2440上RTC时钟驱动开发实例讲解VIP免费

S3C2440上RTC时钟驱动开发实例讲解_第1页
1/29
S3C2440上RTC时钟驱动开发实例讲解_第2页
2/29
S3C2440上RTC时钟驱动开发实例讲解_第3页
3/29
S3C2440 上RTC 时钟驱动开发实例讲解 一、开发环境 主 机:VMWare—ubuntu10.10 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二、相关概念 1、平台设备: 通常在 Linux中,把 SoC系统中集成的独立外设单元(如:I2C、IIS、RTC、看门狗等)都被当作平台设备来处理。在 Linux中用 platform_device结构体来描述一个平台设备,在 2.6.30.4内核中定义在:include/linux/platform_device.h中,如下: struct platform_device { const char * name; //设备名称 int id; struct device dev; u32 num_resources; //设备使用各类资源的数量 struct resource * resource; //设备使用的资源 struct platform_device_id *id_entry; }; 现在你不必深入理解这个结构体,只要知道在 Linux 中是用这个结构体来定义一些平台设备的。比如在:arch/arm/plat-s3c24xx/devs.c中就定义了很多平台设备,下面我就只贴出 RTC 这一种的: * RTC */ static struct resource s3c_rtc_resource[] = { //定义了 RTC 平台设备使用的资源,这些资源在驱动中都会用到 [0] = { //IO 端口资源范围 .start = S3C24XX_PA_RTC, .end = S3C24XX_PA_RTC + 0xff, .flags = IORESOURCE_MEM, }, [1] = { //RTC 报警中断资源 .start = IRQ_RTC, .end = IRQ_RTC, .flags = IORESOURCE_IRQ, }, [2] = { //TICK 节拍时间中断资源 .start = IRQ_TICK, .end = IRQ_TICK, .flags = IORESOURCE_IRQ } }; struct platform_device s3c_device_rtc = { //定义了RTC 平台设备 .name = "s3c2410-rtc", //设备名称 .id = -1, .num_resources = ARRAY_SIZE(s3c_rtc_resource), //资源数量 .resource = s3c_rtc_resource, //引用上面定义的资源 }; EXPORT_SYMBOL(s3c_device_rtc); 好了,定义了平台设备,那系统是怎么来使用他的呢?我们打开:arch/arm/mach-s3c2440/mach-smdk2440.c 这个ARM 2440 平台的系统入口文件,可以看到在系统初始化函数smdk2440_machine_init 中是使用platform_add_devices 这个函数将一些平台设备添加到系统中的,如下:(至于系统是如何实现添加平台设备的,这里我们不必研究,这些 Linux 系统都已经做好了的,我们要研究的是后面平台设备的驱动是如何实现的) static struct platform_device *smdk24...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

S3C2440上RTC时钟驱动开发实例讲解

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部