1. 怎么写驱动
这个可是一个艰巨的工程,计算器的驱动都是用计算机语言写的,想学习写东西,那得从最简单的C C++ JAVA BASIC等等一套的配合,可只要精通一样就行,如果自学写驱动,那你就是天才了,基础WINDOS的系统内核是C语言所写,那么你学一圈了之后还是要用C语言来写,驱动也是一样,不过那手法得老高了,有些人学了很久的计算机语言,做出来的东西都不知道干嘛的,所以这个手法出手就得年薪十万左右。
所以这是一条漫长的艰辛道路,我曾经也弄过一阶段,但这东西收益周期太长了,半路出家况且没人带你的话,那几乎是没什么发展的。
2. 如何编写驱动程序
这个问题可能大家都知道,但是认识可能不是很深刻,我也是自己写过一个驱动后才明白。驱动,就是屏蔽到底层设备的细节,比如,键盘驱动程序,QT在打开键盘的设备节点的时候,它不知道系统的键盘是什么,是GPIO接的,是I2C总线接的,它都不知道,它所做的就是read,如果有按键,那么就能读出键值,如果没有sleep啊。应用程序就只能做到这里了,剩下的都是由驱动完成了。这就是驱动的任务。
上边说的可能大家都明白,这些还是经常被忽略的。
2 驱动的工作流程。
3 驱动的编写方法
我觉得写驱动需要很多驱动以外的知识,我是学计算机的,直到我写驱动程序后,我才明白了很多计算机体系结构,操作系统和组成原理讲的东西。
然后再去看看linux device driver可能会好点。
不过今天多说一句,如果现在有计算机系的学生想做这个,我很负责的说,不要做这个,如果想做一个合格的计算机系的研究生,就要去做人工智能,模式识别,算法复杂度,机器学习,其它的都是没有什么意义的。写一个驱动,移植一个os,上了两年学,学到的就是这些,那还不如去工作,工作两年绝对可以学到这些多多的东西。但是工作后是没有办法学习那些理论性的东西,那些对你今后十年都影响的东西。
反而如果学电子的同学,学点os,过来做,可能更合适。
5 驱动程序因人而异
不同的人对问题理解不同,设计出来的驱动程序也不同。建议大家好好理解理解计算机体系结构,理解了这个,驱动就可以合理的写出来了。
3. 电脑怎么做程序、驱动
一、换了内存和硬盘还有问题,看来是装机硬件质量有问题,最好找身边会的人给全面检查一下,换掉有问题的硬件。
二、用下边的办法装系统
(一)借或到电脑专卖、音像专卖行花4-5元买Ghost XP(SP2 或SP3)系统光盘,用这类光盘装系统,除系统文件外,还集成了大量的硬件驱动程序,设置光驱启动,放入光盘,将原C盘中的所有文件删除,对其它分区不做任何改动,约15分钟完成安装,便能正常运行。注意装前要将C盘中需要保存的文件移到其它分区。
(二)设置光驱启动
Award BIOS 6.0设置
重启,按Del进BIOS,用键盘方向键↑↓选中“Advanced Bios Features(高级BIOS参数设置)”-回车-进“Advanced Bios Features(高级BIOS参数设置)”界面-用键盘方向键↑↓选中“First Boot Device ”,用PgUp或PgDn翻页将HDD-O改为CDROM(光驱启动),按F10,按Y,回车,保存退出。
AMI BIOS 8.0设置
启动电脑,按Del进入AMI BIOS设置程序主界面-在上方菜单中用→←方向键选中“Boot”-回车-在打开的界面中用方向键↑↓选中“ Boot Device Priority”使其反白-回车-在Boot Device Priority界面中用↑↓键选“1st Boot Device”,使其反白-回车-在“options”对话框中用↑↓键,选中 “PS-ATAPI CD-ROM”(光驱启动),使其反白-回车-可以看到“1st Boot Device”, 第一启动已成为光驱启动-按F10-选OK-回车,保存退出。
(三)光盘安装
1、将光盘放入光驱,重启,在看到屏幕底部出现CD……字样的时候,及时按任意键,否则计算机跳过光启又从硬盘启动了。
2、用键盘方向键↑选“安装XP系统到硬盘第一分区”,回车。
3、进复制安装界面,以下是自动进行,什么也不要动,如果你不想安装一些驱动程序,可手动选择过程大致是:显示复制进度,重启,自动安装驱动,XP安装程序,请稍候(用时较长,耐心等侍),正在执行最后任务,自动重启,显示“欢迎使用”后进入桌面。
4、手动设置显示器分辨率和刷新率,完成安装。
三、用驱动精灵装更新驱动。
(一)驱动精灵下载
(二)驱动精灵安装
从网上驱动这家下载“驱动精灵2010”,下载后用解压软件打开,按提示要求安装。
(三)使用驱动精灵更新硬件驱动
1、开机上网,打开驱动精灵2010,在”基本状态”界面中点击“驱动更新”右边的倒三角-选用”标准模式”,打开新窗口。
2、点选”推荐更新驱动”,下面显示可更新的硬件。
3、选择要更新驱动的硬件,打“下载”。
4、显示下载进度,完成后,打“安装”。
5、按提示要求安装,点击“完成”,重启。
6、可以选一个硬件驱动下载安装,也可以同时选多个硬件驱动下载安装。
7、注意,以上操作都要要在连网的情况下进行。如果用户过多,线路忙,安装受阻,可过一会打开驱动精灵再装。
4. 如何编写网卡的驱动程序
Linux操作系统网络驱动程序编写 一.Linux系统设备驱动程序概述 1.1 Linux设备驱动程序分类 1.2 编写驱动程序的一些基本概念 二.Linux系统网络设备驱动程序 2.1 网络驱动程序的结构 2.2 网络驱动程序的基本方法 2.3 网络驱动程序中用到的数据结构 2.4 常用的系统支持 三.编写Linux网络驱动程序中可能遇到的问题 3.1 中断共享 3.2 硬件发送忙时的处理 3.3 流量控制(flow control) 3.4 调试 四.进一步的阅读 五.杂项 一.Linux系统设备驱动程序概述 1.1 Linux设备驱动程序分类 Linux设备驱动程序在Linux的内核源代码中占有很大的比例,源代码的长度日 益增加,主要是驱动程序的增加。
在Linux内核的不断升级过程中,驱动程序的结构 还是相对稳定。在2.0.xx到2.2.xx的变动里,驱动程序的编写做了一些改变,但是 从2.0.xx的驱动到2.2.xx的移植只需做少量的工作。
Linux系统的设备分为字符设备(char device),块设备(block device)和网络 设备(network device)三种。字符设备是指存取时没有缓存的设备。
块设备的读写 都有缓存来支持,并且块设备必须能够随机存取(random access),字符设备则没有 这个要求。典型的字符设备包括鼠标,键盘,串行口等。
块设备主要包括硬盘软盘 设备,CD-ROM等。一个文件系统要安装进入操作系统必须在块设备上。
网络设备在Linux里做专门的处理。Linux的网络系统主要是基于BSD unix的socket 机制。
在系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。系 统里支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多协议的支持。
1.2 编写驱动程序的一些基本概念 无论是什么操作系统的驱动程序,都有一些通用的概念。操作系统提供给驱动 程序的支持也大致相同。
下面简单介绍一下网络设备驱动程序的一些基本要求。 1.2.1 发送和接收 这是一个网络设备最基本的功能。
一块网卡所做的无非就是收发工作。所以驱 动程序里要告诉系统你的发送函数在哪里,系统在有数据要发送时就会调用你的发 送程序。
还有驱动程序由于是直接操纵硬件的,所以网络硬件有数据收到最先能得 到这个数据的也就是驱动程序,它负责把这些原始数据进行必要的处理然后送给系 统。这里,操作系统必须要提供两个机制,一个是找到驱动程序的发送函数,一个 是驱动程序把收到的数据送给系统。
1.2.2 中断 中断在现代计算机结构中有重要的地位。操作系统必须提供驱动程序响应中断 的能力。
一般是把一个中断处理程序注册到系统中去。操作系统在硬件中断发生后 调用驱动程序的处理程序。
Linux支持中断的共享,即多个设备共享一个中断。 1.2.3 时钟 在实现驱动程序时,很多地方会用到时钟。
如某些协议里的超时处理,没有中 断机制的硬件的轮询等。操作系统应为驱动程序提供定时机制。
一般是在预定的时 间过了以后回调注册的时钟函数。在网络驱动程序中,如果硬件没有中断功能,定 时器可以提供轮询(poll)方式对硬件进行存取。
或者是实现某些协议时需要的超时 重传等。 二.Linux系统网络设备驱动程序 2.1 网络驱动程序的结构 所有的Linux网络驱动程序遵循通用的接口。
设计时采用的是面向对象的方法。 一个设备就是一个对象(device 结构),它内部有自己的数据和方法。
每一个设备的 方法被调用时的第一个参数都是这个设备对象本身。这样这个方法就可以存取自身 的数据(类似面向对象程序设计时的this引用)。
一个网络设备最基本的方法有初始化、发送和接收。 ------------------- --------------------- |deliver packets | |receive packets queue| |(dev_queue_xmit()) | |them(netif_rx()) | ------------------- --------------------- | | / / | | ------------------------------------------------------- | methods and variables(initialize,open,close,hard_xmit,| | interrupt handler,config,resources,status。
) | ------------------------------------------------------- | | / / | | ----------------- ---------------------- |send to hardware | |receivce from hardware| ----------------- ---------------------- | | / / | | ----------------------------------------------------- | hardware media | ----------------------------------------------------- 初始化程序完成硬件的初始化、device中变量的初始化和系统资源的申请。发送 程序是在驱动程序的上层协议层有数据要发送时自动调用的。
一般驱动程序中不对发 送数据进行缓存,而是直接使用硬件的发送功能把数据发送出去。接收数据一般是通 过硬件中断来通知的。
在中断处理程序里,把硬件帧信息填入一个skbuff结构中,然 ------------------ Linux操作系统网络驱动程序编写 ------------------- ------------ Contact the author by mailto:bordi@bordi.dhs.org ------ 后调用netif_rx()传递给上层处理。 2.2 网络驱动程序的基本方法 网络设备做为一个对象,提供一些方法供系统访问。
正是这些有统一接口的方法, 掩蔽了硬件的具体细节,让系统对各种网络设备的访问都采用统一的形式,做到硬件 无关性。 下面解释最基本的方法。
2.2.1 初始化(initialize) 驱动程序必须有一个初始化方法。在把驱动程序载入系统的时候会调用这个初 始化程序。
它做以下几方面的工作。检测设备。
在初始化程序里你可以根据硬件的 特征检查硬件是否存在,。
5. 怎么用汇编语言写驱动程序
先安装MASM,下载地址为: .cn/download/masm32v8.exe。
再安装由一个俄罗斯人Four-F开发了一套工具Kmdkit(Kernel Mode Driver Development Kit for MASM32 ),该工具下载地址为: .cn/download/KmdKit.rar。 Kmdkit只有一个压缩文件,展开后有几个子目录和两个文件install.bat,readme.txt,安装方法很简单,就是: 把\include\w2k下的文件拷到 \masm32\include 把\macros\Strings.mac下的文件拷到\masm32\macros 把\lib\w2k 下的文件拷到\masm32\lib 或者直接运行 install.bat,安装完毕。
安装完成后,就可以用汇编编写驱动了,罗云彬网站有Kmd教程,可以去下下来看看,下载地址是: .cn/program/KmdTutCn.chm。 这个教程非常详细,把汇编写驱动的很多问题都写得清清楚楚,我用过这个工具写过驱动,我只看了kmd教程就会编了,而Kmdkit中还有很多例子,有所需的驱动框架,很有用的。