自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

android实现wifi静态IP设置

实现wifi静态IP设置,4.2以下版本都可使用,封装好,方便使用

2013-08-04

Bluetooth协议规范

bluetooth协议详解,详解介绍bluetooth的详细协议,帮助开发者开发蓝牙

2013-08-02

JDK说明文档

jdk说明文档 chm格式方便查阅 内容详细 调理清晰

2013-08-02

安卓虚线控件

实现安卓虚线控件,可直接在布局文件中使用

2013-07-28

安卓框架揭秘

说明了安卓框架的工作原理,分析和整理了安卓框架源码,

2013-07-28

linux网络管理员手册。pdf

一个操作系统的不同部分 一个UNIX操作系统包括一个核心程序kernel和一些系统程序system programs还有一些做某件事情的应用程序application programs核心是操作系统的心脏它跟踪磁盘上的文件启动程序并运行它们给不同的进程分配内存和其他资源从网络接收和向网络发送包等等核心很少自己干活但它提供工具用这些工具可以建立所有服务它还阻止任何人直接存取硬件强制每个人使用它提供的工具这样核心给每个用户与其他用户之间提供保护核心提供的工具通过系统调用system calls使用要了解关于这的更多的信息看手册页第二节

2011-05-18

linux网络管理员指南。pdf

第1 章 网络基础 3 1.1 UUCP 网络 3 1.2 TCP/IP 网络 5 1.2.1 TCP/IP 网络入门 5 1.2.2 以太网 6 1.2.3 其他类型的硬件 7 1.2.4 网际协议 8 1.2.5 串行线路网际协议 9 1.2.6 传输控制协议 9 1.2.7 用户数据报协议 10 1.2.8 端口问题 10 1.2.9 套接字库 10 1.3 连网 11 1.4 系统维护 11 1.5 后续章节提要 13

2011-05-18

CC1100的linux驱动源码

CC1100的linux2.6.32驱动源码,在S3C440的开发板测试通过

2011-05-18

linux ide driver

整个ide接口的驱动实现比较复杂,但对于移植所做的工作就相对 较少了。下面链接是对linux2.6.32内核IDE驱动移植成功的源码,及其相关的硬件电路图。

2010-10-21

linux双网卡驱动源码(enc28j60).zip

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "enc28j60_hw.h" #define DRV_NAME "enc28j60" #define DRV_VERSION "1.01" #define SPI_OPLEN 1 #define ENC28J60_MSG_DEFAULT \ (NETIF_MSG_PROBE | NETIF_MSG_IFUP | NETIF_MSG_IFDOWN | NETIF_MSG_LINK)

2010-10-15

VC++ API 详解

Win32 API即为Microsoft 32位平台的应用程序编程接口(Application Programming Interface)。所有在Win32平台上运行的应用程序都可以调用这些函数。 使用Win32 API,应用程序可以充分挖掘Windows的32位操作系统的潜力。 Mircrosoft的所有32位平台都支持统一的API,包括函数、结构、消息、宏及接口。使用 Win32 API不但可以开发出在各种平台上都能成功运行的应用程序,而且也可以充分利用每个平台特有的功能和属性。 在具体编程时,程序实现方式的差异依赖于相应平台的底层功能的不同。最显著的差异是某些函数只能在更强大的平台上实现其功能。例如,安全函数只能在Windows NT操作系统下使用。另外一些主要差别就是系统限制,比如值的范围约束,或函数可管理的项目个数等等。 标准Win32 API函数可以分为以下几类: 窗口管理 窗口通用控制 Shell特性 图形设备接口 系统服务 国际特性 网络服务 在下面各节中,我们分别介绍这7种类型的API函数。

2010-07-28

停车场收费系统自动吐卡设备的设计

本文作者所介绍的这一停车场自动吐卡收费系 统, 具有很强的实用性: 该停车场自动吐卡收费系统可 方便的实现从感应汽车到站, 自动抬杆, 自动打卡, 自 动吐卡, 自动感应汽车进场, 自动落杆一系列过程, 整 个过程完全在单片机的管理下自动完成, 不需要人工 干预。并且由于是自动收费, 且收费过程双方一目了 然, 透明性较高, 既提高了工作效率, 同时又减少了不 必要的争执。

2010-05-24

新编vc API大全

新编vc API大全,分类详细介绍API函数 方便查阅和使用

2010-03-29

离散傅立叶变换的原理解析

在工程技术的许多分支中,要掌握的基本内容之一就是正确理解时域和频域的关系。对于数字系统来说,就是要精通离散傅立叶变换,因此离散傅立叶变换在数字信号处理中占有十分重要的地位。在实际应用中,有限长序列有相当重要的地位,由于计算机容量的限制,只能对过程进行逐段分析。由于有限长序列,引入DFT(离散付里叶变换)。

2010-03-15

pspice教程详解

pspice教程详解,手把手教你学习pspice

2010-03-15

uCOS-II源代码

uCOS-II源代码以及在51单片机移植的例子

2010-03-15

UCLINUX开发环境创建步骤

UCLINUX开发环境创建步骤,建议创建个目录存放UClinux的源码

2010-03-15

fpg _verilog串口发送模块

fpg _verilog串口发送模块 硬件测试通过 可与PC机正常通信 稳定可靠

2009-07-18

MSP430169解码电视机遥控器

MSP430169解码电视机遥控器 源代码

2009-07-12

MSP430应用方案

MSP430详细使用方法及其应用及其IAR编译器的使用方法

2009-05-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除