您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

嵌入式利用体系的通用硬件抽象层筹划

发布日期:2011-04-22


   择要
基于嵌入式利用体系硬件抽象层理论,计划一种用于嵌入式利用体系内核开辟的通用硬件抽象层平台。通用硬件抽象层可以大概为嵌入式利用体系内核的筹划开辟屏蔽硬件平台的特性,提供同一的硬件干系的办事接口,可以使嵌入式利用体系内核的筹划开辟不依赖于特定的硬件平台,同时开辟的嵌入式利用体系内核具有更强的可移植性。
   关键词 嵌入式利用体系 通用硬件抽象层(HAL) BSP V开辟模式
   小序
  
为了便于利用体系在差别硬件布局上举行移植,美国微软公司起首提出了将底层与硬件干系的部分单独筹划成硬件抽象层美国微软公司提出了将利用体系底层与硬件干系的部分单独筹划成硬件抽象层HAL(Hardware Abstraction Layer)的头脑。硬件抽象层的引入大大推动了嵌入式利用体系的通用程度,为嵌入式利用体系的广泛应用提供了大概。然而,如今BSP情势的硬件抽象层仅仅可以大概办理有限的几种利用体系在同样有限的BSP所支持的硬件平台上的移植,而对绝大多数须要根据差别嵌入式应用而专门定制的嵌入式利用体系来说能起的作用则非常有限。
   1  硬件抽象层原理
  
1.1  硬件抽象层见解

   嵌入式体系是一类分外的谋略机体系。它自底向上包括3个紧张部分:硬件环境、嵌入式利用体系和嵌入式应用步调。硬件环境是整个嵌入式利用体系和应用步调运行的硬件平台,差别的应用通常有差别的硬件环境;因此怎样有效地使嵌入式利用应用于种种差别的应用环境,是嵌入式利用体系生长中所必须办理的关键标题。
    硬件抽象层通过硬件抽象层接口向利用体系以及应用步调提供对硬件举行抽象后的办事。当利用体系或应用步调利用硬件抽象层API举行筹划时,只要硬件抽象层API可以大概在基层硬件平台上实现,那么利用体系和应用步调的代码就可以移植。

按此在新窗口欣赏图像
图1  引入HAL后的嵌入式体系布局

  如许,原先嵌入式体系的3层布局垂垂演化为一种4层布局。图1表现了引入硬件抽象层后的嵌入式体系的布局。

  在整个嵌入式体系筹划进程中,硬件抽象层同样发挥着不可调换的作用。传统的筹划流程是采取瀑布式筹划开辟进程,起首是硬件平台的制作和调试,而后是在已经定型的硬件平台的底子上再举行软件筹划。由于硬件和软件的筹划进程是串行的,因此须要很长的筹划周期;而硬件抽象层可以大概使软件筹划在硬件筹划结束前开始举行,使整个嵌入式体系的筹划进程成为软硬件筹划并行的V模式开辟进程,如图2所示。如许两者的筹划进程大抵是同时举行的或是并发的,紧缩了整个筹划周期。

按此在新窗口欣赏图像


                                                   图2  硬件抽象层引入后的V开辟模式

    1.2  BSP阐发
   作为硬件抽象层的一种实现,板级支持包BSP(Board Support Package)是现有的大多数商用嵌入式利用体系实现可移植性所采取的一种方案。BSP断绝了所支持的嵌入式利用体系与底层硬件平台之间的干系性,使嵌入式利用体系可以大概通用于BSP所支持的硬件平台,从而实现嵌入式利用体系的可移植性和跨平台性,以及嵌入式利用体系的通用性、复用性。
   然而现有应用较为广泛的BSP情势的硬件抽象层,美满是为了现有通用或贸易嵌入式利用体系在差别硬件平台间的移植而筹划的,因此BSP情势的硬件抽象层与BSP所向上支持的嵌入式利用体系是精密干系的。在同一种嵌入衰落处理惩罚处罚器的硬件平台上支持差别嵌入式利用体系的BSP之间不但从构成布局、向利用体系内核所提供的结果以及所定义的办事的接口都完全差别,因而一种嵌入式利用体系的BSP不大概用于其他嵌入式利用体系。这种硬件抽象层是一种封闭的专用硬件抽象层。因此,我们提出了为上层嵌入式利用体系内核的开辟和构建提供一种开放、通用的硬件抽象层平台,使得在某种硬件平台上的嵌入式利用体系内核的开辟可以大概在支持这种硬件平台的硬件抽象层上举行。
   2  通用硬件抽象层总体筹划
  
