第10章-RT操作系统介绍_第1页
第10章-RT操作系统介绍_第2页
第10章-RT操作系统介绍_第3页
第10章-RT操作系统介绍_第4页
第10章-RT操作系统介绍_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章RTX操作系统介绍10.1RTX操作系统介绍根据维基百科的定义,OS是一组管理硬件和为应用软件提供服务的软件。硬件的抽象:OS的首要任务正是把繁杂的底层硬件的执行细节隐藏,提供给程序和用户一个相对抽象的概念。资源的管理:如何优化资源的分配,减少有害的竞争,提高某些资源的共享效率,都是操作系统关心的核心话题。一个不成文的小经验:如果源程序大于1MB,那就有必要用RTOS了!10.2RTX本课程以Keil公司开发的RTX实时操作系统作为学习对象,主要原因:RTX五脏俱全,是个完整且优秀的实时操作系统;RTX对ARM设备Cortex-M系列的芯片有比较好的支持(自家产品);更重要的是RTX不仅免费,而且其代码是开放的,可以自由查阅。RTX系统的特色带有源码的免版税。支持时间片、抢占式和合作式调度。以低的中断延迟执行高速实时操作(对于M3/M4内核可以实现零中断延迟,零中断延迟是指ISR的中断相应时间和没有使用RTX系统是一样的,也就是说RTX内核库中没有关闭中断的操作)。小的空间占用,适用于资源受限的系统。不限制数量的任务,每个任务都具有254的优先级。不限制数量的信号量、互斥信号量、消息邮箱和软定时器。支持多线程和线程安全操作。使用MDK基于对话框的配置向导,可以很方便的完成MDK的配置。市场领先的RTOS,您可以信心十足地在应用程序中使用RTX。RTX提供完全确定性的行为,可以在预定义时间内(期限)处理事件和中断,这个主要得益于RTX的零中断延迟特性。*嵌入式系统原理与应用5描述RXKernel支持的进程数最多256支持的信箱数无限制支持的信号量数无限制支持的互斥量数无限制支持的事件数每个进程16个支持的用户定时器数无限制RAM要求最少500字节代码要求小于5K字节硬件要求一个或多个片上时钟可用用户进程优先级1-255进程切换的时间小于5µsec@60MHz,0ws.中断停止时间小于1.8µsec@60MHz,0wsRTX的技术规范10.2RTX操作系统库方式移植移植前准备工作说明:RTX系统软件开发平台仅支持MDK,建议使用MDK4.74。找一个简单的工程,越简单越好,在这个简单的工程上面移植即可。简单工程里面不能有SysTick,PendSV和SVC这三个系统中断的使用,因为RTX系统要使用这三个中断。RTX操作系统库方式移植第1步:使能RTX;第2步:添加RTX系统的配置文件RTX_Conf_CM.c;

10.2.3RTX操作系统配置说明在文件“RTX_Config.c”中进行配置

Numberofconcurrentrunningtasks参数范围0–250,表示同时运行的最大任务数,空闲任务不包含在这个里面。

Numberoftaskswithuser-providedstack参数范围0–250,表示自定义任务堆栈的任务数,如果这个参数定义为0的话,表示所有的任务都是使用的配置向导里面第三个参数大小。

Taskstatcksize,表示系统分配的任务堆栈大小,单位字节。

Checkforthestackoverflow,选择是否使能任务堆栈监测,选上单选框表示使能,取消单选框表示禁能。

Runinprivilegedmode选择是否使能特权级模式,选上单选框表示使能任务工作在特权级模式,取消单选框表示任务工作在非特权级模式。RTX操作系统配置说明

Hardwaretimer,CoreSysTick表示选择系统滴答定时器,一般情况下都是选用滴答定时器作为系统时钟节拍。PeripheralTimer表示使用外设定时器。

Timerclockvalue,表示定时器主频,单位Hz。

Timertickvalue,表示系统时钟节拍周期,单位us。

Round-RobinTaskswitching,选择是否使能时间片调度。

Round-RobinTimeout[ticks]范围1–1000。表示时间片的大小,单位是系统时钟节拍个数。

Numberofusertimers范围1–250。表示用户定时器个数,即软定时器个数。

ISRFIFOQueuesize,表示ISRFIFO队列大小。中断服务程序中调用以isr_开头的函数时,会将请求类型存到此缓冲中。10.2.4RTX操作系统应用实例任务运行在特权级模式。滴答定时器主频72MHz,这个也是STM32F103的主频。系统时钟节拍周期1ms。RTX操作系统应用实例OS_TIDHandleTaskLED=NULL;/*任务句柄*/intmain(void){ bsp_Init();/*初始化外设*/os_sys_init_user(AppTaskStart,/*任务函数*/ 2,/*任务优先级*/ &AppTaskStartStk,/*任务栈*/

sizeof(AppTaskStartStk));/*任务栈大小*/

while(1);}#include

"bsp.h"

/*底层硬件驱动*/

#include

"RTL.h"

static

voidAppTaskCreate(void);__taskvoidAppTaskLED(void);__taskvoidAppTaskStart(void);staticuint64_tAppTaskLEDStk[256/8];/*任务栈*/staticuint64_tAppTaskStartStk[512/8];/*任务栈*/RTX操作系统应用实例__taskvoidAppTaskLED(void){

while(1){ bsp_LedToggle(2);bsp_LedToggle(3); os_dly_wait(200); }}static

voidAppTaskCreate(void){ HandleTaskLED=os_tsk_create_user(AppTaskLED,/*任务函数*/

1,/*任务优先级*/ &AppTaskLEDStk,/*任务栈*/

sizeof(AppTaskLEDStk));/*任务栈大小,单位字节数*/

}__task意思是无返回值型函数声明和定义,编译器预编处理时用。__taskvoidAppTaskStart(void){AppTaskCreate();

while(1) { bsp_LedToggle(1);bsp_LedToggle(4); os_dly_wait(500);}}*嵌入式系统原理与应用13RTX流程图10.2.4RTX的调试方法SystemandViewer:TimerNumber:0表示使用芯片的滴答定时器,1表外设定时器。TickTimer:时钟节拍周期。RoudRobinTimeout:时间片调度时任务分配的时间片大小。StackSize:任务栈大小,单位字节。StackOverflowCheck:设置是否支持栈溢出检测。TackUsage:任务创建情况。UserTimers:软件定时器个数。ID:任务的ID标示。Name:任务的函数名。Priority:任务优先级。State:任务状态。Delay:任务延迟时间。EventValue:任务当前的事件标志数值EventMask:任务等待的事件标志数值StackLoad:任务堆栈利用率。RTX的调试方法EventViewer:记录具体某一时刻,哪个进程在运行,和进程运行之间的切换10.3源码方式移植RTX系统第1步:在工程模板创建RTX文件夹;第2步:添加源码文件到相应文件夹;第

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论