当前位置:文档之家› linux i2c驱动

linux i2c驱动

linux i2c驱动
linux i2c驱动

linux i2c驱动

1. i2c-dev interface

I2C dev-interface

通常,i2c设备由某个内核驱动控制。但是在用户空间,也可以访问某个I2C设备:你需要

加载i2c-dev模块。

每个被注册的i2c适配器(控制器)会获得一个数字号,从0开始。你可以检查/sys/class/i2c-dev,来查看适配器对应哪个数字号。你也可以通过命令

"i2cdetect -l"获

取你的当前系统的所有I2c适配器的列表。i2cdetct是i2c-tool包中的一个工具。

i2c设备文件是字符设备,主设备号是89,次设备号的分配如上所述。设备文件名通常被

规定为"i2c-%d"(i2c-0, i2c-1, ...,i2c-10, ...)i2c设备文件是字符设备,

主设备号是

89,次设备号的分配如上所述。设备文件名通常被规定为"i2c-%d"(i2c-0, i2c-1, ...,i2c-10, ...).所有256个次设备号都保留给i2c使用。

C example

=========

假定你要在你的C应用程序中访问i2c适配器。第一件事情就是包含头文件

"#include

"。注意,存在两个"i2c-dev.h"文件: 一个属于Linux kernel,用于

内核驱动中;一个由i2c-tools发布,用于用户程序。显然,这里需要使用第二个

i2c-dev.h文件。

现在,你需要确定访问哪个适配器。你需要通过查看/sys/class/i2c-dev/或者运行

"i2cdetect -l"确定。适配器号时常是动态分配的,你无法预先假定某个值。因为它们甚

至会在系统重启后变为不同的值。

下一步,打开设备文件,如下:

int file;

int adapter_nr = 2; /*probably dynamically determined */

char filename[20];

snprintf(filename, 19, "/dev/i2c-%d", adapter_nr);

file = open(filename, O_RDWR);

if (file < 0) {

/* ERROR HANDLING; you can check errno to see what went wrong */ exit(1);

}

当你打开设备后,你必须明确说明你相与哪个设备地址进行通信:

int addr = 0x40;

if (ioctl(file, I2C_SLAVE, addr) < 0) {

/* ERROR HANDLING; you can check errno to see what went wrong */ exit(1);

}

Well, 你现在准备好与I2C设备通信了。你现在可以使用SMBus命令集或者无格式I2C

(plain I2C)与你的设备进行通信。如果设备支持SMB协议,则SMBus命令集优先选择。

代码如下:

__u8 register = 0x10; /* Device register to access */

__s32 res;

char buf[10];

/* Using SMBus commands */

res = i2c_smbus_read_word_data(file, register);

if (res < 0) {

/* ERROR HANDLING; you can check errno to see what went wrong */ } else {

/* res contains the read word */

}

/* Using I2C Write, equivalent of

i2c_smbus_write_word_data(file, register, 0x6543) */

buf[0] = reister;

buf[1] = 0x43;

buf[2] = 0x65;

if (write(file ,buf, 3) != 3) {

/* ERROR HANDLING: i2c transaction failed */

}

/* Using I2C Read, equivalent of i2c_smbus_read_byte(file) */

if (read(file, buf, 1) != 1) {

/* ERROR HANDLING: i2c transaction failed */

} else {

/* buf[0] contains the read byte */

}

注意,仅有I2C和SMBus协议的一部分子集功能可以通过read()和write()的调用完成。尤

其,对于组合型的传输(mixing read and write messages in the same transaction)不

被read()/write()支持。基于这个原因,read()和write()这两个接口几乎不被用户空间

程序使用。

IMPORTANT: because of the use of inline functions, you *have* to use '-O" or

some variation when you compile your program!

Full interface description

==========================

IOCTLs定义如下:

ioctl(file ,I2C_SLAVE, long addr)

Change slave address. The address is passed in the 7 lower bits of the argument (except for 10 bit addresses, passed in the 10 lower bits in this case)

ioctl(file, I2C_TENBIT, long select)

Selects ten bit addressed if select not equals 0, selects normal 7 bit addresses if select equals 0. Default 0. This request is only valid if the

adapter has I2C_FUNC_10BIT_ADDR.

ioctl(file, I2C_PEC, long select)

Selects SMBus PEC (packet error checking) generation and verification if select not equals 0, disables if select equals 0. Default 0.

Used only for SMBus transactions. This request only has an effect if the adapter has I2C_FUNC_SMBUS_PEC; it is still safe if not, it just doesn't have

any effect.

ioctl(file, I2C_FUNCS, unsigned long *funcs)

Gets the adapter functionality and puts it in *funcs.

ioctl(file, I2C_RDWR, struct i2c_rdwr_ioctl_data *msgset)

Do combined read/write transaction without stop in between. Only valid

if the

adatpter has I2C_FUNC_I2C. The argument is a pointer to a

struct i2c_rdwr_ioctl_data {

struct i2c_msg *msgs; /* ptr to array of simple messages */

int nmsgs; /* number of messages to exchanges */

}

msgs[]包含指向data buffer的指针。此函数调用会根据每个message中的

I2C_M_RD flag

的设置向buffer写或者读数据。在每个message里,slave address和是否使

ten-bit-address必须设置。

ioctl(file, I2C_SMBUS, struct i2c_smbus_ioctl_data *args)

Not meant to be called directly; instead, use the access functions below.

你可以通过使用read(2)和write(2)调用来进行无格式i2c传输。在访问设备前

通过ioctl

I2C_SLAVE来设置地址。

你可以使用SMBus级传输(see documentation file smbus-protocol for details),通过