2.1  通用硬件抽象层的结果布局筹划
   通用硬件抽象层须要为上层利用体系内核提供同一的硬件干系结果办事;而嵌入式利用体系内核紧张的硬件干系部分包括体系启动初始化、任务上下文办理、克制非常办理以及时钟办理。因此,通用硬件抽象层对嵌入式利用体系内核所干系的硬件平台的底子硬件构成部分举行抽象,提供嵌入式利用体系内核硬件平台的干系结果,并筹划相应的通用硬件抽象层API接口。通用硬件抽象层的总体结果布局如图3所示。

按此在新窗口欣赏图像
图3  通用硬件抽象层总体结果布局表现图

   (1)  体系启动初始化
   启动初始化结果为利用体系的启动和运行提供了须要的软硬件环境。启动和初始化进程中,对硬件平台的直接访问包括对CPU内核的寄存器的初始化设置,以及敷衍起体系控制作用的端口寄存器的设置。通过启动初始化进程,为整个利用体系内核的运行提供了须要的运行环境与底子,断绝了差别硬件平台上嵌入衰落处理惩罚处罚器总线布局、存储体系布局的差别。
   (2)  任务上下文办理
   任务上下文办理认真嵌入式利用体系内核中任务办理部分中对任务寄存器上下文的创建、删除以及切换等利用。任务的寄存器上下文是利用体系内核所办理的任务的告急构成部分,是CPU内核的寄存器中内容的映像,因此上下文办理的实现依赖于CPU内核中寄存器的布局,是与体系布局密切干系的。通用硬件抽象层的任务上下文办理同肯定义体系布局中的寄存器上下文的掩护格局,提供了任务办理对任务上下文的底子利用的API接口
   (3)  克制非常办理
   克制非常办理是嵌入式利用体系内核中的告急构成部分。克制非常机制是利用体系内核实现与外部配置通讯、任务体系调用、举行堕落处理惩罚处罚以及可以大概实现对任务的及时调理的告急本领。因此,硬件抽象层克制体系的办理部分是整个硬件抽象层中的关键。
   通用硬件抽象层中为克制非常处理惩罚处罚举行了须要的包装,向嵌入式利用体系内核屏蔽底层的克制非常处理惩罚处罚;同时,由于克制办理必须涉及对克制控制器的利用。因此,通用硬件抽象层的筹划中,将克制控制器控制的外设恳求抽象成为同一的IRQ配置,嵌入式利用体系通过利用抽象IRQ配置来办理外设的克制办事步调以及举行对克制控制器的利用,从而为利用体系内核屏蔽了克制控制器的直接利用。
   (4)  定时办理
   定时办理认真为利用体系内核中的时钟滴答处理惩罚处罚提供须要的定机会制,同时也为内核之外的体系结果提供定时办事,如TCP/IP协议栈等。利用体系内核通逾期钟滴答处理惩罚处罚来实行告急的定时任务(如任务时间的分派、任务运行时间统计、任务定时等待更新等),因此定时结果是硬件抽象层须要为利用体系内核提供的最为底子和告急的结果之一。
   通用硬件抽象层根据对硬件定时器的抽象为利用体系内核提供同一的抽象定时器配置,并且对定时克制办事步调举行了包装,从而使嵌入式利用体系内核直接面对的是同一、通用的抽象定时器配置,通过对抽象定时器的利用来实现定时办事,而不必直接利用硬件定时器。
   2.2  通用硬件抽象层的层次布局筹划

   通用硬件抽象层的筹划是为在种种差别硬件平台上的嵌入式利用体系内核的开辟提供同一的硬件平台干系的结果,因此这就恳求硬件抽象层本身可以大概易于扩展和移植到差别的硬件平台之上,才华为这种硬件平台上嵌入式利用体系内核的开辟提供支持。与硬件平台干系的软件分为体系布局干系以及外围端口寄存器利用干系部分。体系布局干系软件部分可以大概用于与CPU内核体系布局兼容的差别嵌入衰落处理惩罚处罚器上,而对外围端口寄存器的利用,则每种嵌入衰落处理惩罚处罚器都差别。因此,通用硬件抽象层结果的实现筹划成为图4所示的3个层次的布局:通用层、体系布局层以及外围层。通过这3个实现层次的分别尽大概地实当代码的可复用性。

