实时操作系统uSmartX及其在LPC2132上的应用(部分供参考)

实时操作系统uSmartX及其在LPC2132上的应用(部分供参考)

ID:39615387

大小:35.50 KB

页数:4页

时间:2019-07-07

实时操作系统uSmartX及其在LPC2132上的应用(部分供参考)_第1页
实时操作系统uSmartX及其在LPC2132上的应用(部分供参考)_第2页
实时操作系统uSmartX及其在LPC2132上的应用(部分供参考)_第3页
实时操作系统uSmartX及其在LPC2132上的应用(部分供参考)_第4页
资源描述:

《实时操作系统uSmartX及其在LPC2132上的应用(部分供参考)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实时操作系统uSmartX及其在LPC2132上的应用(部分供参考)摘要:uSmartX是一个免费的源码公开的轻量级嵌入式实时操作系统.微内核的设计令它不仅性能优良、功能齐全而且只占用很少的系统资源,并且使用非常简单.本文主要阐述uSmartX的任务调度策略、时间控制机制以及一些相关的系统模块的实现原理,然后以uSmartX在LPC2132上的应用为例介绍uSmartX的使用方法.一、前言随着人们对智能化的要求越来越高,嵌入式系统的发展也越来越迅速,嵌入式实时操作系统(RTOS)正得到越来越广泛的应用.采用RTOS可以简化应用软件的设计,缩短系统开发时间,更合理的利

2、用CPU的资源,更好地保证系统的可靠性.由于RTOS需要消耗一定的RAM和ROM,可以用于小型系统得RTOS并不多,目前国内比较流行的是μC/OSII,因为μC/OSII的资料丰富,非常便于学习.但μC/OSII本身是商业操作系统,在商业场合使用需要交纳一定的费用.uSmartX是一个完全免费的嵌入式实时操作系统,它几乎完全由C语言编写,已经通过许多场合的测试,具有功能齐全、性能优良、使用方便、占用系统资源少等特点.二、uSmartX的基本特点uSmartX是一个非先占式、多任务、基于优先级的RTOS,作为一个轻量级的操作系统,它提供了任务间相互通信的机制和基本的任

3、务及时间控制功能.uSmartX专门为小型嵌入式系统而设计,非先占式内核只消耗极少的存储空间,并且使用起来非常简便.uSmartX主要有以下特性:任务控制时间控制邮箱信号量带触发功能的环形缓存内存管理平台无关在使用uSmartX前,一般先将其所有源文件编译为"库"的形式.在正式的应用中只需包含必要的头文件,并在编译时将库连接到工程中即可,这比较类似于KEIL自带RTX51,这种方法相对于直接操作源文件,不仅能有效的减少代码的体积,还能使文件结构显得更加简洁,管理更加方便.三、uSmartX的任务调度策略任务调度是嵌入式实时操作系统的灵魂.在uSmartX初始化期间,

4、内核将需要运行的任务建立成一张任务表,任务的调度是基于优先级的,如果所有任务优先级相同,则调度策略降低为时间片轮番调度.每当一个任务开始运行,内核就会得到来自任务的一个"系统事件"以表明任务的行为.uSmartX内核提供了以下系统事件.SYS_NONE:任务未得到任何来自内核的事件;SYS_ERROR:任务正在挂起(等待)一个资源而且资源被复位.这种情况的一个例子就是当任务在等待一个信号量而信号量正在被复位;SYS_TOUT:任务在运行时被中断延时且出现超时;SYS_MBX:任务在挂起一个邮箱,或发送了一个带超时限制的邮箱;SYS_MBX_TOUT:任务正在挂起邮箱

5、且出现超时;SYS_SEM:任务正在挂起信号量且发送了一个带超时限制的信号量;SYS_SEM_TOUT:任务正在挂起邮箱且出现超时;SYS_IDLE:调度器返回待机状态,表示当时没有任何任务处于就绪状态SYS_OK:系统的调用者(任务)或调度器成功返回uSmartX内核保证正在运行的任务具有最高优先级并处于准备就绪状态.如果没有任何任务准备就绪的任务需要运行,则调度器将返回"SYS_IDLE"事件代码,用户可以根据需要处理.任务在运行时可以被挂起或延时,既可以通过调用一个专用的系统函数来实现精确的延时,也可以用挂起资源的方式间接延时.但在挂起资源时必须特别注意,一种

6、典型的情况就是当一个任务等待邮箱和超时,由于这是一个非先占式内核,即使当时的资源(邮箱或超时)不可用,任务也必须结束并返回系统事件.由于这是一个非先占式内核,故上下文切换只发生在一个任务运行结束时.这一点至关重要,因为一旦一个任务总是不结束,那么它将中断整个系统.四、uSmartX功能模块简介uSmartX主要包含以下模块:FIFO缓存邮箱内存管理信号量内核任务控制定时器下面简要介绍各个模块的功能与特点.4.1.FIFO缓存uSmartX中实现的缓存结构是带一些附加特性的标准FIFO循环缓存.它与邮箱基本类似,除了一点:任务在请求或存放数据到缓存中的时候不能够挂起.

7、缓存的结构是在编译的时候定义的,特别是缓存的大小和元素的大小.尽管缓存的一些默认参数是在编译的时候输入的,其他的参数可以在运行时改变.有两个系统事件与缓存有关,一个是当缓存填充到某个程度的时候调用,另一个是在缓存中有超时元素时执行.4.2.邮箱邮箱是一种任务间互相通信的机制,它也用于中断与任务的通信.uSmartX中每个邮箱都有自己的控制结构.不同的任务和中断可以发送同一个邮箱,但只能有一个确定的任务在挂起某个特定的邮箱.任务还可以通过超时来发送或挂起一个邮箱.4.3.内存管理uSmartX实现了一个固定容量的内存分配器,其分配机制是优先填充,内存通常是来自于预

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。