设备驱动层

 

设备驱动层

驱动层一般由硬件抽象层(HAL)、板级支持包(BSP)和驱动程序组成,是嵌入式系统中不可或缺的重要部分。它的作用是为上层程序提供外部设备的操作接口,并且实现设备的驱动程序。上层程序可以不管操作的设备内部实现,只需要调用驱动的接口即可。


硬件抽象层(HAL

嵌入式系统通常包含三个部分:

*  嵌入式应用程序

*  嵌入式操作系统

*  硬件平台

      应用程序运行在操作系统之上,利用操作系统提供的接口完成特定功能。操作系统一般是RTOS,完成应用的任务调度和控制等核心功能。硬件平台根据应用的不同,所具备的功能各不相同,而且所使用的硬件设备也不一样,因此具有复杂的多样性。

由于硬件平台的复杂多样,针对不同平台进行操作系统的移植是极为耗时的工作,因此经过不断发展,嵌入式系统的三层结构演化为四层结构,即在操作系统层和硬件平台之间,增加硬件抽象层(HAL)。

      硬件抽象层本质上就是一组对硬件进行操作的API接口,是对硬件功能抽象的结果。硬件抽象层通过API为操作系统和应用程序提供服务。一般上HAL包含相关硬件的初始化、数据的输入输出操作、硬件设备的配置操作等功能。

有了硬件抽象层,操作系统和应用程序就不需要关心底层的硬件平台信息,内核与硬件相关的代码也不必因硬件的不同而修改,只要硬件抽象层能够提供必需的服务即可,从而屏蔽底层硬件,方便进行系统的移植。

      HAL只是对硬件的一个抽象,对一组API进行定义,却不提供具体的实现。通常HAL各种功能的实现是以BSP的形式来完成对具体硬件的操作的。

HAL设计的一些要素是:

*  与硬件的密切相关性

*  与操作系统的无关性

*  接口的功能包括硬件或者系统所需硬件支持的所有功能

*  接口简单明了


板级支持包(BSP

      板级支持包是介于系统硬件和操作系统的驱动程序之间的一层,是HAL的具体实现,所以有些人也称BSP层位HAL

      BSP主要实现对操作系统的支持,为上层驱动程序提供访问硬件设备寄存器所需的函数,使之能够更好的运行于硬件主板。

      BSP的特点有:硬件相关性,BSP程序直接对硬件进行操作;操作系统相关性,不同操作系统的软件层次结构不同,硬件抽象层的接口定义不同,因此具体实现也不一样。BSP,一定要按照操作系统的接口定义来实现,因此,大多数的BSP编程过程都是在某一个成型的BSP模板上进行修改。

具体功能体现在两个方面:

1.系统启动时,完成对硬件的初始化,如对系统内存,寄存器以及设备的中断设置等。

2.为操作系统的通用设备驱动程序提供访问硬件的手段,亦即硬件相关的设备驱动。


设备驱动程序

      设备驱动程序是指操作系统中的驱动程序,为上层软件提供设备的操作接口,必要的时使用BSP提供的函数来实现硬件设备操作。驱动程序的好坏直接影响系统的性能。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果不创建设备驱动层,可以考虑以下几种方式来实现应用层与硬件或系统的通信: 1. 应用程序接口(API):操作系统或硬件厂商提供的API可以直接在应用程序中调用,以实现与硬件或系统的通信。这些API通常提供了一组函数或接口,用于访问硬件设备或执行系统操作。例如,Windows提供了许多API函数,如Win32 API、DirectX API等,用于应用程序与操作系统的交互。 2. 网络通信:应用程序可以通过网络协议与其他设备或系统进行通信。例如,使用TCP/IP协议栈进行网络通信,应用程序可以通过套接字(Socket)接口与其他远程设备或系统进行数据交换。 3. 文件操作:应用程序可以通过文件操作函数(如打开、读写文件等)来访问硬件设备或与系统进行通信。在某些情况下,硬件设备或系统会以文件的形式暴露给应用程序,应用程序可以通过对文件的读写来进行通信。 4. 进程间通信(IPC):如果应用程序之间需要进行通信,可以使用进程间通信机制。常见的IPC方式包括管道、共享内存、消息队列、信号量等。通过这些机制,应用程序可以在不创建设备驱动层的情况下实现进程间的数据交换和通信。 这些方式可以根据具体的应用场景和需求进行选择和使用。需要注意的是,某些特定的硬件设备或系统可能需要特定的通信方式,因此在选择通信方式时需要考虑设备或系统的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值