如下函数调用:

__s32 i2c_smbus_write_quick(int file, __u8 value);

__s32 i2c_smbus_read_byte(int file);

__s32 i2c_smbus_write_byte(int file, __u8 value);

__s32 i2c_smbus_read_byte_data(int file, __u8 command);

__s32 i2c_smbus_write_byte_data(int file, __u8 command, __u8 value); __s32 i2c_smbus_read_word_data(int file, __u8 command);

__s32 i2c_smbus_write_word_data(int file, __u8 command, __u16 value); __s32 i2c_smbus_process_call(int file, __u8 comand, __u16 value); __s32 i2c_smbus_read_block_data(int file, __u8 command, __u8

*values);

__s32 i2c_smbus_write_block_data(int file, __u8 command, __u8 length, __u8 *values);

所有上述传输失败时返回-1;你可以读取errno来检查具体错误信息。'write'

传输成功后

返回0;'read'传输成功后返回读取的值。但是read_block例外,他返回读取

的字节数,

block buffer长度不超过32字节。

The above functions are all inline functions, that resolve to calls to the

i2c_smbus_access function, that on its turn calls a specific ioctl with the

data in a specific format. Read the source code if you want to know what happenss behind the screens.

Implementation details

======================

下面是当你使用i2c的/dev接口时内核的内部处理:

1* 你的程序打开/dev/i2c-N并调用了ioctl()

2* open()和ioctl()调用会被i2c-dev内核驱动处理:参考i2c-dev.c的相关函数

(i2cdev_ioctl(), i2cdev_open() ...)。你可以认为i2c-dev是由用户程序访问的通用

i2c chip driver。

3* 一些ioctl的命令是针对管理任务的,可以被i2c-dev直接处理。例如

I2C_SLAVE(设置你

想访问的设备地址)和I2C_PEC(使能或禁止SMBus错误检查)。

4* 其他ioctl的命令会被i2c-dev转化为内核驱动里的函数调用。例如

I2C_FUNCS,通过调

用i2c.h:2c_get_functionality()来请求I2C适配器所支持的功能(functionality);

I2C_SMBUS,通过调用i2c-core.c:i2c_smbus_xfer()来执行SMBus传输。

i2c-dev driver负责检查来自用户空间的参数的有效性。除了这一点,用户程序访问

i2c和内核访问i2c的函数调用没什么区别。这意味着在i2c bus driver里不必实现任何支

持用户访问的代码。

5* i2c-core.c/i2c-.h中的函数是你的实际i2c bus driver所需要实现的封装调用例程。每个

适配器都必须声明一些回调函数来实现这些标准调用。

i2c.h:i2c_get_functionality()调用i2c_adapter.algo->functionality(),i2c-core.c:i2c_smbus_xfer()调用i2c_adapter.algo->smbus_xfer() (如果实现了

smbus_xfer()回调函数),否则

i2c-core.c:i2c_smbus_xfer_emulated()会调用

i2c_adapter.algo->master_xfer()。

(注:smbus_xfer()和master_xfer()回调函数必须至少实现一个)

After your I2C bus driver has processed these request, execution runs up the

call chain, with almost no processing done, except by i2c-dev to package the

returned data, if any, in suitable format for the ioctl.

2. i2c functionality

INTRODUCTION

------------

不是所有的I2C或者SMBus适配器实现了I2C规范上的所有功能,因此当访问

I2C适配器时,

并不能完全假定适配器提供了你所需的功能。the client需要有一种检测适配器是否提供

了所需功能的方法。

FUNCTIONALILTY CONSTANTS

-----------------------

对于不断更新的I2C适配器功能常量列表,参考

I2C_FUNC_I2C 无格式i2c-level命令(Pure SMBus适配器不能用这些

命令)

I2C_FUNC_10BIT_ADDR 处理10-bit地址的扩展

I2C_FUNC_PROTOCOL_MANGLING 熟知的有I2C_M_IGNORE_NAK,

I2C_M_REV_DIR_ADDR,

I2C_M_NOSTART, I2C_MNO_RD_ACK等flags (which modify the I2C protocol)

I2C_FUNC_SMBUS_QUICK 处理SMBus write_quick命令

I2C_FUNC_SMBUS_READ_BYTE 处理SMBus read_byte命令

I2C_FUNC_SMBUS_WRITE_BYTE 处理SMBus write_byte命令

I2C_FUNC_SMBUS_READ_BYTE_DATA 处理SMBus read_byte_data命令

I2C_FUNC_SMBUS_WRITE_BYTE_DATA 处理SMBus write_byte_data命令

I2C_FUNC_SMBUS_READ_WORD_DATA 处理SMBus read_word_data命令

I2C_FUNC_SMBUS_WRITE_WORD_DATA 处理SMBus write_word_data命令

I2C_FUNC_SMBUS_PROC_CALL 处理SMBus process_call命令

I2C_FUNC_SMBUS_READ_BLOCK_DATA 处理SMBus read_block_data命令

I2C_FUNC_SMBUS_WIRTE_BLOCK_DATA 处理SMBus wrtie_block_data命令

I2C_FUNC_SMBUS_READ_I2C_BLOCK 处理SMBus read_i2c_block_data命令

I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 处理SMBus write_i2c_block_data命令还有一些flags的组合定义如下(为了你的方便):

I2C_FUNC_SMBUS_BYTE 处理SMBus read_byte & write_byte命令

I2C_FUNC_SMBUS_BYTE_DATA 处理SMBus read_byte_data & write_byte_data 命令

I2C_FUNC_SMBUS_WORD_DATA 处理SMBus read_word_data & write_word_data 命令

I2C_FUNC_SMBUS_BLOCK_DATA 处理SMBus read_block_data &

write_block_data命令

I2C_FU7NC_SMBUS_I2C_BLOCK 处理SMBus read_i2c_block_data &

write_i2c_block_data命令

I2C_FUNC_SMBUS_EMUL 处理所有的能够被I2C adapter仿真的SMBus命令

(using transparent emulation layer)

ADAPTER IMPLEMENTATION

----------------------

当你写一个新的adapter driver时,你必须实现回调函数'functionality'。典型的实现

如下所示。

一个典型的SMBus-only adapter需要列出它能够支持的所有SMBus transactions。下面的

例子来自i2c-piix4 driver:

static u32 piix4_func(struct i2c_adapter *adapter)

{

return I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE |

I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA | I2C_FUNC_SMBUS_BLOCK_DATA;

}

一个典型的full-I2C adapter需要使用如下的functionality函数(来自

i2c-pxa driver):

srtatic u32 i2c_pxa_functionality(struct i2c_adapter *adap)

{

return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;

}

I2C_FUNC_SMBUS_EMUL包含了所有的SMBus transactions (包括I2C block transactions), i2c-core可以使用I2C_FUNC_I2C来仿真SMBus所有命令。这个构思是希望

client drivers仅检查i2c子系统是否支持SMBus命令集,而不用关心是硬件支持还是软件

仿真。

CLIENT CHECKING

---------------

在一个client尝试访问I2C适配器之前,或者在测试适配器是否支持某一设备之前,应当

首先检测所需的functionality是否支持。典型的做法如下(from Im75 driver):

static int Im75_detect(...)

{

(...)

if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA))

goto exit;

(...)

}

Im75 driver检测了adapter是否支持SMBus byte data & SMBus word data transactions。如果不支持,driver将不再在这个adapter上工作,不再继续执行。如果

检测成功,则driver知道它可以调用下面的函数:

i2c_smbus_read_byte_data(), i2c_smbus_write_byte_data(),

i2c_smbus_read_word_data(), i2c_smbus_write_word_data().

因此,你使用i2c_check_functionality()检测的functionality常量,应当与你的

驱动希望调用的函数接口相匹配。

注意上述的检测并不关心functionalities是否由硬件实现或者软件仿真。client

drivers不需要关心这个,i2c-core会在i2c adapter driver之上透明地实现SMBus

transactions.

CHECKING THROUGH /DEV

---------------------

如果你需要在用户空间访问i2c适配器的话,你需要使用/dev interface。你仍

然需要检

测你需要的functionality是否被支持。这通过I2C_FUNCS ioctl来完成。示例如下:

int file;

if (file = open("/dev/i2c-0", O_RDWR) < 0) {

/* Some kind of error handling */

exit(1);

}

if (ioctl(file, I2C_FUNCS, &funcs) < 0) {

/* Some kind of error handling */

exit(1);

}

if (!(funcs & I2C_FUNC_SMBUS_QUICK)) {

/* Oops, the needed functionality (SMBus write_quick function) is not available! */

exit(1);

}

/*Now it is safe to use the SMBus write_quick command */

驱动程序原理

知识体系结构 应用程序:是一段可以执行的代码,由操作系统管理。 编译原理,链接器,装载器:是对操作系统依赖的一个工具,将用户的代码变成可执行的机器码,编译器仅仅检查和翻译用户的语言逻辑,但并不装配成符合操作系统要求的可执行文件格式,如windows要求的EXE文件为PE格式(EXE文件并不仅仅是一个可执行的代码段,而且包含了很多其他的内容,如数据段)。 操作系统接口API:是一个可以被用户程序调用的系统功能接口,可以说,我们编写程序,除了计算和流程控制这些只需要用到CPU指令和CPU寄存器的代码外,其余要访问其他(硬件)资源(包括内存,外设)的代码,均是通过调用OS的API来操作除CPU外的资源的,如向屏幕写一个字母,对于程序来说简单得很,print(“A”); 但是其编译后执行的过程是复杂的,编译后的程序会调用操作系统的API,将当前应用程序的状态(上下文,如光标的位置)以及字母传递给显示器的驱动程序去显示。 操作系统管理与调度:操作系统要实现一般通用的资源管理,也要实现资源使用的协调,包含CPU,内存,磁盘,外设。 首先要确定为什么需要操作系统,操作系统设计的目标是什么? 1.我们总是不能等做完一件事情才去做另外一件,因为有些事情做的过程需要等待,有时候也需要暂停一下当前的任务,先去处理更急的事情,等我回来 时又需要以前的任务保持当时的状态,所以需要计算机也要具备这样的能 力,那怎么实现呢? 2.CPU和内存是计算机的最需要的资源,就如我们的人脑一样,一般很难在同一时间做两件事情。需要处理好一件事情再处理另一件,如果处理得越快就 越好,但是不能前一件事情要等待,你就休息了,后面一件也做不了,计算 机的办法就是你不用CPU了,那好你等待下,我先处理下一个事情。 3.我们写程序,不可能对每个应用,我们重新去写那些驱动程序,也不可能按照自己的想法去处理这些通常的资源管理。否则很多人各自写的应用软件就 没法在一个电脑上运行。 操作系统目标: 1.实现代码重用,对于硬件的访问,对于CPU和内存的充分利用,使不同的应用不需要重新去写这些代码。 2.实现各个任务(不同应用程序)的协调使用,使用户可以实现暂停、重新启用某个任务。 3.实现数据的安全管理,实现良好的人机界面的管理。 4.实现一个开放的体系结构,提供系统调用使用户可以快速编写自己的应用,并提供编译器、链接器、装载器来让用户编写的程序变成可以与操作系统接口的 可执行软件。 操作系统的功能分层: CPU管理是操作系统的核心:操作系统与用户程序其实可以看成是一个程序,与以前的单任务系统和单片机程序没有本质的区别。 我们来看整个PC机运行过程: 1.系统上电。 2.主板上CPU的CS值设置为0Fx000,IP值设置为0xFFF0,这样CS:IP就指向0xFFFF0位置,这个是程序的开始地址,而硬件上在总线上挂接在0xFFFF0地址 的是主板的BIOS芯片,BIOS开始运行,BIOS是Basic Input Output System简写, 意思即基本的输入输出系统,如果学过单片机就很好理解,其实就是一个程序,由主

