收藏 分享(赏)

设备驱动层解析.docx

上传人:kaixinyidian 文档编号:12024334 上传时间:2021-07-30 格式:DOCX 页数:13 大小:46.05KB
下载 相关 举报
设备驱动层解析.docx_第1页
第1页 / 共13页
设备驱动层解析.docx_第2页
第2页 / 共13页
设备驱动层解析.docx_第3页
第3页 / 共13页
设备驱动层解析.docx_第4页
第4页 / 共13页
设备驱动层解析.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、设备驱动层驱动层一般由0.1.1.(-.HAL)二圾级支我包(B.SP)初胆动程序.组成,是嵌入式系统 中不可或缺的重要部分。它的作用是为上层程序提供外部设备的操作接口,并且实现设备 的驱动程序。上层程序可以不管操作的设备内部实现,只需要调用驱动的接口即可。硬件抽象层(HAL)硬件抽象层的层次结构HAL层可细分为:common HAL(通用抽象层)、architecture HAL( 体系结构抽象层)、 variant HAL(变体抽象层)和platform HAL( 平台抽象层)。体系结构抽象层:eCos所支持的不同处理器系列具有不同的体系结构,如 ARM系歹1、 PowerPC系列、MIP

2、S系列等,体系结构抽象层对 CPU的基本结构进行抽象和定义,此 外它还包括中断的交付处理、上下文切换、 CPU启动以及该类处理器结构的指令系统等。 变体抽象层指的是处理器在该处理器系列中所具有的特殊性,这些特殊性包括Cache、MMU、FPU等,eCos的变体抽象层就是对这些特殊性进行抽象和封装。平台抽象层是对当前系统的硬件平台进行抽象,包括平台的启动、芯片选择和配置、定时 设备、I/O寄存器访问以及中断寄存器等。硬件抽象层的这三个子模块之间没有明显的界线。对于不同的目标平台,这种区分具有一 定的模糊性。例如,MMU和Cache可能在某个平台上属于体系结构抽象层,而在另一个 平台上则可能属于变

3、体抽象层的范围;再比如,内存和中断控制器可能是一种片内设备而 属于变体抽象层,也可能是片外设备而属于平台抽象层eCos的移植通过这三个子模块来完成,即平台抽象层的移植、变体抽象层的移植和体系 结构抽象层的移植。对一个新的体系结构来说,具体系统结构抽象层的建立相对来说比较 困难,需要编写新的体系结构抽象层。eCos支持大部分当前广泛使用的嵌入式 CPU,已 具有了支持各种体系结构的硬件抽象层。因此,eCos的移植很少需要进行体系结构抽象层的编写。一般来说,进行eCos开发时,移植的主要工作在于变种抽象层和平台抽象层,这是由于 eCos已实现了绝大多数流行嵌入式 CPU的体系结构抽象层。其中,平台

4、抽象层主要完成 的工作包括:内存的布局、平台早期初始化、中断控制器以及简单串口驱动程序等嵌入式系统通常包含三个部分:嵌入式应用程序嵌入式操作系统硬件平台应用程序运行在操作系统之上,利用操作系统提供的接口完成特定功能。操作系统一 股是RTOS,完成应用的任务调度和控制等核心功能。硬件平台根据应用的不同,所具备 的功能各不相同,而且所使用的硬件设备也不一样,因此具有复杂的多样性。由于硬件平台的复杂多样,针对不同平台进行操作系统的移植是极为耗时的工作,因此经 过不断发展,嵌入式系统的三层结构演化为四层结构,即在操作系统层和硬件平台之间, 增加硬件抽象层(HAL)。硬件抽象层本质上就是一组对硬件进行操

5、作的 API接口,是对硬件功能抽象的结果。硬件抽象层通过API为操作系统和应用程序提供服务。一般上 HAL包含相关硬件的初始化、数据的输入输出操作、硬件设备的配置操作等功能 有了硬件抽象层,操作系统和应用程序就不需要关心底层的硬件平台信息,内核与硬件相 关的代码也不必因硬件的不同而修改,只要硬件抽象层能够提供必需的服务即可,从而屏 蔽底层硬件,方便进行系统的移植。HAL只是对硬件的一个抽象,对一组API进行定义,却不提供具体的实现。通常HAL 各种功能的实现是以BSP的形式来完成对具体硬件的操作的。HAL设计的一些要素是:与硬件的密切相关性与操作系统的无关性接口的功能包括硬件或者系统所需硬件支