按此在新窗口欣赏图像
图4  通用硬件抽象层层次布局表现图

   (1)  通用层
   通用层因此C语言编写的、不涉及体系布局及外围端口寄存用细致利用的、可以大概通用于种种硬件平台的一层。通用层内包括: 对同一的与编译器无关的数据典范、抽象配置的数据布局定义,以及提提供嵌入式利用体系内核的对抽象配置的种种同一的利用办事的接口通用的实现部分。

   通用层中抽象配置利用的实现中须要涉及的对CPU内核寄存器的利用以及对外围I/O端口寄存器的利用,是通过调用体系布局层以及外围层中同肯定义的接口举行的。当扩展或移植到其他硬件平台上时,上层无须修改,而只须举行基层调换。
   (2)  体系布局层
   针对种种嵌入衰落处理惩罚处罚器CPU内核的体系布局,体系布局层须要分别筹划实现。体系布局层中对体系布局干系的数据典范以及数据布局举行定义,包括寄存器上下文生存格局的定义以及对克制非常向量肇始地点、种种非常和克制处理惩罚处罚的入口偏移等,并认真通用硬件抽象层结果中体系布局干系部分的实现。实现的内容紧张是对CPU内核中各个寄存器的访问,敷衍克制非常向量表的利用以及底层的克制和非常处理惩罚处罚。
   体系布局层的实现是根据上层规定的调用接口来举行的,因而针对差别的体系布局,上层通用层无须举行修改。体系布局层中对有关I/O端口寄存器的利用通过对外围层接口的调用来实现。
   针对某种体系布局筹划实现的体系布局层可以大概通用于CPU内核体系布局兼容的嵌入衰落处理惩罚处罚器的硬件平台上,从而易于硬件抽象层在体系布局兼容的嵌入衰落处理惩罚处罚器硬件平台上的扩展和移植。
   (3)  外围层
   外围层是针对种种嵌入衰落处理惩罚处罚器而分别筹划实现的。外围层紧张包括对外围I/O接口和配置属性的定义(包括克制控制器连接的外设个数、定时器个数等),并且认真对各个外围I/O配置端口寄存器的访问利用。外围层的实现须要根据上层定义的接口举行。
   通用硬件抽象层的外围层必须提供对存储控制、总线控制、克制控制器、定时器控制器、UART等底子I/O接口和配置的I/O端口寄存器的访问结果。外围层是与种种嵌入衰落处理惩罚处罚器逐一映射的,在采取差别的嵌入衰落处理惩罚处罚器的硬件平台之间,外围层是无法通用的。因此针对新的嵌入衰落处理惩罚处罚器的通用硬件抽象层的扩展或移植,外围层都须要重新筹划实现。
   (4)  层次间接口的筹划
   通用硬件抽象层除了为嵌入式利用体系内核提供同一的结果办事接口外,为了便于扩展和移植到其他硬件平台,还在各层的调用之间筹划了同一的调用接口。基层的结果实现须要根据与上层确定的接口典范来举行。此中某些上基层之间的接口,尤其是外围层与上层之间的接口是利用宏定义的要领举行的。宏定义在预编译时举行调换,没有实行时的性能丧失。相反,敷衍底层的利用直接利用宏定义可以大概进步实行屈从,尤其对外围端口寄存器的利用,由于利用本身的实行时间短,而一样通常函数调用则须要返回地点、参数压栈等进程。这些开销大概超过跨过这些I/O端口寄存器的访问时间,利用宏定义则没有调用开销,从而可以大概直接实现接口对底层端口寄存器的访问而不丧失利用的屈从。

   参考文献

   [1]  Fernando Friedrich L, John Stankovic, et al. A Survey of Configurable, Componentbased Operating System for Embedded Applications, IEEE MICRO, 2001,5~6:54-68.
   [2]  Labrosse J. 嵌入式体系构件. 第2版. 袁勤勇,黄绍金,唐青,译. 北京:呆板财产出版社,2001.
   [3]  罗蕾. 嵌入式及时利用体系及应用开辟. 北京:北京航空航天大学出版社,2005.
   [4]  王涛,张伟良,冯重熙. 嵌入式体系硬件抽象层原理与实现. 电子技能应用,2001(10).

   王力生(传授、硕士研究生导师),紧张研究方向为嵌入式体系及谋略机网络;
   仇志付、唐军敏(硕士研究生),紧张研究方向为嵌入式体系。