设备驱动程序

驱动程序 驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 因此,驱动程序被比作“硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。 中文名 驱动程序 外文名 Device Driver 全称 设备驱动程序 性质 可使计算机和设备通信的特殊程序 目录 1定义 2作用 3界定 ?正式版 ?认证版 ?第三方 ?修改版 ?测试版 4驱动程序的开发 ?微软平台 ?Unix平台 5安装顺序 6inf文件 1定义 驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 惠普显卡驱动安装 正因为这个原因,驱动程序在系统中的所占的地位十分重要,一般当操作系统安装完毕后,首要的便是安装硬件设备的驱动程序。不过,大多数情况下,我们并不需要安装所有硬件设备的驱动程序,例如硬盘、显示器、光驱等就不需要安装驱动程序,而显卡、声卡、扫描仪、摄像头、Modem等就需要安装驱动程序。另外,不同版本的操作系统对硬件设

备的支持也是不同的,一般情况下版本越高所支持的硬件设备也越多,例如笔者使用了Windows XP,装好系统后一个驱动程序也不用安装。 设备驱动程序用来将硬件本身的功能告诉操作系统,完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。 所以简单的说,驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。 戴尔电脑驱动盘 驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。 当你在安装新硬件时总会被要求放入“这种硬件的驱动程序”,很多人这时就开始头痛。不是找不到驱动程序的盘片,就是找不到文件的位置,或是根本不知道什么是驱动程序。比如安装打印机这类的硬件外设,并不是把连接线接上就算完成,如果你这时候开始使用,系统会告诉你,找不到驱动程序。怎么办呢参照说明书也未必就能顺利安装。其实在安装方面还是有一定的惯例与通则可寻的,这些都可以帮你做到无障碍安装。 在Windows系统中,需要安装主板、光驱、显卡、声卡等一套完整的驱动程序。如果你需要外接别的硬件设备,则还要安装相应的驱动程序,如:外接游戏硬件要安装手柄、方向盘、摇杆、跳舞毯等的驱动程序,外接打印机要安装打印机驱动程序,上网或接入局域网要安装网卡、Modem甚至ISDN、ADSL的驱动程序。说了这么多的驱动程序,你是否有一点头痛了。下面就介绍Windows系统中各种的不同硬件设备的驱动程序,希望能让你拨云见日。 在Windows 9x下,驱动程序按照其提供的硬件支持可以分为:声卡驱动程序、显卡驱动程序、鼠标驱动程序、主板驱动程序、网络设备驱动程序、打印机驱动程序、扫描仪驱动程序等等。为什么没有CPU、内存驱动程序呢因为CPU和内存无需驱动程序便可使用,不仅如此,绝大多数键盘、鼠标、硬盘、软驱、显示器和主板上的标准设备都可以用Windows 自带的标准驱动程序来驱动,当然其它特定功能除外。如果你需要在Windows系统中的DOS 模式下使用光驱,那么还需要在DOS模式下安装光驱驱动程序。多数显卡、声卡、网卡等内置扩展卡和打印机、扫描仪、外置Modem等外设都需要安装与设备型号相符的驱动程序,否则无法发挥其部分或全部功能。驱动程序一般可通过三种途径得到,一是购买的硬件附

如何知道驱动程序已经安装

百度首页 | 百度空间 | 登录 nnffnnnnffnn 空间主页博客相册|个人档案 |好友查看文章 如何知道驱动程序已经安装2007-02-25 23:02Windows 98和Windows Me系统中∶在桌面上,用鼠标右键点击“我的电脑”图标,在弹出的菜单中点“属性”,即打开了“系统属性”窗口。在“系统属性”窗口中点击“设备管理器”选项卡,这时可在窗口中看到电脑中所有设备类型的列表。展开某一种设备类型前面的“+”号,即可看到电脑中该类设备的所有型号。如果你在这个窗口中看到有某设备类型前面有黄色的“?”号,即说明系统当前对该设备不认识还没有安装驱动程序。需要手工安装驱动程序。如果你在这个窗口中看到有某设备类型前面有黄色的“!”号,即说明当前该设备驱动有问题或存在硬件冲突需要重新安装驱动程序。 Windows 2000/XP/2003系统中∶ 在桌面上,用鼠标右键点击“我的电脑”图标,在弹出的菜单中点“属性”,即打开了“系统属性”窗口。在“系统属性”窗口中点击“硬件”选项卡,然后点击“设备管理器”,打开设备管理器窗口,这时可在窗口中看到电脑中所有设备类型的列表。展开某一种设备类型前面的“+”号,即可看到电脑中该类设备的所有型号。如果你在这个窗口中看到有某设备类型前面有黄色的“?”号,即说明系统当前对该设备不认识还没有安装驱动程序。需要手工安装驱动程序。如果你在这个窗口中看到有某设备类型前面有黄色的“!”号,即说明当前该设备驱动有问题或存在硬件冲突需要重新安装驱动程序。