6、持的所有功能接口简单明了板级支持包(BSP)板级支持包是介于系统硬件和操作系统的驱动程序之间的一层,是HAL的具体实现,所以有些人也称BSP层位HAL。BSP主要实现对操作系统的支持,为上层驱动程序提供访问硬件设备寄存器所需的函 数,使之能够更好的运行于硬件主板。BSP的特点有:硬件相关性,BSP程序直接对硬件进行操作;操作系统相关性,不同 操作系统的软件层次结构不同,硬件抽象层的接口定义不同,因此具体实现也不一样。BSP, 一定要按照操作系统的接口定义来实现, 因此,大多数的BSP编程过程都是在某一个成型 的BSP模板上进行修改。具体功能体现在两个方面:1 .系统启动时,完成对硬件的初始化,

7、如对系统内存,寄存器以及设备的中断设置等。2 .为操作系统的通用设备驱动程序提供访问硬件的手段,亦即硬件相关的设备驱动设备驱动程序设备驱动程序是指操作系统中的驱动程序,为上层软件提供设备的操作接口,必要的 时使用BSP提供的函数来实现硬件设备操作。驱动程序的好坏直接影响系统的性能。BSP (board support package ) 板级支持包 BSP (board support package ) 是板 级支持包,是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能 够更好的运行于硬件主板。

8、在嵌入式系统软件的组成中,就有 BSP。BSP是相对于操作系 统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一 CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的, 所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个 成型的BSP模板上进行修改)。这样才能与上层 OS保持正确的接口,良好的支持上层 OS。BSP主要功能为屏蔽硬件,提供操作系统及硬件驱动,具体功能包括:1 .单板硬件初始化,主要是 CPU的初始化,为整个软件系统提供底层硬件支持2 .为操作系统提供设备驱动程序和系统中断服务程序3

9、 .定制操作系统的功能,为软件系统提供一个实时多任务的运行环境4 .初始化操作系统,为操作系统的正常运行做好准备举例 在 VxWorks 中的网卡驱动,首先在config.h 中包含该网卡,然后将网卡含网卡的信息的参数放入数组END_TBL_ENTRY endDevTbl 中,系统通过函数muxDevLoad( ) 调用这个数组来安装网卡驱动。而在 Linux 中的网卡驱动,是在space.c 中声明该网络设备,再把网卡驱动的一些函数加到 dev 结构中,由函数ether_setup ()来完成网卡驱动的安装。纯粹的BSP所包含的内容一般说来是和系统有关的驱动和程序,如网络驱动和系统中网络协议

10、有关,串口驱动和系统下载调试有关等等。离开这些驱动系统就不能正常工作。用户也可以添加自己的程序到BSP中,但严格来说不应该算 BSP.一般来说这种做法不建议。因为一旦操作系统能良好运行于最终的主板硬件后, BSP 也就固定了,不需要做任何改动。而用户自己在BSP 中的程序还会不断的升级更新,这样势必对BSP 有不好的影响,对系统造成影响,同时由于 BSP 调试编译环境较差,也不利于程序的编译调试。上层程序Tools - ApplicationsI/O SystemVxWorks LibrariesTCP/IPWind KernelBSPSCSI ControllerrSerial Contro

11、llerClock TimerEthernet Controller.硬件BSP在嵌入式系统和 Windows系统中的不同其实运行与PC 机上的 windows 或 linux 系统也是有BSP 的。 只是 PC 机均采用统一的X86体系架构,这样一定操作系统(windows,linux.)的BSP相对x86架构是单一确定 的, 不需要做任何修改就可以很容易支持OS 在 x86 上正常运行, 所以在 PC 机上谈论 BSP这个概念也没什么意义了。而对嵌入式系统来说情况则完全不同,目前市场上多种结构的嵌入式CPU (RISC)并存(PPC,ARM,MIPS.),为了性能的需要,外围设备也会有不同

