摘要: 转自:http://blog.chinaunix.net/space.php?uid=20643761&do=blog&id=1594837platform_device_add最终还是调用老接口device_add,只是多了将resource注册进内核的步骤。platform_driver_register也是调用driver_register,而且在driver_register中,会调用到driver的probe函数。platform_device_register()注册过程------------------------------------/* arch/arm/ 阅读全文
posted @ 2012-04-02 17:17 super119 阅读(400) 评论(0) 推荐(0)
摘要: 转自:http://blog.csdn.net/lanmanck/article/details/4455692从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。 Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。 Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统.. 阅读全文
posted @ 2012-04-02 17:07 super119 阅读(284) 评论(0) 推荐(0)
摘要: 在文章《ARM linux kernel从入口到start_kernel代码分析 -- 只到machine type选中为止》中,bootloader将machine type(是一个数字)放在了R5寄存器里面,然后linux kernel枚举所有machine type数字,找到匹配的,然后执行machine_desc结构中的一系列初始化函数。那在编写kernel driver的时候,如何给板子申明一个machine type的数字?这个数字就是machine_desc结构中nr这个member的值。当使用MACHINE_START宏定义自己板子的machine_desc结构的时候,假设给. 阅读全文
posted @ 2012-04-02 15:07 super119 阅读(603) 评论(0) 推荐(0)
摘要: 转载自:http://blog.sina.com.cn/bytex本文针对arm linux, 从kernel的第一条指令开始分析,一直分析到进入start_kernel()函数.我们当前以linux-2.6.19内核版本作为范例来分析,本文中所有的代码,前面都会加上行号以便于和源码进行对照.例:在文件init/main.c中:00478: asmlinkage void __init start_kernel(void)前面的"00478:" 表示478行,冒号后面的内容就是源码了.在分析代码的过程中,我们使用缩进来表示各个代码的调用层次.由于启动部分有一些代码是平台特定 阅读全文
posted @ 2012-04-02 14:58 super119 阅读(498) 评论(1) 推荐(0)