在设备管理器中显示所有驱动程序已经安装,但并不能说明所有驱动程序安装正确,这一点要特别注意。在Windows系统中经常会出现系统错误识别硬件,而引起硬件工作异常或不能工作的现象。下一篇:Vista硬盘安装详细图解相关文章:?笔记本电脑 - 如何在 Windows XP... ?如何准确安装驱动程序 ? Windows中如何正确认识和安装驱... ?如何为笔记本安装驱动程序 ? Windows中如何正确认识和安装驱... ?如何在 Windows Server 2003 中... ?如何安装驱动程序 更多>> zds009 2007-06-21 22:18 我是在电脑维修店装的XP系统,不知道他给我装了没有主板的驱动器, 设备管理器中并没有主板那一项啊,那我怎么判断是否安装呢?谢谢 nnffnn 2007-06-22 06:58 你看没有黄色的问号,就是安装了。

USB驱动程序安装说明

USB编程电缆驱动程序安装说明 概述 USB编程电缆或USB接口产品是通过将电脑的USB接口模拟成传统的串行口(通常为COM3),从而使用现有的编程软件或通信软件,通过编程电缆与PLC 等设备的传统接口进行通信。 功能 ●支持的操作系统Windows2000/Windows XP ●完全兼容USB 2.0规范 ●USB总线供电(非隔离产品)、或USB总线供电与PLC的编程口同时供 电(隔离型产品) ●波特率:300bps~1Mbps自动适应 ●每台PC只支持一个USB接口转换产品(如一台电脑需使用多个USB 接口产品,需为各个USB接口产品设置不同的序列号,请咨询生产厂家 索取序列号设置工具软件) 系统要求 请在使用USB编程电缆之前确认你的电脑是IBM PC兼容型并具备以下最低系统要求: ●Intel兼容586DX4-100MHz中央处理器或更高 ●一个标准的USB接口(4-pin A型插座) ●运行操作系统为Windows2000或Windows XP 驱动程序的安装 驱动程序的安装非常简单,只需按提示进行即可,以Windows XP为例,按以下步骤进行: 1、打开将要连接USB编程电缆或USB接口产品的电脑电源,并确认电脑 的USB口已经启动并正常工作。 2、将USB编程电缆或USB接口产品插入电脑的USB接口,Windows将检 测到设备并运行添加新硬件向导帮助你设置新设备,插入驱动程序光盘 并单击下一步继续。 如果Windows没有提示找到新硬件,那么在设备管理器的硬件列表中, 展开“通用串行总线控制器”,选择带问号的USB设备,单击鼠标右键 并运行更新驱动程序。

安装win7驱动程序的3种主要方法

安装win7驱动程序的3种主要方法 1 通过网络自动安装驱动程序 在Windows 7系统中,安装设备驱动程序往往都需要获得管理员权限。当发现新的设备后,首先Windows 7会尝试自动读取硬件设备固件内部的硬件信息,然后 与%SystemRoot%\System32、Driver Store\File Repository文件夹系统自带的驱动程序安装信息文件夹包含的ID进行比对,如果能够找到相关符合的硬件∞,并且带有数字签名的驱动程序,那么会在不需要用户干涉的前提下自动安装正确的驱动程序,如图15-3所示为提示正在安装设备驱动程序。安装后自动对系统进行必要的设置,同时会在系统任务栏上,使用气球图标显示相关的提示信息。 图15-3 自动安装设备驱动程序如果经过对比后,Windows 7没有在自带的驱动程序安装信息文件夹中找到所对应的硬件信息,则会自动弹出“发现新硬件”对话框,接着根据对话框的提示进行安装硬件驱动程序即可具体安装方法如下。蕊当电脑检测到新硬件时,会自动到网上Windows Update站点搜索所需的驱动程序。如果找到对应的驱动程序,会自动下载并安装,如图15-4所示。 鬈囊如果系统在网上没有找到硬件所需的驱动程序,此时会允许用户手工安装驱动程序,如果有驱动 程序光盘,将相关光盘放入光驱,然后按照提示进行操作即可完成安装。如果没有光盘,按照如 图15-5所示的方法进行操作。

2 手动安装驱动程序 如果有些硬件设备的驱动程序为.inf格式,则需要用手动安装驱动的方式来安装。手动安装驱动程序的方法如下。 从“设备管理器”窗口中查找没有安装驱动的设备,一般没有安装驱动程序的设备前面标着一个 黄色的问号或显示一个感叹号。一般常见的未知声卡设备名为: PCI Multimedia Audio Device或“未 知多媒体设备”;未知网卡为:PCI Network Adpater Device;未知USB设备为:“未知USB设备”, 如图15-6所示。

如何写驱动程序