12、的选择和定义。一个嵌入式 操作系统针对不同的CPU,会有不同的BSP,即使同一种CPU,由于外设的一点差别(如外部 扩展 DRAM 的大小,类型改变), BSP 相应的部分也不一样。所以根据硬件设计编写和修改 BSP,保证系统正常的运行是非常重要的。BSP 和 PC 机主板上的 BIOS 区别很大, BIOS 主要是负责在电脑开启时检测、 初始化系统设备(设置栈指针,中断分配,内存初始化.)、装入操作系统并调度操作系统向硬件发出的指令, 它的 Firmware 代码是在芯片生产过程中固化的, 一般来说用户是无法修改。其实是为下载运行操作系统做准备,把操作系统由硬盘加载到内存,并传递一些硬件接口

13、设置给系统。 在 OS 正常运行后, BIOS 的作用基本上也就完成了, 这就是为什么更改 BIOS 一定要从新关机开机。PC 机 BIOS 的作用更象嵌入式系统中的 Bootloader (最底层的引导软件,初始化主板的基本设置,为接收外部程序做硬件上的准备)。与Bootloader 不同的是 BIOS 在装载OS 系统的同时,还传递一些参数设置(中断端口定义,.),而 Bootloader 只是简单的装载系统。BSP 是和操作系统绑在一起运行在主板上的, 尽管 BSP 的开始部分和 BIOS 所做的工 作类似,可是大部分和BIOS不同,作用也完全不同。此外 BSP还包含和系统有关的基本 驱

14、动(串口,网口),此外程序员还可以编程修改 BSP,在BSP中任意添加一些和系统无 关的驱动或程序,甚至可以把上层开发而系统规划法的统统放到 BSP 中。而 BIOS 程序是用户不能更改,编译编程的,只能对参数进行修改设置。更不会包含一些基本的硬件驱动。 BSP 开发处于整个嵌入式开发的前期,是后面系统上应用程序能够正常运行的保证。大概步骤如下:1 . 硬件主板研制,测试。2 .操作系统的选定, BSP 编程。3 .上层应用程序的开发。BSP 部分在硬件和操作系统,上层应用程序之间。BSP 是一种根据上层接口描述的一种硬件的支持包,对于某些嵌入式操作系统来说,就是驱动, 但对于纯软件来说, 驱

15、动一般描述为基于 pc 或者 linux 或工作站的驱动, 上层接口是操作系统,对驱动这个“名词”理解不同,会得到不同的定义。一般来说前者接口简单(比如接口是一个结构体),而后者,理解其工作模型才是关键,如果都是针对于硬件做驱动,那么,配置寄存器就是相同点!bsp 可以理解成就是最简单的驱动代码,它属于 OS 或 Firmware 的一部分,在PC 平台最小的 BSP 需完成的任务上就是初始化芯片组上中断控制器、内存控制器、 PCI 控制器与串口(作为调试接口,如果你没钱买那些昂贵的硬件仿真器),基本上有这些你就可以对系统板进行调试了,比如 DEBUG 各种设备驱动: VGA、 USB、 ID

16、E、 MAC 、 AC97 等。在 OS 上的 driver 一般都是可动态加载的,当然嵌入OS 里头直接编进去也就行了,对于一个最小的可运行OS 核心来说, BSP 是必不可少的,但driver 不是。这里的BSP是Board Support Package的缩写,意为板载支持包。在这里我们可以把 BSP 与通用计算机领域中的 BIOS(Basic Input and Output System) 对比,以加深对BSP 的认识。首先来看看BIOS 的功能。 BIOS 是硬件与软件之间的一个接口, 它足固化到计算机存储器中的段程序,主要提供以下功能。自检及初始化计算机:主要负责计算机的启动,主

