LPC2292芯片的μC/OS-II硬件抽象层构建

发布者:科技思想家最新更新时间:2009-12-24 关键字:μC/OS-II  LPC2292  硬件抽象层 手机看文章 扫描二维码
随时随地手机看文章

  引言

  为了便于操作系统在不同硬件结构上进行移植,美国微软公司首先提出了将底层与硬件相关的部分单独设计成硬件抽象层(Hardware Abstraction Layer,HAL)的思想。硬件抽象层的引入大大推动了嵌入式操作系统的通用程度,为嵌入式操作系统的广泛应用提供了可能。

  1  μC/OS-II简介

  μC/OS-II实时操作系统是一种开发源码的实时操作系统,可固化,可剪裁,具有高稳定性和可靠性。它最鲜明的特点就是源码公开,便于移植和维护。目前μC/OS-II版本2.52,通过了美国航空管理局的安全认证,其稳定性和可用性是经过实践的。μC/OS-II的应用已经覆盖了诸多领域,如照相机、医疗器械、音像设备等。

  2  硬件抽象层简介

  硬件抽象层隐藏特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。它通过硬件抽象层接口向操作系统以及应用程序提供对硬件进行抽象后的服务。它主要有以下特点:

  ①  硬件相关性。作为操作系统与硬件之间的接口,硬件抽象层(HAL)必须为操作系统提供具体操作硬件的方法。

  ②  操作系统相关性。不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。

  硬件抽象层是一个处于硬件之上,操作系统之下的软件层次。它主要功能包括:

  ①  对系统硬件进行初始化;

  ②  为操作系统提供各种操作硬件的接口函数。

  系统硬件的初始化方法,主要由硬件厂家提供;操作系统的各种硬件接口函数和宏定义,则需要通过硬件和操作系统的使用者在熟悉了操作系统和硬件平台后自行编写。μC/OS-II需要完成的硬件接口主要包括:类型的定义、任务上下文切换、中断处理、任务堆栈初始化和定时处理。

  图1为硬件抽象层的功能示意图。

图1  硬件抽象层功能示意图

  3  在LPC2292上构建硬件抽象层

  3.1  LPC2292简介

  LPC2292/LPC2294 微控制器是基于一个支持实时仿真和嵌入式跟踪的16/32 位ARM7TDMIS CPU,带有256 KB 嵌入的高速Flash 存储器。128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最高时钟速率下运行。对代码规模有严格控制的应用可使用16 位Thumb 模式将代码规模减小30%以上,而性能的损失却很小。

  由于LPC2292/LPC2294 的144 脚封装、极低的功耗、多个32 位定时器、8 通道10 位ADC、2/4 (LPC2292/LPC2294)高级CAN、PWM 通道以及多达9 个外部中断引脚,使它们特别适用于汽车、工业控制应用以及医疗系统和容错维护总线。LPC2292/LPC2294 含有76(使用了外部存储器)到112 个(单片)可用GPIO 口。由于内置了宽范围的串行通信接口,它们也非常适合于通信网关、协议转换器以及许多其他的应用中。

  3.2  类型定义

  在将μC/OS-II移植到LPC2292处理器上时,首先进行基本配置和数据类型定义。重新定义数据类型是为了增加代码的可移植性,因为不同的编译器所提供的同一数据类型的数据长度并不相同,例如int型,在有的编译器中是16 位,而在另外一些编译器中则是32 位。所以,为了便于移植,需要重新定义数据类型。μC/OS-II类型定义如下:

  3.3  任务堆栈初始化

  在μC/OS-II中,函数OSTaskStkInit()对任务堆栈进行初始化,在LPC2292中,任务堆栈空间由高到低依次为PC ,LR,R12 ,R11,…,R1,R0,CPSR,SPSR。 在进行堆栈初始化以后,OSTaskStkInit ( ) 返回新的堆栈栈顶指针。图2为任务堆栈增长的方向。其初始化过程如下:

图2  堆栈增长的方向

  3.4  任务上下文切换

  任务上下文管理负责嵌入式操作系统内核中任务管理部分对任务寄存器上下文的创建、删除以及切换等操作。任务的寄存器上下文是操作系统内核所管理的任务的重要组成部分,是CPU内核的寄存器中内容的映像,因此上下文管理的实现依赖于CPU 内核中寄存器的组织,是与体系结构密切相关的。通用硬件抽象层的任务上下文管理统一定义体系结构中的寄存器上下文的保护格式,提供了任务管理对任务上下文的基本操作的API接口。

  μC/OS-II的任务切换其实就是通过改变PC中的内容来实现的。将PC指向新任务开始运行的地方,同时将当前任务(被抢占任务)环境保存到相应的任务堆栈中,将新任务环境从任务堆栈中恢复到相应的寄存器中。

  μC/OS-II用OS_TASK_SW()完成任务级切换。将μC/OS-II移植到LPC2292上,其任务切换代码如下:

  3.5  中断结构和中断处理程序的设计

  中断结构和中断处理程序的设计是嵌入式操作系统HAL中最重要的组成部分。中断机制是操作系统内核实现与外部设备通信、任务系统调用、进行出错处理,以及实现对任务的实时调度的重要手段。因此,硬件抽象层中断系统的管理部分是整个硬件抽象层中的关键。

  μC/OS-II采用了二次跳转的办法。首先在ARM处理器定义的中断向量处安放跳转指令,跳转到指定位置后,再进行位置的第二次映射。其中位置的映射是通过一个汇编定义的宏来实现的。将μC/OS-II移植到LPC2292中,其宏汇编的定义如下:

;/************************************************

  ;比较当前任务控制块和最高优先级任务控制块是否一致,如果一致则直接恢复任务环境;否则,在中断退出时需要进行任务切换,CPU将运行优先级最高的任务,而不是中断前运行的任务

  为了使用ISR的汇编宏,每个受μC/OS-II管理的ISR都必须按宏汇编要求的格式,在文件IRQ.S中定义:

  XXXX_HANDLERHANDLERXXXX_Exception

  其中:

  XXXX_HANDLER是ISR的起始地址,即汇编宏的起始地址,在初始化向量中断控制器时作为中断向量的地址使用。用户按中断源来命名,即把其中的XXXX换为具体的中断源名称。

  XXXX_Exception是用户用C语言实现编写的功能函数名。该函数供汇编宏调用,用户可以按实际的中断源来命名,即把XXXX换为具体的中断源名称。

  3.6  定时管理

  μC/OS-II需要一个周期性的中断源来产生系统时钟节拍。μC/OS-II利用了LPC2292的Timer0作为定时器产生时钟节拍。其实现步骤为:

  添加中断句柄Timer0_HandlerHANDLER Timer0_Exception配置中断源定时器T0IR = 0xffffffff;T0TC = 0;T0TCR = 0x01;T0MCR = 0x03;T0MR0 = (Fpclk / OS_TICKS_PER_SEC);配置向量中断控制器extern void Timer0_Handler(void);VICVectAddr0 = (uint32)Timer0_Handler;VICVectCntl0 = (0x20 | 0x04);使能中断VICIntEnable = 1<<4;

  4  总结

  硬件抽象层的出现,使得嵌入式操作系统的设计者不需要考虑嵌入式系统硬件环境差异较大的问题,可以专心设计通用的操作系统,而将与硬件的接口部分留给硬件抽象层来实现,这样大大提高了嵌入式操作系统在不同硬件平台之间的移植能力。本文基于LPC2292硬件平台,详细介绍了μC/OS-II的硬件抽象层的构建方法,对其向其他平台的移植提供了参考。

关键字:μC/OS-II  LPC2292  硬件抽象层 引用地址:LPC2292芯片的μC/OS-II硬件抽象层构建

上一篇:嵌入式系统低功耗设计研究
下一篇:基于S3C2410A的嵌入式系统的U-Boot移植

推荐阅读最新更新时间:2024-05-02 20:57

基于μC/OS-II操作系统在SPCE061A上的移植优化研究
SPCE061A是凌阳科技新推出的u课SP内核的十六位单片机,内嵌32K字 Flash的SPCE061A时是适用于数字语音识别应用领域的一种经济的选择。它支持精简指令系统,片内具有丰富的硬件资源。只需设计少量的片外扩展电路即可实现应用系统的硬件功能要求。μC/OS-II是一个源代码公开的精简的实时性很强的操作系统内核,移植性强,基于μC/OS-II来设计系统可以提高系统软件开发的效率。将μC/OS-II移植到SPCE061A上,在μC/OS-II的平台上设计软件对于提高相关嵌入式应用系统产品的质量,减少开发周期和降低成本方面有着重要的意义。 基于SPCE061A的硬件最小系统的设计 SPCE061A的系统结构 SPCE
[单片机]
基于μ<font color='red'>C</font>/<font color='red'>OS-II</font>操作系统在SPCE061A上的移植优化研究
基于μC/OS-II的智能窗系统设计
0 引言 随着计算机技术、 电子 技术和控制技术的发展,智能化、 自动化 、精确化的灌溉和施肥技术正逐渐取代传统的灌溉方式。在施肥过程中,需要在线检测肥料溶液的酸碱度和电导率以及灌溉压力、管道流量等,然后根据这些参数来控制电磁阀和水泵的运行达到自动灌溉施肥的目的。目前,常用的数据采集控制系统都是为某一实际应用而设计的,通用性和可扩展性差、数据存储能力不足,价格昂贵。因此基于周立功公司的 ARM 7核心板设计了一种通用的数据采集控制系统,并且已经应用到自动灌溉施肥系统中,能够满足稳定性,实时性以及大容量的数据存储的要求。该数据采集控制系统采用模块化设计,可以很方便的扩展和剪裁模块,同时只要对软件进行少量修改就可以方便的移植到其它应用
[单片机]
基于μ<font color='red'>C</font>/<font color='red'>OS-II</font>的智能窗系统设计
基于CMSIS标准的Cortex-M3的应用软件开发
引 言   ARM公司于2008年11月12日发布了ARM Cortex微控制器软件接口标准(CMSIS:Cortex Microcon-troller Software InteRFace Standard)。CMSIS是独立于供应商的Cortex-M处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了连续的、简单的处理器软件接口,简化了软件复用,降低了Cortex-M3上操作系统的移植难度,并缩短了新入门的微控制器开发者的学习时间和新产品的上市时间。   根据近期的调查研究,软件开发已经被嵌入式行业公认为最主要的开发成本。图1为近年来软件开发与硬件开发成本对比图。因此,ARM与Atmel、IAR、Keil、hami-nar
[单片机]
基于CMSIS标准的Cortex-M3的应用软件开发
嵌入式实时操作系统μC/OS-II在S12单片机上的移植分析
  1 前 言   在采用前后台系统软件设计模式的嵌入式系统中,主程序是一个无限循环,单任务顺序执行,通过设置一个或多个中断来处理异步事件。这种系统对于简单的应用是可以的,但对于实时性要求比较高的、处理任务较多的应用,就会暴露出实时性差、系统可靠性低、稳定性差等缺点。μC/OS-II 是一个源代码公开、可移植、可裁剪的实时多任务操作系统,具有低成本、稳定可靠、实时性好等优点,是专门针对微处理器和微控制器设计的实时内核,它的内核可以做到很小,很适合在单片机系统上移植。移植了μC/OS-II 的嵌入式系统可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。本文
[单片机]
嵌入式实时操作系统μ<font color='red'>C</font>/<font color='red'>OS-II</font>在S12单片机上的移植分析
LPC2292芯片的μC/OS-II硬件抽象层构建
引言   为了便于操作系统在不同硬件结构上进行移植,美国微软公司首先提出了将底层与硬件相关的部分单独设计成硬件抽象层(Hardware Abstraction Layer,HAL)的思想。硬件抽象层的引入大大推动了嵌入式操作系统的通用程度,为嵌入式操作系统的广泛应用提供了可能。 1 μC/OS-II简介   μC/OS-II实时操作系统是一种开发源码的实时操作系统,可固化,可剪裁,具有高稳定性和可靠性。它最鲜明的特点就是源码公开,便于移植和维护。目前μC/OS-II版本2.52,通过了美国航空管理局的安全认证,其稳定性和可用性是经过实践的。μC/OS-II的应用已经覆盖了诸多领域,如照相机、医疗器械、音像设备等。 2 硬件
[单片机]
<font color='red'>LPC2292</font>芯片的μ<font color='red'>C</font>/<font color='red'>OS-II</font><font color='red'>硬件抽象层</font>构建
μC/OS-II在S3C44BOX处理器上的移植
摘要:介绍实时操作系统μC/OS-II的特点和内核结构,给出μC/OS-II在Samsung嵌入式S3C44BOX ARM7微处理器上的移植的步骤及详细相关代码,同时阐述μC/OS-II在应用中应注意的问题。 关键词:μC/OS-II S3C44BOX 移植 实时操作系统 μC/OS-II功能强大,支持56个用户任务,其内核为占先式,支持信号量、邮箱、消息队列等多种常用的进程间通信机制,现已成功应用到众多商业嵌入式系统中,是一个成熟稳定的实时内核。与大多商用RTOS不同的是,μC/OS-II公开所有的源代码,90%的代码使用标准的ANSI C语言书写,程序可读性强、移植性好;同时它可免费获得,即使商业应用也只收取少量的许可费用
[嵌入式]
实时操作系统μC/OS-II在MCF5272上的移植
摘要:介绍了实时操作系统μC/OS-II的特点和内核结构,并首次实现μC/OS-II在Motorola嵌入式处理器MCF5272上的移值。 关键词:μC/OS-II MCF5272 移植 GNU工具链 作为一个实时内核,μC/OS从1992年开始为人们熟悉,到现在已经发展为μC/OS-II。ΜC/OS-II最多支持56个任务,其内核为占先式,总是执行就绪态的优先级最高的任务,并支持Semaphore(信号量)、Mailbox(邮箱)、Message Queue(消息队列)等多种常用的进程间通信机制。与大多商用RTOS不同的是,μC/OS-II公开所有的源代码,并可以免费获得,对商业应用收取少量License费用。一般商用操作系统如V
[嵌入式]
μC/OS-II在80196KC单片机上的移植
Intel的80196KC系列单片机在中国国内有很大一批用户。支持80196KC的C编译器生产厂商主要有Tasking和IAR。但国内使用Tasking公司C编译器的用户较多。由于 μ C/OS-Ⅱ系统为源码公开的实时操作系统,因此是当前嵌入式系统开发的主要方法。但是,在 μ C/OS-Ⅱ网站上没有现成的移植实例。因此,有必要进行一次移植以使操作系统成为 μ C/OS-Ⅱ,这种移植采用的处理器为80196KC,而其编译器为Tasking c 196。 1  μ C/OS-Ⅱ的工作原理 μ C/OS-Ⅱ是一个源码公开的实时多任务操作系统,其工作流程如图1所示。图中,任务切换的核心是利用出栈指令将各个任务的工作现场再现,并利用子
[单片机]
μ<font color='red'>C</font>/<font color='red'>OS-II</font>在80196KC单片机上的移植
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved