Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1080091
  • 博文数量: 165
  • 博客积分: 3900
  • 博客等级: 中校
  • 技术积分: 1887
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-06 15:15
文章分类

全部博文(165)

文章存档

2020年(3)

2019年(8)

2017年(2)

2016年(8)

2015年(14)

2013年(15)

2012年(32)

2011年(11)

2010年(14)

2009年(7)

2008年(20)

2007年(31)

分类: LINUX

2011-03-12 23:57:47

最近在研究PXA300 SD卡的驱动程序,搞清楚了SD卡的初始化流程,记录如下

 

1. 在pxamci_probe()函数调用mmc_alloc_host()分配mmc_host结构,初始化了mmc_rescan延时任务

2. 接着进行了mmc_host结构的一系列的初始化,MMC硬件控制器寄存器相关的初始化,中断的注册,DMA的初始化等

3. 在pxamci_probe()最后调用了mmc_add_host()进行了mmc_host设备驱动模型相关的设置,执行mmc_host_start()

    启动了mmc_rescan延时任务。

4. 紧接着执行mmc_rescan()函数,发送相关的命令,依次扫描接到MMC控制器上的SDIO,SD,MMC设备

5. 扫描到SD卡后,会从相关命令的响应中获取SD卡的相关信息,接着初始化SD卡,并分配mmc_card结构描述该卡的相关特性,

  并将mmc_card注册到“mmc"总线的设备层。

6 在讲mmc_card注册到“mmc"总线的设备层的过程中,根据设备驱动模型找到"mmc"总线上名为“mmcblk"的mmc_driver,

   调用mmc_drivcer中的mmc_blk_probe()函数

7. 在mmc_blk_probe()函数中会为SD卡分配mmc块设备相关的数据结构,为SD卡分配设备节点和设备号,最后将SD卡添加到

  块设备层即完成了SD卡所有的初始化。

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

chinaunix网友2011-03-27 16:12:43

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com