我这里重点的介绍如何写驱动程序,对于一些应用程序我就不做介绍了,因为我对于那些高层的东西写得很少。倘若再讲,有班门弄斧之嫌,呵呵! 作为WIN98和WIN2K推荐的一项新技术来说,USB的驱动程序和以往的直接跟硬件打交道的WIN95的VXD的方式的驱动程序不同,它应该是WDM类型的。 USB的WDM接口框图如下(这个图可以说是USB软件总体框图) 对于HID的设备,就可以采用上图左上边的结构,其它类的话采用右上的结构,其实右边的结构可以又细分成两层,一层是Class Driver,一层是Miniport Driver。而倒数第三行的UHCD和OpenHCI分别是由INTEL和COMPAQ两位老大定的一个和硬件有关的底层驱动程序标准,各位可以根据所需要的选择。 对于USB的驱动程序,大家还得去了解WDM驱动程序的写法,或者早些时候的NT驱动程序,其实WDM驱动程序可以看做是NT驱动程序的一个update,只是增加了一些新的特性。 “写驱动程序是一个很漫长和繁琐的工作,在此之前,你最好要熟悉硬件,熟悉C/C++,还要用过DDK,会用一些调试程序,如SOFTICE和WINDBG之类。如果一切就绪,你就可以开始写驱动程序,工作的进程有时侯会取决于你的运气”。(这是一位留美的朋友对我说的,我写出来和大家共享) 下面是我从一个朋友那里得到的一篇文章的摘要: NT驱动程序的分层结构 驱动程序是指管理某个外围设备的一段程序代码。NT采用更灵活的分层驱动方法,允许杂应用程序和硬件之间存在几个驱动程序层次。分层机制允许NT更加广泛地定义驱动程序,包括文件系统、逻辑卷管理器和各种网络组件,各种物理设备驱动程序等等。 1、设备驱动程序 这些是管理实际数据传输和控制特定类型的物理设备的操作的驱动程序,包括开始和完成I/O操作,处理中断和执行特定的设备要求的任何差错处理。

五款驱动管理软件横评

龙源期刊网 https://www.doczj.com/doc/5b15372674.html, 五款驱动管理软件横评 作者:香草 来源:《电脑爱好者》2009年第13期 驱动对于喜欢电脑的人来说是很熟悉的东西了,硬件发烧友们会为了榨取硬件的“潜能”而不断更新最新的驱动,普通爱好者会为了重装系统而进行驱动的安装和备份,而往往我们要为寻找合适的驱动而花费很大的力气,驱动管理软件让这些操作变得容易起来,批量安装,自动检测更新给我们带来了方便,你想知道这些工具哪个最好用吗?今天我们用严格的测试来告诉你答案。 毋庸置疑的测试平台 本次评测为对比测试,每一项测试都在同一软硬件平台下进行,保证了结果的客观,硬件配置如下: CPU:Intel Core2 Duo T7400 @ 2.16GHz;内存:DDR2 667 2GB;主板:Intel 945GM 显卡:GeForce 7400;硬盘类型:SATA 5400RPM。软件系统平台我们使用安装了所有补丁的Windows XP SP3。 客观公正的评测队伍 本次评测更加注重了参与性和互动性,由《电脑爱好者》全体软件编辑、CFan论坛网友和热心读者共同完成,保证了测试结果的公正。 实用为主的评测理念 秉承“实用至上”的准则,我们打破软件的枯燥功能对比,从我们对驱动管理软件的需求出发,分老系统驱动的备份与还原、新装系统的首次安装、个别硬件的驱动更新三个应用实例在对比各个工具的优劣,并在结果上数据客观对比,同时用才艺展示来对比软件的各种特色功能。 我们的测试对象 驱动精灵2009 B2 https://www.doczj.com/doc/5b15372674.html,/ 驱动魔法师 1.4.1.6

驱动程序和软件安装

第十二讲驱动程序安装 一、基本知识 1、驱动:为了让计算机识别各设备,发挥设备最佳性能的特殊程序。 2、驱动程序的获得途径 1)购买设备时附带设备的驱动光盘; 2)网上下载; 3、需要安装驱动的设备 主板、显卡、声卡、网卡、摄像头等; 二、驱动安装 1、注意事项 1)不同的设备驱动不同,所以安装驱动前必须明确哪些设备需要安装驱动; 在设备管理器中显示显示“?”或“!”的设备; 2)不同型号的设备驱动不同,安装驱动前,必须知道设备的型号; 一般开机第一屏幕显示主板等各设备的型号; 3)不同的操作系统,驱动不同; 2、常规驱动安装方法(以I915主板驱动为例) 1)放入驱动光盘,然后选择“Chipset”文件夹,选择“Intel”文件夹,选择“I915”文件夹,选择“WinXP”文件夹,然后双击SetUp.exe文件; 2)出现提示一直选择“确定”或“下一步”,直到完成,然后重启电脑; 3、设备管理器方式安装驱动 我的电脑---属性---硬件---设备管理器---选择有问题的设备(设备前显示“?”或“!”)---更新驱动程序---选择“从列表或指定位置安装”---利用“浏览”指定驱动所在文件夹,然后选择“确定”,系统自动安装驱动直到完成; 4、手动添加打印机驱动; 三、驱动卸载 控制面板---添加删除程序---选择需要卸载的驱动程序---选择“删除”---卸载完成后重启计算机; 第十三讲应用软件安装 一、软件分类 1、杀毒软件:BitDefender、Kaspersky (卡巴斯基)、F-Secure Anti-Virus、PC-cillin、McAfee VirusScan、Norton AntiVirus、瑞星、金山、江民 2、防火墙:天网、瑞星; 3、木马查杀:木马杀客、安全卫士、超级巡警 4、解压缩软件:WinRAR 5、下载软件:迅雷、电驴、BT、网际快车、网络传送带、脱兔 6、播放器:暴风影音、Windows Media Player、Real Player、快乐影音; 7、浏览器:Internet Explorer、The World、遨游、火狐 8、系统优化软件:优化大师、超级兔子 9、看图软件:ACDsee、Photoshop 10、办公软件:Office、WPS; 二、软件安装的方法 1、序列号方式安装(如: Photoshop)

操作系统、驱动程序和常用应用软件安装

