人生境界:明智、中庸、诚信、谦逊
发布时间:2013-09-27 13:14:18
一、开发环境主 机:ubuntu10.04 开发板:Mini2440--128MB Nand, Kernel:2.6.32.2 编译器:arm-linux-gcc-4.3.2二、前提知识1、Linux输入子系统(Input Subsystem): 在Linux中,输入子系统是由输入子系统设备驱动层、输入子系统核心层(Inpu.........【阅读全文】
发布时间:2013-09-27 13:13:43
今天下午闲下来了,想想还是给EVB增加一下SD/MMC的驱动吧。SD/MMC的官方文档很少,也没有啥书写到这个问题,听说华清远见的宋宝华老师的新一版《Linux驱动开发》会讲这个问题。不过Linux最大的优点就是开源,大家都可以研究,网上也有人写了2410、2440的相关分析文章了,大家都有转载,比如以下网址的一篇:http.........【阅读全文】
发布时间:2013-09-27 13:13:37
分析一个驱动,一般是从module_init()和module_exit()入手,首先来看下module_init()函数。static int __init dw_mci_init(void){ return platform_driver_probe(&dw_mci_driver, dw_mci_probe);} 在platf.........【阅读全文】
发布时间:2013-09-27 13:13:32
接下来,继续第一部分,来看下DW的SD卡驱动中关于操作DAM部分,在探测函数中,主要是如下两条语句: host->dma_ops = pdata->dma_ops; dw_mci_init_dma(host); 由于这里是探测函数,在设备的定义中,也没有对pdata->dma_ops成员进行初始.........【阅读全文】
发布时间:2013-09-27 13:13:26
这一节我们看下探测函数tasklet中的两个函数,首先看下发现卡函数dw_mci_tasklet_card:static void dw_mci_tasklet_card(unsigned long data){ struct dw_mci *host = (struct dw_mci *)data; int i; //每个slot都执行一次,本例只有一个.........【阅读全文】