17、要有加电白检(POST)、初始化和引导程序三个步骤,目的是为了完成检查计算机硬件、创建中断向量及中断向量表、设置寄存器、对外部设备进行初始化、引导操作系统等任务。程序服务处理及硬件中断处理:程序服务处理主要是指与输入输出设备相关的操作,比如读写硬盘、与打印机扫描仪的数据传输等。硬件中断处理就足处理硬件的一些需求。只有将下面两大功能处理好,计算机才能真正地“软”“硬”结合正常工作。程序服务请求:主要是为了调用中断处理来实现硬件的某些功能,并将这些功能以分组的方式分配以中断号,当需要某功能时,直接调用即可。在嵌入式操作系统中, BSP 以嵌入式操作系统“驱动程序”的身份出现, 在系统启动之初,BS

18、P 所做的工作类似于BIOS ,也是负责系统加电、初始化各种设备、装入操作系统等。但 BSP 与 BIOS 是不同的, 尤其是在系统启动完成之后。 二者主要有以下几个方面的区别。BSP是与操作系统相适应的,但 BIOS却是和所在的主板相适应的,虽然 BSP和BIOS通常都由硬件制造商提供,但二者提供BSP 或者 BI0S 的“初衷”不一样,前者是为了让自己的硬件支持某种嵌入式操作系统,而后者则是为了所有操作系统都能够正常在其生产 的硬件上正常工作。开发人员可以对BSP 做一定的修改, 加入自己想加入的一些东西, 像驱动程序。 但 BIOS一般不能更改,开发人员只能对其进行升级或者更改配置的操作

19、,相对来讲,嵌入式开发人员对于 BSP 的自主性更大。一个 BSP 对应一个硬件和一个嵌入式操作系统, 即同一个处理器可能对应多个BSP, 同一个嵌入式操作系统针对不同的处理器也需要不同的BSP。而一个BIOS是对应一个硬件和多个操作系统,也就是说只要硬件确定,其BIOS 就确定,无论使用哪种通用操作系统。BSP里可以加入非系统必需的东西,比如一些驱动程序甚至一些应用程序,但通用计算机的主板生产商一般不会这样做。对BSP和B10S的区别有了一定认识,我们再来看看BSP的特点:操作系统相关性;硬件相关性。即上面所说的,嵌入式操作系统、BSP、硬件都是1:1:1的单独对应关系。BSP 主要做以下两

20、方面的工作:系统初始化;硬件相关的设备驱动。系统初始化的过程从底到顶可以分为三个过程分别是片级初始化、板级初始化、系统级初始化。片级初始化主要是对处理器进行初始化,在这一工作阶段,主要是设置处理器的寄存器、调整处理器的核心工作模式和局部总线模式,目的是为了把处理器从默认的工作状态设置到嵌入式操作系统所要求的状态,是一个纯硬件的初始化过程。然后是板级初始化,板级初始化的一个任务是要初始化除处理器外的所有硬件设各,另外一个任务是要对其他所需软件的数据结构和参数进行设置,为随后的系统级初始化建立硬件和软件环境。板级初始化是一个同时包含硬件和软件初始化的过程。紧接着是系统级初始化,这一过程主要是对操作

21、系统进行一定的初始化,通过这一初始化,嵌入式操作系统的全部初始化工作完成,创建了应用程序的运行环境,把系统的控制权转交给应用程序的入口。BSP 的另一主要功能就是提供与硬件相关的设备驱动。上面提到一个板级初始化的过程,在这一过程中,BSP会把设备驱动程序与嵌入式操作系统中的通用设备驱动程序关联起来,当某个应用需要某个硬件设备时,通用设备驱动程序会调用硬件设备驱动程序,以达到操作硬件的目的。1 BSP 概述BSP 即 Board Support Package ,板级支持包。它来源于嵌入式操作系统与硬件无关的设计思想,操作系统被设计为运行在虚拟的硬件平台上。对于具体的硬件平台,与硬件相关的代码都

