- 博客(16)
- 资源 (24)
- 收藏
- 关注
原创 Linux DMA驱动构架分析
<br /> 以linux2.6.32中的S3C2440驱动为例进行分析,DMA驱动所对应的源码为linux-2.6.32.2/arch/arm/mach-s3c2440/dma.c,代码入口为:<br />arch_initcall(s3c2440_dma_init);<br />205static int __init s3c2440_dma_init(void) <br />206{ <br />207 return sysdev_driver_register(
2011-05-24 18:55:00 3290 1
原创 Linux DMA驱动构架分析
<br /> 以linux2.6.32中的S3C2440驱动为例进行分析,DMA驱动所对应的源码为linux-2.6.32.2/arch/arm/mach-s3c2440/dma.c,代码入口为:<br />arch_initcall(s3c2440_dma_init);<br />205static int __init s3c2440_dma_init(void) <br />206{ <br />207 return sysdev_driver_register(
2011-05-24 18:53:00 2009
原创 wpa_supplicant移植
<br />由于wpa_supplicant使用了openssl相关的库函数,所以在移植之前先要编译openssl(这步工作<br />对于x86的gcc编译器是不需要的)。Security Socket Layer,是一个安全传输协议,在Internet<br />网上进行数据保护和身份确认。OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包,<br />OpenSSL源代码可以从ftp://ftp.openssl.org/source/上下载,也可以从OpenSSL的镜像网站下载。这里<
2011-05-24 18:50:00 1345
原创 linux IDE驱动汇总
<br />整个ide接口的驱动实现比较复杂,但对于移植所做的工作就相对<br />较少了。下面链接是对linux2.6.32内核IDE驱动移植成功的源码,及其相关的硬件电路图。http://download.csdn.net/source/2773611
2010-10-21 19:21:00 1455 1
原创 s3c2440平台linux2.6.32双网卡驱动
s3c2440平台linux2.6.32双网卡驱动网络设备驱动编写前段时间由于一个工业以太网的需求,需要在S3C2440平台上实现双网卡。其中由DM9000构成的100M网络用于满足作为WEB服务器的需求,另外一路由于直接与设备相连,对带宽要求较低,另外为了接口方便选用了SPI接口的ENC28J60以实现一个10M的网络,并工作于混杂模式。Linux下的网络设备驱动位于/linux/driver/net目录下,其中已经包含了许多常用的以太网控制器的驱动,包括CS8019、DM9000等。由于ENC28J60
2010-10-15 20:22:00 2905
原创 linux IDE驱动分析之真正的数数据传输
<br />故事发展到今天,看到了块设备的注册以后,也将近了尾声。在剩下的日子里面我们了解一下块设备的IO请求是如何作用在硬件上面的。<br />前面我们说过do_ide_request是整个IDE接口驱动处理IO请求的开始,然后会调用然后会调用start_request来处理这个任务。在上面我们分析中我们只看了343-344行,因为前面的调用中是处理REQ_TYPE_ATA_TASKFILE事务的,我们执行了execute_drive_cmd就直接返回了。对于硬盘的数据传输等过程我们就没有那么早返回了,所
2010-10-15 20:09:00 1832
原创 linux IDE驱动分析之Ide_driver的注册(三)
<br />Ide_driver的注册(三)<br /><br />Linux内核代码之所以如此精辟,我觉得很主要的一个原因是容易让人产生健忘,这样前面说的后面联系不上,猛然回头一看的时候,很容易让人产生扑朔迷离的感觉,从而衬托出他的一种境界。当然,要说清楚这里的这个故事就得回到N年以前我们讲到的一个传说。早在ide-generic中add-host的时候我们通过层层调用最终通过request_irq申请了一个ide中断,当说到对应的中断向量是ide_intr的时候我们妥协了,说以后有用到的时候再来分析。今
2010-10-15 19:54:00 1766
原创 linux IDE驱动分析之Ide_driver的注册(二)
<br />Ide_driver的注册(二) <br /> <br />还记得很久很久以前,当我们还在讲述ide_generic的那段青涩往事的时候,讲过一个static int ide_init_queue(ide_drive_t *drive) 函数,他里面调用了一个q = blk_init_queue_node(do_ide_request, NULL, hwif_to_node(hwif));。对没错就是他do_ide_request,当时我们还单独把它提出来说迟早有一天他会翻身做人的。没想到到了今
2010-10-15 19:37:00 1821
原创 linux IDE驱动分析之Ide_driver的注册(一)
<br />Ide_driver的注册(一)<br /><br />前面的故事中大家都知道,linux的设备驱动是以模块的形式加载的。那么Ide_driver的注册肯定也不例外。按照常规也应该有一个module_init()。早在开始讲述ide故事的时候我们就看过kconfig和makefile这份内核地图了,在里面我们列出了我们所关心的.c文件。并且看到其中的generic ATA/ATAPI disk support感觉到了和我们接下来要说的generic disk有莫大的关系,他所对应的文件ide_
2010-10-15 19:05:00 3272 1
原创 linux IDE驱动分析之总线枚举
<br />总线枚举<br />[/linux/driver/ide/Ide.c]<br />155struct bus_type ide_bus_type = {<br />156.name= "ide",<br />157.match= ide_bus_match,<br />158.uevent= ide_uevent,<br />159.probe= generic_ide_probe,<br />160.remove= generic_ide_remove,<br />161.shutdown=
2010-10-15 19:00:00 1432
原创 linux IDE驱动分析之IDE总线、驱动注册(五)
<br />IDE总线、驱动注册(五)<br /><br />一路走来,感觉和do_probe一起走了好久好久,现在他总算快要离我们而去了,还是回忆一下和他走过的快乐时光,do_probe做的最有意义的一件事情就是调用ide_dev_read_id完成了硬盘identify数据的读取。离开do_probe,回到probe_for_drives中来的时候发现我们还只是刚刚开始…..<br />489-493行我想我们没有研究的必要了,毕竟是和ATAPI,出错有关了。<br />495行判断一下设备的存在性,要
2010-10-13 14:50:00 2034
原创 linux IDE驱动分析之IDE总线、驱动注册(四)
<br />IDE总线、驱动注册(四)<br /><br />418行是个宏定义<br />#define OK_STAT(stat,good,bad)(((stat)&((good)|(bad)))==(good))<br />这个宏看上去有点好玩,就是说只有好的,没有坏的就认为是好….<br />对应到我们程序的上下文就是“现在的状态是准备好,而且不忙,那么就返回1”<br />420行调用ide_dev_read_id(drive, cmd, id, 0),跟踪一下源码如下:<br />[ide_ge
2010-10-13 14:37:00 2759 2
原创 linux IDE驱动分析之IDE总线、驱动注册(三)
<br />IDE总线、驱动注册(三)<br /><br /> <br />好了,闲话少叙仍旧回到ide_host_register中来….<br />1386行ide_port_apply_params(hwif);这是关于模块参数的,模块加载的时候可以指定一定的参数,这个在《内核对子系统或者模块的初始化.pdf 》中已经有了说明。这里呢我们还是不妨进去看看,还是比较简单的:<br /><br />[ide_generic_init]->[ide_host_add]->[ ide_host_registe
2010-10-13 14:30:00 2481 2
原创 linux IDE驱动分析之IDE总线、驱动注册(二)
<br />IDE总线、驱动注册(二)<br />回到ide_host_alloc()中来,继续向前走…<br />1313行又遇到一个ide_find_port_slot(),源码如下:<br /><br />[ide_generic_init]->[ide_host_add]->[ ide_host_alloc]->[ ide_find_port_slot]<br />1195/**<br />1196 *ide_find_port_slot-find free port slot<br />1197
2010-10-13 14:18:00 1614
原创 linux IDE驱动分析之IDE总线、驱动注册(一)
IDE总线、驱动注册(一)<br />搜索刚才提到的内核源代码唯有ide.c中有这么一个module_init(ide_init),那么八成就是我们要找的入口了,那就先看看ide_init,源码如下:<br />365/*<br />366 * This is gets invoked once during initialization, to set *everything* up<br />367 */<br />368static int __init ide_init(void)<br />369
2010-10-13 14:13:00 2723 4
原创 linux2.6下IDE驱动分析
近段时间由于项目上的需要不得不关注linux下IDE硬盘的实现,目的是为了移植IDE接口的硬盘到S3C2440平台上,采用的驱动方式是PIO模式。因此在分析代码之余做了些简单的笔记,一则加深印象,二来方便对linux设备驱动感兴趣的朋友,多多交流。由于整个IDE驱动实现比较复杂,加之分析过程比较充忙,难免有许多错误之处,请发现问题的朋友能帮忙指正。这里是以linux2.6.32内核为基础,重点分析ide硬盘驱动的实现。通过前面子系统的分析,不难发现任何一个底层驱动的实现都离不开其他内核模块的支持。同时内核对
2010-10-13 11:05:00 2319 2
linux网络管理员手册。pdf
2011-05-18
linux网络管理员指南。pdf
2011-05-18
linux ide driver
2010-10-21
linux双网卡驱动源码(enc28j60).zip
2010-10-15
VC++ API 详解
2010-07-28
停车场收费系统自动吐卡设备的设计
2010-05-24
离散傅立叶变换的原理解析
2010-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人