本文目录一览

1,linux键盘和鼠标驱动有HAL层吗

没有,这是windowsNT的技术,linux认为键盘和鼠标都属于同样的设备,不需要HAL的屏蔽
hal一般称为硬件抽象层,在linux平台上就是对linux内核驱动程序的封装简单的说就是驱动接口。

linux键盘和鼠标驱动有HAL层吗

2,jniservice服务层属于hal层吗

从以下内容可知,不是,是在Framework层实现: HAL层开发: (1).HAL是Hardware Abstraction Layer的简称。也称为硬件抽象层。 (2).硬件访问服务是在Framework层实现的。 (3).硬件访问服务是用Java语言实现的,硬件抽象层是用C++语言编写的。
不明白啊 = =!

jniservice服务层属于hal层吗

3,嵌入式系统HAL有几个BSP有几个

BSP:板级支持包,也就是根据电路板上的不同硬件给出不同的程序集合,其中可包含编译好的操作系统,驱动程序,Bootloder,或是裸机程序.HAL:硬件描述层,是为了增强操作系统的移植性,所以在主处理芯片和操作系统之间,添加一个层次,这使得操作系统在使用其他主处理芯片时,只需要修改这个层就可以,操作系统无需修改.在主处理芯片上之后,将会使用bootloader,进行硬件的初始化,以及操作系统的引导.之后会加载操作系统,以及驱动程序,操作系统或应用程序需要使用驱动程序,来控制电路板上的设备.
搜一下:嵌入式系统HAL有几个BSP有几个

嵌入式系统HAL有几个BSP有几个

4,BSP和HAL是什么关系

你可以把BSP看作是HAL在特定操作系统环境下的具体实现
bsp: 板级支持包, 也就是根据电路板上的不同硬件给出不同的程序集合, 其中可包含编译好的操作系统, 驱动程序, bootloder, 或是裸机程序. hal: 硬件描述层, 是为了增强操作系统的移植性, 所以在主处理芯片和操作系统之间, 添加一个层次, 这使得操作系统在使用其他主处理芯片时, 只需要修改这个层就可以, 操作系统无需修改. 在主处理芯片上之后, 将会使用bootloader, 进行硬件的初始化, 以及操作系统的引导.之后会加载操作系统, 以及驱动程序, 操作系统或应用程序需要使用驱动程序, 来控制电路板上的设备.
说的挺对的啊这话。你可以这么想, 硬件->bsp->驱动->HAL->framework

5,硬件抽象层的硬件抽象层HAL

硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。 从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。硬件抽象层是一个编程层,允许计算机操作系统在逻辑层而不是硬件层与硬件设备交互。Windows 2000就是支持硬件抽象层的操作系统之一。操作系统核心或者硬件驱动程序都可以调用硬件抽象层。无论哪种情况,调用程序都不用了解硬件的具体设计细节,只需要给出抽象层所需的参数即可。 *上层软件*虚拟驱动,设置管理模块*内部通信SERVER*内部以太网*内部通信CLIENT*用户接入口 *硬件抽象层具有与硬件的密切相关性*硬件抽象层具有与操作系统无关性*接口定义的功能应包含硬件或系统所需硬件支持的所有功能*接口定义简单明了,太多接口函数会增加软件模拟的复杂性*具有可测性的接口设计有利于系统的软硬件测试和集成

6,HAL的开发过程

微软认识到了这一点并尝试做一个很小的底层,以隐藏不同机器间的差异,这一层被称为硬件抽象层HAL。HAL的作用是将操作系统的其余部分表示为抽象的硬件设备,特别是去除了真正硬件所富含的瑕疵和特质。这些设备表现为操作系统的其它部分和设备可以使用的独立于机器的服务的形式(函数调用和宏)。通过使用HAL服务和间接硬件寻址,当移植到新的硬件上时,驱动程序和核心只需做很少的改动。移植HAL本身是直接的,因为所有的机器相关代码都集中在一个地方,并且移植的目标是充分定义的,即实现所有的HAL服务。选择HAL中的服务是和主板上的芯片相关的,因为这些芯片从一个机器到另一个机器的变化是具有可预见限度的。换句话说,设计它是为了隐藏不同厂商主板之间的差别,而不是X86和Alpha之间的差别。HAL服务包括对设备寄存器的访问、总线独立的设备寻址、中断处理和复位、DMA传输、定时器和实时时钟的控制、底层的自旋锁(Spin Lock)和多处理机同步、BIOS接口以及CMOS配置内存。HAL没有提供对特殊I/O设备(如键盘、鼠标、硬盘和内存管理单元)的抽象或服务。举一个例子来说明硬件抽象层的功能。考虑内存映射I/O和I/O端口的对比。一些机器具有前者,一些机器具有后者。驱动程序该怎样编写?是否使用内存映射呢?强制选择会使驱动程序无法移植到另一种实现方式的机器上,为此,硬件抽象层专为驱动程序的编写者提供了三个读设备寄存器的函数和另外三个写寄存器的函数:uc=READ_PORT_UCHAR(port); WRITE_PORT_UCHAR(port, uc)us=READ_PORT_USHORT(port); WRITE_PORT_USHORT(port, us)ul=READ_PORT_ULONG(port); WRITE_PORT_LONG(port, ul)这些函数分别读写无符号8位、16位、32位的证书到特定的端口。由HAL决定是否需要内存映射I/O,这样,一个驱动程序可以不被修改而在具有不同设备寄存器实现的机器间移植。驱动程序常由于各种原因而访问特定的I/O设备。在这个硬件层上,一个设备的某个总线上会有一个或多个地址。由于现代计算机常有多种总线(PCI、PCI-E、SCSI、USB等),很可能两个或更多设备具有相同的总线地址,因此需要通过某种方式来区分它们。HAL提供了一个服务,该服务通过将总线相连的设备地址映射到系统范围内的逻辑地址来识别设备。这样,驱动程序就不需要知道哪条总线上有哪个设备了。这些逻辑地址与操作系统为用户程序提供的指向文件和其他系统资源的句柄是类似的。这种机制也使总线结构的属性和寻址方式对于高层不可见。中断也存在类似的问题——它们也是总线相关的。同样,在这里,HAL为系统范围内的中断提供命名服务,并允许驱动程序以可移植的方法将中断服务例程和中断联系起来而不用知道哪个中断向量对应于哪条总线。此外,中断请求级别管理也在HAL处理。HAL提供的另一项服务是以一种设备独立的方式设置并管理DMA传输。系统范围内的DMA引擎与特定I/O卡上的DMA引擎都可以操作。对设备的访问是通过其逻辑地址进行的。HAL还实现了软件的分散、聚集(scatter/gather)(对非连续的物理存储块进行写或读)。此外,HAL还以一种可移植的方式管理时钟与定时器。时间记录以100ns为单位(起始于1601年1月1日),这样就比以2s为单位(起始于1980年1月1日)的MS-DOS事件记录精确得多,HAL还为许多发生于17.18.19世纪的计算机相关事件的记录提供了致贺词。这种时间服务将驱动程序从始终运行的实际频率中分离出来。内核组件(Kernel Component)有时需要在非常低的层次上同步,特别是为了避免多处理机系统中的竞争状态。HAL提供了一些原子方法来管理这种同步,如自旋锁——一个CPU仅仅等待一个由其他CPU占用的系统资源被释放,尤其是在资源只被几条机器指令所占用的情况下。最后,当系统启动以后,HAL与BIOS进行对话,并检查CMOS配置内存(如果有的话),以查明该系统包含了哪些总线和I/O设备,以及他们是如何配置的。之后这个信息会被存入注册表,这样,其他系统组件就能够查询它,而不必了解BIOS或配置内存如何工作。由于HAL高度依赖于机器,它必须与其所装入的系统完全匹配,因此,Windows的安装光盘上提供了许多种版本的HAL。系统安装时,选择一种合适的HAL并以hal.dll为名复制到硬盘上的系统目录windows\system32或winnt\system32下。之后所有的启动都使用该版本的HAL,删除这个文件将导致系统无法启动。

文章TAG:hal层  linux键盘和鼠标驱动有HAL层吗  
下一篇