Chinaunix首页 | 论坛 | 博客
  • 博客访问: 475229
  • 博文数量: 112
  • 博客积分: 2436
  • 博客等级: 大尉
  • 技术积分: 2769
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-04 19:48
文章分类

全部博文(112)

文章存档

2013年(7)

2012年(105)

分类: LINUX

2013-03-26 17:19:40

1、 硬件和软件的关系

1.1 互相成就对方
    
任何一个计算机系统的运转都是系统中软硬件共同作用的结果,没有硬件的软件是空中楼阁,而没有软件的硬件只是一堆废铁。
    硬件是底层基础,是所有软件得以运行的平台,代码最终会落实为硬件上的组合逻辑与时序逻辑。
    软件则实现了具体应用,它按照各种不同的业务需求而设计,完成用户的最终诉求。
    硬件较固定,软件则很灵活,可以适应各种复杂多变的应用。可以说,计算机系统的软硬件互相成就了对方。


1.2 不应互相渗透入对方的领域
    为尽可能快速地完成设计,应用软件工程师不想也不关硬件,而硬件工程师也难有足够的闲暇和能力来顾及软件。也就是说,应用软件工程师需要看到一个没有硬件的纯粹的软件世界,硬件必须被透明地呈现给他。
    这就要由驱动工程师来实现硬件对应用软件工程师的隐形。

2、 设备驱动的作用

    对设备驱动最通俗的解释就是“驱使硬件设备行动”。驱动与底层硬件直接打交道,按照硬件设备的具体工作方式,读写设备寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射等,最终让通信设备能收发数据,让显示设备能显示文字和画面,让存储设备记录文件和数据。
    由此可见,设备驱动充当了硬件和软件之间的纽带,它使得应用软件只需要调用系统软件的应用编程接口(API)就可让硬件去完成要求的工作。有以下两种情况:

    情况一:在系统没有操作系统的情况下,驱动工程师可以根据硬件设备的特点自行定义接口,如对串口的定义SerialSend()、SerialRecv()等(设备驱动的接口被直接提交给了应用软件工程师)。
    情况二:在有操作系统的情况下,驱动的架构则由相应的操作系统定义,驱动工程师必须按照相应的架构设计驱动,这样驱动才能良好地整合入操作系统的内核。

阅读(3588) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~