驱动程序是如何驱动硬件的?
设备驱动程序用来将硬件本身的功能告诉操作系统,完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。 所以简单的说,驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。 驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia 显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。
驱动程序相比应用程序没有什么特别的,特别只是特别在它们可以拥有一些特权指令,访问操作系统的关键区域以及特殊的地址。硬件大致分为几类,一类是像显卡之类的硬件,本质上它们相当于一个异构的处理器,它拥有专门的独立的指令,你的驱动程序相当于上传这些代码给它,然后它自己处理。
一类是类似硬盘、网卡之类的,高速IO,这些一般使用DMA,操作起来如同读写内存,操作系统会映射地址给这些设备,你去读写,好像是写内存,其实这些地址在你和设备之间共享。
还有一类类似USB、蓝牙、打印机、COM等等,这些外设相当于外设通讯,通过端口收发数据
严格来说,几乎所有的硬件都包含自己的cpu,当然有自己的指令,但是依照和主机连接方式的不同,并不一定需要主机传送什么指令。好比x86的计算机和arm的手机通讯,计算机并不需要了解手机的cpu用什么指令。
驱动程序不是什么翻译,它就是一个程序。
和你写的hello world本质上没有区别,只是这个程序运行在特权等级下。
驱动程序是如何驱动硬件的?相关推荐
- 此nvidia驱动程序与此windows版本不兼容,此图形的驱动程序无法找到兼容的驱动硬件
此nvidia驱动程序与此windows版本不兼容,此图形的驱动程序无法找到兼容的驱动硬件 单纯的记录帖 一.修改exe文件后缀为rar并解压 二.进入Display.Driver目录 三.打开nvc ...
- keil4怎么移植其他人的程序_裸机程序如何驱动硬件?
任何计算机系统都是软件和硬件的结合体,如果只有硬件而没有软件,则硬件是没有灵魂的躯壳:如果只有软件没有硬件,则软件就是一堆无用的字符.在底层硬件的基础上,操作系统覆盖一层驱动,屏蔽底层硬件的操作,通过 ...
- 设备树与驱动的关系_裸机程序如何驱动硬件?
任何计算机系统都是软件和硬件的结合体,如果只有硬件而没有软件,则硬件是没有灵魂的躯壳:如果只有软件没有硬件,则软件就是一堆无用的字符.在底层硬件的基础上,操作系统覆盖一层驱动,屏蔽底层硬件的操作,通过 ...
- c语言如何控制电脑串口,C语言直接驱动硬件实现PC机的串口操作
熟悉C语言的人都知道,虽然C语言是一门高级语言,拥有很多高级语言的特性,但是作为一种由低级语言到高级的过渡,他又继承了很多低级语言的特性,那就是可以直接操作计算机的硬件设备.本人近日在学习有关PLC网 ...
- C语言直接驱动硬件实现PC机的串口操作
熟悉C语言的人都知道,虽然C语言是一门高级语言,拥有很多高级语言的特性,但是作为一种由低级语言到高级的过渡,他又继承了很多低级语言的特性,那就是可以直接操作计算机的硬件设备.本人近日在学习有关PLC网 ...
- tl-wn821n linux驱动程序,tl wn821n驱动下载
适用于TL-WN821N V4.0版本网卡的驱动程序,本驱动适用于TL-WN821N V1.0和v2.0无线网卡,增加了PSP XLink功能. 支持32位windows2k/xp/win7,也支持6 ...
- 【开源电机驱动】H 桥驱动-硬件篇
原文地址:http://www.modularcircuits.com/blog/articles/h-bridge-secrets/h-bridge_drivers/ 本文翻译校正稿件,含有译者批注 ...
- 详解Linux-I2C驱动(硬件原理\驱动分析\测试)
目录 一.LinuxI2C驱动--概述 1.1 写在前面 1.2 I2C 1.3 硬件 1.4 软件 1.5 参考 二.LinuxI2C驱动--I2C总线 2.1 I2C总线物理结构 2.2 I2C总 ...
- Linux驱动(驱动程序开发、驱动框架代码编译和测试)
目录 什么是驱动: 设备分类: 驱动认知: 字符设备驱动工作原理 字符设备.字符设备驱动与用户空间访问该设备的程序三者之间的关系 驱动程序开发步骤 基于驱动框架的代码开发 驱动模块代码编译和测试 加载 ...
- Linux 驱动程序之字符驱动
Linux 驱动程序之字符驱动 系统调用.内核.驱动程序的关系 主要驱动类型: -> 字符设备 ( c) -> 块设备 (b) -> 网络设备 (ifconfig) 字符设备和块设备 ...
最新文章
- 从源码角度分析 Mybatis 工作原理
- 别说了,有画面了!Google文本生成图像取得新SOTA,CVPR2021已接收
- src漏洞挖掘|一个谎言需要无数谎言来弥补
- ASP.NET Core 数据加解密的一些坑
- 【剑指offer】面试题42:连续子数组的最大和(java)
- 计算机98k音乐,【土豆】handclap 98K 完整版
- 一个问题引发的连环血案
- addr2line -f -e *.so 0x9d69
- java 写文件 并发_记录一次Java文件锁引起的并发写文件问题
- 学堂在线计算机,学堂在线PC客户端
- R语言报错:Error in scan
- 啊哈C语言 第1章 编程改变思维(第0讲)
- 【301】怪诞行为学-可预测的非理性
- mysql当周过生日的人_已知出生年月日,如何查询出本周过生日的人员?
- 你说南京很好,但不是你最想去的城市,那么,上海呢,要不借这个机会去看看吧--写给自己
- ERDAS遥感影像处理-专题图制作
- JdbcTemplate 查询数据库 + 具名参数 NamedParameterJdbcTemplate
- jwplayer 自定义logo已经右键菜单事件
- gre计算机考试科目,GRE考试内容
- php站群跳转系统,DiY-Page php 站群系统下载|DiY-Page php 站群系统官方下载-太平洋下载中心...