Chinaunix首页 | 论坛 | 博客
  • 博客访问: 72402
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 14
  • 用 户 组: 普通用户
  • 注册时间: 2018-09-15 14:26
文章分类

全部博文(63)

文章存档

2018年(63)

我的朋友

分类: LINUX

2018-09-15 14:42:56

原文地址:PXA300 SD初始化流程 作者:cspyb_cu

最近在研究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卡所有的初始化。

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