驱动程序就是驱使硬件工作的程序,那么程序是如何驱使硬件工作呢?当然是操作CPU芯片内部提供的各模块控制器的控制寄存器,状态寄存器及数据寄存器,针对这些寄存器进行的读写操作就能够完全的控制硬件工作。
对于只需要进行单任务循环的应用场合,就不需要使用操作系统。在没有操作系统的情况下,设备驱动的接口被直接提交给了应用软件工程师,应用软件没有跨越任何层次就直接访问了设备驱动的接口。驱动包含的接口函数也与硬件的功能直接吻合,没有任何附加功能。
但是当一个复杂的软件系统需要处理多个并发的任务时,没有操作系统,想完成多任务并发是很困难的。当系统中包含操作系统后,设备驱动会变得怎样?首先,无操作系统时设备驱动的硬件操作工作仍然是必不可少的,没有这一部分,驱动不可能与硬件打交道。其次,我们还需要将驱动融入内核。为了实现这种融合,必须在所有设备的驱动中设计面向操作系统内核的接口,这样的接口由操作系统规定,对一类设备而言结构一致,独立于具体的设备。同时,使用操作系统后,操作系统访问设备的各种机制以及针对多进程的各种机制都需要在驱动程序中实现。
一般来说,在操作系统运行时,外设的I/O内存资源的物理地址是已知的,由硬件的设计决定。但是CPU通常并没有为这些已知的外设
版权声明:本文为dageda1111原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。