Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15530837
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: LINUX

2008-06-29 09:57:48

浅析sd卡设备申请和驱动绑定简单流程

  sd卡插入之后,首先GPIO8发生中断,执行mmc_rescan()分配该sd卡的mmc_card结构体,该sd结构体分配的bus总线为mmc_bus_type,也就是该mmc_card结构体会尝试从mmc_bus总线的drivers链表上获取与mmc_card结构体从sd卡硬件读取出来的vendor值相匹配的driver,如果找到,那么说明该mmc_card有driver来驱动sd单元,否则没有,sd单元,即:mmc_card结构体,经过上述的过程之后,mmc_rescan()继续细致初始化sd单元的子功能单元-func,函数sdio_alloc_func()申请到的sdio_func子功能单元所属bus总线为sdio_bus_type,对于wlan驱动来说,wlan仅仅使用了sdio_func,所以wlan驱动程序也就仅仅实现了sdio_func子功能单元驱动,没有去实现mmc_card结构体的驱动,所以一个sd接口设备会有2种驱动,分别位于2条不同的bus总线上,一个是mmc_card结构体设备位于的mmc_bus_type总线上的driver驱动,一个是sdio_func子功能们所在的sdio_bus_type总线上的driver驱动,设备驱动应该分别实现这2条总线下的相应驱动,但实际并不是这样,我们只关心我们用的上的总线,所以我们的wlan仅仅实现了sdio_bus_type总线上的sdio_func子功能驱动,另外drivers\mmc\card\block.c为sd卡支持fat文件系统的驱动文件,具体由module_init(mmc_blk_init)初始化[gliethttp_20080629].

阅读(2919) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~