操作系统、驱动程序和常用应用软件安装 一、安装Windows XP (1)使用Windows XP安装光盘启动计算并进入安装画面。在CMOS里将启动顺序调整为首先由光盘引导,将Windows XP安装光盘插入光驱,并重新启动。计算机启动会自动进入Windows XP安装画面,如图1所示。 (2)这里列出了当前硬盘的所有有效分区,如果不存在有效分区则显示“未划分空间”,按C键进入划分空间画面,与Fdisk类似需要输入新分区所占空间的大小,如图2 所示。

图1 安装画面(没有有效分区)图2 制定当前分区的大小 (3)确认分区后,系统将提示格式化,这里有4种模式供选择:NTFS格式对于仅安装Windows XP系统的用户比较适用,如果要安装多个操作系统则建议选择FAT格式,以避免其他系统不能访问NTFS分区的问题,另外两种方式分别是前两种的快速格式化方式,(如图3所示)。确认后系统会自动完成格式化,并回到分区选择画面,如图4所示,按Enter键确认安装。

图3 选择分区格式图4 选择系统安装的分区 (4)稍等片刻,安装程序复制完文件后会自动重新启动,并进入窗口式的安装界面,如图5所示。接下来的几十分钟里(视计算机配置的不同会有所差别,另外安装程序提示的剩余时间并不准确),Microsoft 会展示一些Windows XP的新功能和特点,这些都不需要人为操作和干预,直至安装程序完成文件复制和必要程序模块的建立。 (5)再次重新启动将进入Windows XP的使用界面并完成安装后的信息收集和激活,如图6所示,如实填 写即可。 全部完成之后系统会返回Windows XP管理员桌面,如图7所示。至此Windows XP系统安装成功,本书以后章节所有涉及软件操作的部分如没有特殊说明则都是在Windows XP环境下实现,另外考虑图像清晰度问题,本书中涉及Windows XP环境的插图均是在“Windows经典样式”模式下取得的。

驱动程序的作用及安装原则

新手指南:驱动程序的作用及安装原则 编者按:此文为学电脑栏目专为初学者准备。熟悉电脑的读者请跳过。欢迎高手到软件论坛传道授业解惑,或在评论中能帮助一下初学者。 在本栏目的上一个专题(WindowsXP系统安装视频和图文教程)中,笔者讨论了Windows XP系统安装的问题。但是,安装完XP系统并不等于是万事大吉,紧接下来就需要进行各种驱动程序的安装了。下面笔者就来探讨一下为什么要安装驱动程序,以及怎样来获取合适的驱动程序。 一、驱动程序的作用 驱动程序是直接工作在各种硬件设备上的软件,其“驱动”这个名称也十分形象的指明了它的功能。正是通过驱动程序,各种硬件设备才能正常运行,达到既定的工作效果。 从理论上讲,所有的硬件设备都需要安装相应的驱动程序才能正常工作。但像CPU、内存、主板、软驱、键盘、显示器等设备却并不需要安装驱动程序也可以正常工作,而显卡、声卡、网卡等却一定要安装驱动程序,否则便无法正常工作。这是为什么呢? 这主要是由于这些硬件对于一台个人电脑来说是必需的,所以早期的设计人员将这些硬件列为BIOS能直接支持的硬件。换句话说,上述硬件安装后就可以被BIOS和操作系统直接支持,不再需要安装驱动程序。从这个角度来说,BIOS也是一种驱动程序。但是对于其他的硬件,例如:网卡,声卡,显卡等等却必须要安装驱动程序,不然这些硬件就无法正常工作。 二、获取驱动程序 既然驱动程序有着如此重要的作用,那该如何取得相关硬件设备的驱动程序呢?这主要有以下几种途径: 1. 使用操作系统提供的驱动程序 Windows XP系统中已经附带了大量的通用驱动程序,这样在安装系统后,无须单独安装驱动程序就能使这些硬件设备正常运行。

开发驱动程序的过程

编写内核模式的代码于应用程序的代码是不同的,因为驱动程序是操作系统的信任的部分。它的代码必须遵循特殊的规则,小心的编写...... Content:编写内核模式的代码于应用程序的代码是不同的,因为驱动程序是操作系统的信任的部分。它的代码必须遵循特殊的规则,小心的编写。 驱动程序开发策略 像大多数的软件,驱动程序也使用有组织的开发方法。这个部分将介绍一些技巧来尽量减少开发时间。使用规范的开发方法 一般的,如果编写一个设备驱动程序没有一个开发策略。而是去匆忙的测试全新的硬件,往往测试代码会成为驱动程序的基础部分。也许设备驱动程序是被一些对操作系统不熟悉的程序员编写的,第一个驱动程序的编写会是一个驱动程序作者全面了解系统构架的旅程。 幸运的,疯狂的软件编写的日子过去了。在复杂的硬件和操作系统的环境下,想怎幺编写就怎幺编写的代码是不会运行的。 下面是一个简短的开发技术(它们中的一些是来自实时设计技术)列表。 1.数据流图可以将一个驱动程序分成独立的函数部分。通过这个图可以容易的看出各个部分的联系,和数据的流向。 2.状态机模型是一个描述驱动过程控制流的好的方法,特别是管理复杂的硬件和软件协议的驱动程序。在验证状态机的过程中,可能发现驱动程序中的同步问题。 3.分析期待的数据的重复率或者输入输出的响应将得到一系列定量的时序条件。对于确定驱动程序的总性能是非常重要的。 4.另一个有用的工具是外部事件和驱动程序响应动作的列表。这个列表应该包括设备的硬件事件和用户通过I/O管理器的软件事件。 使用这些技术分解一个驱动程序成为一个定义好的函数部分。有时,这些意味着分解一个简单的,单片的驱动程序一些硬件相关的端口和硬件无关的类驱动程序。在任何时候,在工程的开始,分析一个驱动程序的设计所花费的时间多于设计工程它自己,这样可以减少调试和维护的时间。 使用渐进的开发方法 一旦最初的分析和设计完成,就要开始编写代码了。按照以下的步骤进行可以减少调试的时间: 1.确定驱动程序需要哪些内核模式对象。 2.确定驱动程序需要哪些上下文环境或者状态信息和这些信息的存储位置。 3.首先编写DriverEntry和Unload例程,最初不要增加即插即用支持,这样允许通过控制面板手动的测试驱动程序的装载和卸载。 4.添加处理IRP_MJ_CREATE和IRP_MJ_CLOSE的操作和一些不需要进行设备的访问例程。然后可以使用一个简单的WIN32程序调用CreateFile和CloseHandle来测试。 5.添加寻找和分配驱动程序的硬件的代码,还有在驱动程序被卸载后的重新分配硬件的代码。如果硬件支持即插即用,这一步测试硬件和驱动程序的自动加载能力。 6.添加处理IRP_MJ_XXX函数的派遣例程,最初的例程应该没有使用物理设备,后来新的代码应该使用简单的WIN32程序进行测试,例如ReadFile和WriteFile调用,或者其它支持的函数。 7.最后完成Start I/O例程,ISR和DPC例程。现在可以使用真实的数据和硬件进行测试。 应一个有用的提示:当硬件的确切行为是不能肯定的时候,增加一个DeviceIoControl函数,这个例程直接访问设备的寄存器,这时可用一个简单的WIN32程序直接控制设备寄存器。记得在发布最后的驱动程序版本的时候删除这个功能。 使用驱动程序实例 Windows 2000驱动程序开发包(DDK)里面有相当多的驱动程序实例。有许多方法使用者些代码来使驱动程序的开发变的更容易,微软鼓励从这些代码实例中剪切和粘贴。