22、被封装在BSP中,由BSP向上提供虚拟的硬件平台,BSP与操作系统通过定义好的接口进行交互。 BSP 是所有与硬件相关的代码体的集合。一个成熟的商用操作系统,其被广泛应用的必要条件之一就是能够支持众多的硬件平台,并实现应用程序的硬件无关性。一般来说,这种无关性都是由操作系统实现的。但对于嵌入式系统来说,它没有像PC 机那样具有广泛使用的各种工业标准、统一的硬件结构。各种嵌入式系统各不同的应用需求就决定了它一般都选用各自定制的硬件环境,每种嵌入式系统从核心的处理器到外部芯片在硬件结构上都有很大的不同。这种诸多变化的硬件环境就决定了无法完全由操作系统来实现上层软件与底层硬件之间的无关性。因此各种商

23、用实时操作系统,都采用了分层设计的方法,它将系统中与硬件直接相关的一层软件独立出来,称之为 Board Support Package ,简称为BSP。顾名思义,BSP是针对某个特定的单板而设计的。 如果没有单板支持软件包, 则操作系统就不能在单板上运行。并且它对于用户(指开发者)也是开放的,用户可以根据不同的硬件需求对其作改动或二 次开发。BSP在嵌入式系统中的角色,很相似于在PC系统中的BIOS和驱动程序的地位。 BSP的具体结构和组成根据不同的嵌入式操作系统而不同。BSP的开发要求设计人员具备软硬件方面的综合知识。BSP软件与其他软件的最大区别在于 BSP软件有一整套模板和格式,开发人员

24、必须严格遵 守,不允许任意发挥。在BSP软件中,绝大部分文件的文件名和所要完成的功能都是固定 的。所以,BSP软件的开发一般来说都是在一个基本成型的 BSP软件上进行修改,以适应 不同单板的需求。 针对某类CPU的硬件单板,嵌入式操作系统(如vxWorks)通常提供有 其DEMO板的BSP,这些程序位于指定的目录之下。也就是我们所说的最小系统 BSP。一 般来说,我们在硬件系统设计好之后,都会先找到一个与自己系统相近的DEMO板BSP(最起码是使用相同的CPU)。并以此为基础,开发自己单板的BSP。BSP就是为软件操作系统正常运行提供最基本、最原始的硬件操作的软件模块,它和操作 系统息息相关,

25、但又不属于操作系统的一部分。BSP可以分为三大部分:1:系统上电时的硬件初始化。2:为操作系统访问硬件驱动程序提供支持。3:集成的硬件相关和硬件无关的操作系统所需的软件模块。-BSP的表现形式BSP主要以两种形式来表现:1 :源代码(C代码、汇编代码)、系统编译连接依靠文件。2:二进制的目标代码和目标代码库。BSP在软件系统中的位置可以用下图来表示,BSP为操作系统和硬件设备的互操作建了个桥梁,操作系统通过BSP来完成对指定硬件的配置和管理BSP向上层提供的接口有九与操作系统内核的接口(如报告 DRAM大小、修改中断屏蔽级别等)九与操作系统的I/O系统的接口九与应用程序的接口-CPU最小系统B

26、SP的定义广义上讲,单板中所有需要 CPU控制的硬件的程序,都属于单板 BSP,但是,为了调试方便和软件的模块化,我们通常就将与此单板最小系统相关的程序简称为BSP,而将其他程序称为驱动程序。对于嵌入式系统来说,所谓最小系统就是一个包含:CPU, Bootrom, RAM,系统时钟,网口,串口的计算机运行环境。这样,最小系统BSP就包含了 CPU系统的初始化程序以及网口,串口,系统时钟等设备 的驱动程序。BSP 的主要功能在于配置系统硬件使其工作于正常的状态,完成硬件与软件之间的数据交互,为 OS 及上层应用程序提供一个与硬件无关的软件平台。因此从执行角度来说,其可以分为两大部分:1 )目标板启动时的硬件初始化及多任务环境的初始化2)目标板上控制各个硬件设备正常运行的设备驱动程序,由它来完成硬件与软件之间的信息交互通常我们认为BSP是为OS服务的,但实际上,BSP软件包中的部分程序对 OS也并不是必须的,从这个角度,又可以将BSP 划分为两部分:1)最小系统BSP,即我们通常所称的BSP2 ) 设备驱动程序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 其他相关文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报