MMC子系统
文章平均质量分 81
盖驱动模型为核心思想,其他如i2c/usb/spi/mmc等诸子系统皆循其道。故抽丝剥茧,提纲挈领,以mmc为例探究之,求举一反三、管窥全局之效。
__2017__
七分实践,三分理论。
展开
-
SDIO驱动(16)使用DMA传输数据2
DMA控制器驱动框架中的第二个函数:s3c24xx_dma_order_set(&s3c2440_dma_order);参数s3c2440_dma_order是一个全局变量,抽象的是下图物理channel和逻辑channel及其互相关系:static struct s3c24xx_dma_order __initdata s3c2440_dma_order = { .channe原创 2017-07-02 17:25:34 · 2195 阅读 · 0 评论 -
SDIO驱动(15)使用DMA传输数据1
硬件支持的数据传输方式:Normal:tasklet_init(&host->pio_tasklet, pio_tasklet, (unsigned long) host);最终调用pio_tasklet()函数完成数据的收发。DMA:即Direct Memory Access,在数据的传输的过程中不需要CPU直接参与。CPU坐镇中央、发号施令,具体的数据“搬运”工作由DMA这原创 2017-07-02 14:24:30 · 4525 阅读 · 0 评论 -
SDIO驱动(14)card的CIS读取及解析
sdio card CIS read&parse原创 2017-05-30 11:33:39 · 5650 阅读 · 0 评论 -
SDIO驱动(13)card的初始化
SDIO card的初始化原创 2017-05-29 17:24:51 · 7883 阅读 · 1 评论 -
SDIO驱动(12)card的扫描流程
在"SDIO驱动(9)Host注册"中提到,一旦host设备注册成功,接下来会启动一次扫描好获取并管理挂在该host上的card。如果是一张可以热插拔的card,当card插入/拔出时触发中断,同样启动扫描流程。原创 2017-05-28 22:08:47 · 3904 阅读 · 0 评论 -
SDIO驱动(11)Host是如何把数据发出去的
通过“SDIO驱动(10)Host的operations实现”的s3cmci_send_command函数知道了命令的发送方式,接下来分析数据的发送实现原创 2017-05-26 16:16:49 · 1764 阅读 · 0 评论 -
SDIO驱动(10)Host的operations实现
在“SDIO驱动(9)Host驱动probe实现”中简单介绍了host操作card的接口mmc_host_ops一些成员函数的作用,接下来分析下各个函数的实现。原创 2017-05-24 15:59:56 · 1400 阅读 · 0 评论 -
SDIO驱动(9)Host注册
如果系统支持debugfs,在/sys/kernel/debug/下有host的目录,可以查询host的信息。目录名称就是dev_set_name(&host->class_dev, "mmc%d", host->index)设置的device name。原创 2017-05-19 16:32:10 · 2052 阅读 · 0 评论 -
SDIO驱动(8)Host驱动实现
看C/C++的源码,我们从main函数开始,因为这是代码的入口;在driver的世界里,这个功能的担当是module_init原创 2017-05-17 21:42:16 · 2386 阅读 · 0 评论 -
SDIO驱动(7)sdio总线结尾
1、uevent是什么?user event的缩写,用于kernel和user之间热插拔事件通信的机制。2、通信如何实现?内核中的netlink模块,即socket通信。3、典型例子:udev,Android等。原创 2017-05-12 14:47:44 · 1280 阅读 · 0 评论 -
SDIO驱动(6)命令的构建和发送
MMC子系统是主从式的架构,数据的传输由host通过命令进行请求和发送。这里分析命令的构建和发送。原创 2017-05-07 22:14:37 · 6469 阅读 · 2 评论 -
SDIO驱动(5)sdio总线上的probe
sdio总线上driver和设备的match成功只是软件之间的”切口“,但是硬件的连通性、能不能工作还不知道,所以要probe探测一下。原创 2017-05-07 17:19:22 · 6155 阅读 · 0 评论 -
SDIO驱动(4)sdio总线上driver和设备的match
一条总线上有一个设备链表klist_devices,记录挂在此bus上的device;一个驱动链表klist_drivers,记录挂在此bus上的driver。当注册新设备或者新驱动的时候, 总线上的match回调函数得到调用进行驱动/设备的匹配。原创 2017-05-07 11:11:33 · 4283 阅读 · 3 评论 -
SDIO驱动(3)sdio总线诞生记
Linux定义了形形色色的总线i2c,usb,pci还有我们这里要说的sdio等等等等,所谓总线,简单理解就是实现一个规范(specification),用来支持规范中定义的操作时序、读写方式、命令集合等,满足spec定义的设备或驱动就可以挂载上面由core(usb core,mmc core)进行管理。原创 2017-05-06 21:09:32 · 1904 阅读 · 0 评论 -
SDIO驱动(2)Host注册流程
1、SDIO Host端注册2、SDIO card 扫描流程原创 2017-04-04 17:59:51 · 2120 阅读 · 0 评论 -
SDIO驱动(1)从驱动模型的角度看Host驱动
SDIO驱动Host端实现1、SDIO起源于SD标准,专注于实现数据收发2、SDIO应用广泛,常用设备如:WiFi、GSP、Camera等3、由于MMC、SD、SDIO溯本同源,所以在Linux中统一归于mmc原创 2017-03-27 22:05:56 · 4442 阅读 · 0 评论