重装系统后该安装哪些驱动程序

重装系统后该安装哪些驱动程序? 重装系统后该安装哪些驱动程序呢?右键我的电脑--属性--硬件--打开设备管理器,看里面有几个黄色问号的选项,就需要安装几个驱动。 方法一:先把驱动光盘放入光驱 1)右键‘我的电脑’并选择‘属性’ 2)选择‘硬件’---单击‘设备管理器’ 3)双击带黄色问号的 4)重新安装驱动程序 5)选择‘是,仅这一次’,并单击‘下一步’然后选择‘自动搜索安装’后点击‘下一步’ 6)开始自动搜索安装相应驱动程序,完成后关闭,再安装其它有黄色问号的选项。什么时候设备管理器中没有黄色问号的项目,这个系统就安装成功了。 方法二:如果没有驱动光盘,用备份的驱动安装。

1)右键‘我的电脑’并选择‘属性 ’ 2)选择‘硬件’---单击‘设备管理器’ 3)双击带黄色问号的(显卡) 4)重新安装驱动程序 5)选择‘是,仅这一次,’然后单击 ‘下一步’ 6)选择‘从列表或指定的位置安装(高级) ’并点击下一步 7)选择‘在搜索中包括这个位置’,单击 ‘浏览’/ 8)找到备份的相应驱动,点击确定,单击‘下一步’/ 9)开始安装,完成,关闭 或者,安装一个“驱动精灵”,它会自动搜索你的机器中的设备需要安装哪些驱动程序,并提供下载地址,下载后双击即可安装。在华军、天空等大的软件下载网站去下载后,双击安装,运行,即可。

应用程序,操作系统,驱动程序和硬件

learning just as your favourite thing 应用程序,操作系统,驱动程序和硬件 (v1.0, 10 Feb 2011)

目录 目录 (2) 1. 软件和硬件 (3) 2. 将软件细分为两种 (3) 3. 引入操作系统之后 (5)

1.软件和硬件 我们通常所说的计算机系统(1)实际上可以被分成两个部分:硬件和软件。硬件就是构成计算机的所有设备,比如显示器,键盘,鼠标,主机里面的各种器件等等。作为计算机存在的物理基础,这部分通常是看得见,摸得着的;软件通常也叫程序,一般用来告诉这些硬件做什么以及如何做,比如你电脑里运行着的qq,我的魅族MP3播放器里面的操作控制程序等等都是软件。这些软件都要依赖特定的硬件才能完成正确的任务,比如你要用qq把一段话发给远端的朋友,那qq在收到你的话之后,就需要使用网卡发出去,MP3播放器控制软件也是一样。这里我们画出最简单的计算机组成图就是图一那样,我们把软件置上,硬件置下,并用一个箭头连接他们,用来表示它们之间的依赖。 图一: 软件和硬件 2.将软件细分为两种 实际上软件程序还可以细分成两种:系统程序软件和应用程序软件。系统程序软件实际上就是我们所说的驱动程序,它们的目的只有一个,就是为了驱动硬件,使之能正常地完成某种硬件功能,比如网卡的发送数据功能,声卡的播放声音功能。应用程序软件则用来接收用户的输入请求,进行很多业务运算后,再通过驱动程序驱动硬件去完成用户所要求的任务,有时候应用程序软件也负责把运算的最终结果反馈给用户。画成图就是图二那样,注意,在整个软件系统中,也只有驱动程序最清楚硬件的功能及工作方式,如果上面应用程序想要硬件完成什么样的任务,必须使用相应的驱动程序所提供的那些接口才行。驱动程序直接驱动硬件进行工作,而应用程序则只需要知道这些接口,通过它们间接去驱动硬件来完成任务。这种策略看似简单好用,但也会受到两方面因素的制约。 图二: 细分后的软件和硬件

相关主题
文本预览
相关文档 最新文档