考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
  当前位置:操作系统 > Linux > 文章内容
  

Linux教程:微型嵌入式实时操作系统SmallRTOS常用接口函数

 [ 2016年2月6日 ] 【

微型嵌入式实时操作系统SmallRTOS是一个源代码开放的、易于移植的、面向深度嵌入式应用的微内核实时操作系统,主要应用领域为工业控制,智能传感器开发,智能终端,物联网等。任何人在遵循SmallRTOS许可协议的前提下均可免费使用该嵌入式实时操作系统。最新版本源代码及示例工程的发布网站为: //www.smallrtos.org

下载到SmallRTOS的源代码压缩包后,进行解压,可以看到SmallRTOS的目录结构如下:

Kernel: 存放SmallRTOS的内核文件OS及和CPU相关的移植文件;
Demo: 存放SmallRTOS提供的示例文件;
Doc: 存放SmallRTOS相关说明/教程文档;
License:存放SmallRTOS使用许可;

微型嵌入式实时操作系统SmallRTOS在设计时,其文件命名、函数名及变量命名由专用的前缀进行区分:前缀为OS,表示为SmallRTOS的内核,这些是与平台无关的内核部分,在进行跨平台移植时,无需更改;前缀为Fit,表示为硬件(芯片类型等)相关的部分,在进行移植时,这一部分的文件、函数及变量需要根据硬件平台(芯片类型等)进行适当的调整;

微型嵌入式实时操作系统SmallRTOS是多任务抢占式操作系统,高优先级任务可以抢先执行,体现了操作系统的实时性。在SmallRTOS系统中,优先级0为最低优先级,该优先级为SmallRTOS系统的保留优先级,作为空闲任务OSIdleTask的专用优先级,用户创建的任务无法使用。除此之外的优先级,用户可以根据任务的重要程度自行分配使用。优先级高的任务会抢先执行。

为了突显嵌入式操作系统配置的灵活性,在SmallRTOS系统设计之初就进行了全面的考量,部分参数采用了宏定义的方式进行配置。每个任务均有自己的名称及优先级,任务名称长度最大为OSNAME_MAX_LEN, 该变量是一个宏定义,超出该最大长度的名称会自动舍弃,默认为10个字符。任务优先级的定义为OSTASK_MAX_PRIORITY, 这是一个非常重要的参数,系统默认值为10。

Ticks经常被称为时钟滴答,是SmallRTOS系统中最小的时间单位,这个参数可以根据硬件平台的性能进行设置。在SmallRTOS系统中,该参数采用宏定义configTICK_RATE_HZ进行配置。在SmallRTOS提供的大部分示例工程中,均配置的为1000Hz,即每个时钟滴答间隔是1毫秒,该参数会影响SmallRTOS系统对任务的控制精度。系统调度器启动后,会按照任务的优先级进行执行,直至该任务让出执行权或者被更高级的任务抢断。如果没有符合条件的任务需要执行,则运行系统中预留的OSIdleTask(空闲任务)。

在SmallRTOS系统中,除了相关参数采用宏定义进行配置之外,功能模块也采用宏定义进行配置。其中宏定义OS_SEMAPHORE_ON表示是否启用信号量(Semaphore,又称作旗语)功能模块,若定义为1,则表示启用信号量(Semaphore,又称作旗语)功能模块,若定义为0,则该功能模块不被启用;宏定义OS_MSGQ_ON表示是否启用消息队列,用法同OS_SEMAPHORE_ON;宏定义OS_MUTEX_ON表示是否启用互斥信号量,用法同OS_SEMAPHORE_ON;

下面是微型嵌入式实时操作系统SmallRTOS中经常用到的接口函数,供大家使用时参考;

一、系统中任务相关的API函数
OSTaskHandle_t OSTaskCreate(OSTaskFunction_t pxTaskFunction,
void* pvParameter,
const uOS16_t usStackDepth,
uOSBase_t uxPriority,
sOS8_t* pcTaskName);

OSTaskCreate为微型嵌入式实时操作系统SmallRTOS的任务创建函数,其中参数OSTaskFunction_t pxTaskFunction为任务函数,该任务函数类型定义为void TaskFunction( void *pParameters );任务函数中的参数void *pParameters 亦即OSTaskCreate的第二个参数;第三个参数为任务的栈空间usStackDepth,栈空间需要根据任务占用的空间多少进行调整;第四个参数为任务的优先级,除最低优先级0为系统保留外,均可使用。第五个参数为任务名字,任务名字也就是任务的标签,主要方便在调试时区分不同的任务。

函数OSTaskCreate的返回值为OSTaskHandle_t类型的任务句柄,该句柄可以被其它系统函数调用,以设置或控制任务的状态;
void OSTaskSleep(uOS32_t uxWatiTicks);

OSTaskSleep为微型嵌入式实时操作系统SmallRTOS系统中任务延迟执行设置函数,通过此函数,可以把当前任务休眠若干毫秒的时间。参数uOS32_t uxWatiTicks代表休眠的时间长短,单位为Ticks,用户可以通过OSTICKS_PER_MS把毫秒转换为Ticks计数;
void OSTaskYield()

OSTaskYield函数为SmallRTOS中的任务控制类函数,在任务中调用,用于让出当前任务的执行权,并切换到下一个处于 eTaskStateReady状态的任务;函数OSTaskYield并不改变任务的状态,只是把当前正在执行的任务排列到状态为 eTaskStateReady的任务队列的队尾,若只有当前任务处于eTaskStateReady状态,则仍然执行当前任务;
uOS16_t OSStart( void )

函数OSStart为OSStartScheduler()函数的宏定义,OSStartScheduler()函数是SmallRTOS中的任务调度启动函数;在该函数中,系统会设置空闲任务OSIdleTask及时钟中断;OSIdleTask任务为系统空闲任务,若系统当前没有需要执行的任务,则会调用该空闲任务,空闲任务可以用于统计当前系统的利用率,及释放处于待删除状态任务的资源;时钟中断则为系统的ticks配置,整个系统的运行即依赖此ticks驱动运行;

首页 1 2 3 尾页
本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved