RTOS介绍ppt课件.ppt_第1页
RTOS介绍ppt课件.ppt_第2页
RTOS介绍ppt课件.ppt_第3页
RTOS介绍ppt课件.ppt_第4页
RTOS介绍ppt课件.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

RTOS介绍 嵌入式软件开发入门知识 1 概要 一 什么是RTOS二 RTOS的功能 特性三 为什么要使用RTOS四 RTOS在UPS中的应用1 系统中的位置2 各系统层次介绍五 RTOS举例 根据应用裁减的uCOS II六 使用RTOS后的应用层七 总结 2 一 什么是RTOS RTOS是实时多任务操作系统Real TimeOperationSystem的缩写RTOS是一个程序内核典型的单片机程序在程序指针复位后 首先进行堆栈 中断 中断向量 定时器 串行口等接口设置 初始化数据存储区和显示内容 然后就来到了一个监测 等待或空循环 在这个循环中 CPU可以监视外设 响应中断或用户输入 这段主程序可以看作是一个内核 内核负责系统的初始化和开放 调度其它任务 相当于C语言中的主函数 RTOS就是这样的一个标准内核 包括了各种片上外设初始化和数据结构的格式化 不必 也不推荐用户再对硬件设备和资源进行直接操作 所有的硬件设置和资源访问都要通过RTOS核心 硬件这样屏蔽起来以后 用户不必清楚硬件系统的每一个细节就可以进行开发 这样就减少了开发前的学习量 一般来说 对硬件的直接访问越少 系统的可靠性越高 RTOS是一个经过测试的内核 与一般用户自行编写的主程序内核相比 更规范 效率和可靠性更高 另外 高效率地进行多任务支持是RTOS设计从始至终的一条主线 采用RTOS管理系统可以统一协调各个任务 优化CPU时间和系统资源的分配 使之不空闲 不拥塞 针对某种具体应用 精细推敲的应用程序不采用RTOS可能比采用RTOS能达到更高的效率 但是对于大多数一般用户和新手而言 采用RTOS是可以提高资源利用率的 尤其是在片上资源不断增长 产品可靠性和进入市场时间更重要的今天 3 二 RTOS的功能 特性 1 更加面向硬件系统 而不是操作者 2 实时性 3 多任务 4 不同的典型外设驱动支持 5 高可靠性 4 三 为什么要使用RTOS 随着High endCPU处理事情的日益增加 CPU的利用率的提高已十分必要 引入RTOS能显著提高CPU的利用效率 C语言已经在程序开发中得到广泛的应用 RTOS的引入 可使模块化程度更高 移植性更好 程序更易于维护 随着CPU速度的提高 MemorySize的扩容 CPUHardwareFunction的增加 为RTOS应用提供了条件 Kernel设计达到以下要求 1 提高CPU的利用效率2 增强程序的模块化程度3 增强程序的可移植性 减短应用程序的开发周期4 增强程序的可维护性以及可扩充性 5 四 RTOS在UPS中的应用 1 RTOSkernel在程序系统中的位置 6 四 RTOS在UPS中的应用 2 各层介绍2 1硬件层 黄色部分 最底层是硬件层 由对CPU本身提供的寄存器进行操作来实现对各个功能模块的操作 包括DSP MCU的各个功能模块 EVENTMANAGESCI SPI CANI OPORTSADC2 2硬件抽象层 褐色部分 这一层通过对CPU提供的寄存器进行操作 并将底层获得的数据抽象出来给给更高层次使用 并且通过宏的方式 使更高层的程序与底层代码无关 增强移植性 希望能够得到一组通用的 与CPU无关的 对硬件操作的宏 MACRO 举例 以TMS320LF2407A为例1 io资源 definehoInvRelayPBDATDIR BIT IOPB62 ADC definemStartAD ADCTRL2 BIT SOC SEQ1 1 definemResetAD ADCTRL2 BIT RST SEQ1 1 7 四 RTOS在UPS中的应用 2 3DeviceDriver层这一层主要是在各个中断中实现 通过调用硬件抽象层的宏 MACRO 来获得与低层硬件无关的数据 提供给任务级使用 由于资源的限制 不需要使用统一的接口来控制所有的I 0及外设 对每一种设备采用其各自的宏处理 例如 从rs232接收寄存器中提取数据并存入接收buffer中 通过宏的形式来使inveter中的代码与硬件不相关 2 4面向控制层 蓝色部分 由于在ups系统中 控制部分占着最重要的作用 所以将这一部分单独拿出来 它的位置应该和kernel的位置是对等的 它不受kernel的约束 这一部分是dsp中运算量最密集的部分 最少的代码 占用了最多的时间 需要用汇编编写 这部分的主要内容是inverter控制部分和pfc控制部分 它们相对和其他部分独立 通过几个简单的接口和其余部分交互 控制层占用了大部分的CPU资源 程序执行时间要尽可能短 必要时可用汇编 Assembly 编写 8 四 RTOS在UPS中的应用 2 5Kernel层 粉红色部分 Kernel层通过提供特定的系统服务 来实现对任务的调度以及切换 实现任务之间的同步与通信 主要有以下三部分组成 任务的建立和调度任务之间的通信和同步Timer结构以及时间管理2 6任务级 红色部分 主要通过devicedriver层的数据以及其他任务的信号来控制UPS的时序 各个模拟量的检测 这一层是面对UPS 面对客户的应用层 9 五 RTOS举例 根据应用裁减的uCOS II 一 文件视图 第一部分 与处理器及用户设定有关的部分在目录kernel ports下由四个文件构成 一 OS CPU h 主要定义了与处理器有关的基本变量类型 以及与处理器有关的宏二 OS Config h 主要定义了用户的一些设置 以及一些开关量三 OS CPU C 与处理器系统有关的C函数 包括以下函数OS STK OSTaskStkInit void task void OS STK ptos 主要对任务堆栈进行初始化 模仿编译器在现场切换时的动作 初始化任务堆栈 四 OS CPU A ASM 需要用汇编语言编写的函数 有以下三个 1 OSStartHighRdy 启动当前最高优先级的旧序任务 2 OSCtxSw 任务级的任务切换3 OSIntCtxSw 中断级的任务切换 10 五 RTOS举例 根据应用裁减的uCOS II 第二部分 与CPU无关的部分在目录kernel source下 由5个文件组成 一 OS HEAD h 常量 函数的声明以及变量的定义二 OS CORE C 定义了系统内部函数 不可以被用户调用 有以下几个函数 1 INTOSOSFindHighPrio void 找出当前最高就绪的任务的优先级 并返回 2 voidOSSched void 任务级调度函数 找出最高优先级的就绪任务并切换 3 voidOSInitRdyList void 初始化任务调度的相关变量 将就绪任务列表清空 4 voidOSInitSys void 初始化一些系统的变量5 voidOSInitTCBList void 初始化TCB列表6 voidOSInitTaskIdle void 创建OSTaskIdle7 voidOSTaskIdle void TaskIdle任务三 OS SHELL C 定义以下四个函数 1 voidOSInit void 系统初始化函数2 voidOSTaskCreate void task void INTOSstksize INTOSprio 创建一个任务3 voidOSStart void 启动多任务调度 创建任务后 找出最高优先级任务 并且换到该任务执行 4 voidOSIntExit void 中断退出函数四 OS EVENT C 事件管理的函数 1 TASK EVENTOSEventPend void 有挂起的等待一个事件2 TASK EVENTOSEventGet void 无挂起的等待一个事件3 voidOSEventSend INTOSprio INTOSEventId 发送一个事件给优先级prio的任务 并将改任务置就绪 该函数只能在任务级调用 4 voidOSISREventSend INTOSprio INTOSEventId 发送一个事件给优先级prio的任务 并将改任务置就绪 该函数只能在中断中调用 五 OS TIMER C 时间管理的函数voidOSTimerTick void 时钟节拍服务函数 11 五 RTOS举例 根据应用裁减的uCOS II 二 功能组织视图 第三部分 可调用的宏列表kernel ports OS CPU h 1 defineOS ENTER CRITICAL asm SETCINTM 2 defineOS EXIT CRITICAL asm CLRCINTM kernel source OS HEAD h 1 ifOS TASK IDLE EN 0 defineOSGetCPUTimeFree CPUFREE endif2 defineOSTimerStart prio cnt period OSTCBTbl prio TimerCnt cnt OSTCBTbl prio TimerPeriod period3 defineOSTimerStop prio OSTCBTbl prio TimerPeriod 0详细的说明请参见 说明书7 宏说明第四部分 可调用的函数列表OS SHELL C 1 voidOSInit void 2 voidOSTaskCreate void task void INTOSstksize INTOSprio 3 voidOSStart void 4 voidOSIntExit void OS EVENT C 1 TASK EVENTOSEventPend void 2 TASK EVENTOSEventGet void 3 voidOSEventSend INTOSprio INTOSEventId 4 voidOSISREventSend INTOSprio INTOSEventId OS TIMER C voidOSTimerTick void 12 五 RTOS举例 根据应用裁减的uCOS II 数据类型介绍为增强移植型 定义以下的数据类型 OS CPU h typedefunsignedcharBOOLEAN typedefunsignedcharINT8U typedefcharINT8S typedefunsignedintINTOS typedefunsignedintINT16U typedefintINT16S typedefunsignedlongINT32U typedeflongINT32S defineOS STKINTOSU表示无符号数 S表示有符号数INTOS数据类型是系统最小能够处理的数据类型 13 五 RTOS举例 根据应用裁减的uCOS II 数据结构介绍 typedefstruct OS STK OSTCBStkPtr 栈顶指针 INT16UTimerPeriod timer周期 INT16UTimerCnt timer计数器 TASK EVENTOSEvent 任务事件Event OS TCB 1 OS TCBOSTCBTbl OS LOWEST PRIO 1 TCB列表2 INTOSOSPrioHighRdy 当前就绪的最高优先级3 INTOSOSPrioCur 当前任务优先级4 OS TCB OSTCBHighRdy 指向最高优先级就绪任务TCB的指针5 OS TCB OSTCBCur指向当前任务TCB的指针6 INTOSOSRdyMap就绪表 低位对应高优先级7 OS STKOSSystemStk OS MAX STK SIZE 系统任务栈区 其大小为OS MAX STK SIZE 必须不小于所有任务任务栈大小之总和8 OS STK OSStkPtr 系统空闲堆栈区的头指针 9 defineOS STK GROWTH UP堆栈生长方向 为1表明堆栈为向上生长型 为0表示向下生长 14 五 RTOS举例 根据应用裁减的uCOS II 任务划分按照功能耦合的原则 大致可把应用程序划分成以下任务 Supervisor 控制整个ups的时序 状态转换Inverterjob 逆变电压 电流等的计算 侦测 锁相LineJob 市电电压 频率的计算和侦测 波形 零火线侦测LoadJob 负载计算和侦测BatterJob 负责Battery管理TempJob 温度侦测和计算BusJob 负责bus电压的计算和侦测 SciJob Rs232通讯PannelJob 负责Switch Display工作ParaJob 并联的控制 包括CAN通讯 SPIJob 负责两个DSP之间的通讯 15 五 RTOS举例 根据应用裁减的uCOS II 任务管理和调度每个任务只有三种状态 挂起态 就绪态 执行态 任务堆栈每个任务有各自的独立任务堆栈 这样在采用C语言编写程序的时候才不会有任何的限制任务堆栈的大小由处理器 编译器架构以及任务级的函数嵌套n 中断嵌套m 传递的参数x 临时变量y共同决定任务栈大小 任务控制块每个任务通过一个任务控制块来管理自己的信息 任务控制块的结构如下 typedefos tcb OS STK OSTCBStkPtr INTOSOSTCBPrio OS MSGOSTCBMsg INTOSOSTCBStat OS TCB 16 五 RTOS举例 根据应用裁减的uCOS II 任务管理和调度 调度算法按照纯粹的优先级调度算法 在有事件发生的时候 调度优先级最高的就绪任务kernel最多支持16个任务 其中包含一个系统任务OSTaskIdle 切换流程 17 五 RTOS举例 根据应用裁减的uCOS II 时间划分和管理 大多数任务需要一个定时的机制来实现定时的调度 需要一个定时的中断来管理定时 每一个任务需要一个变量来记录timer的周期 OSTimerPeriod 还需要一个变量来记录计数值 OSTimerCnt 当timer的周期值为0时 表示这个timer是被禁止的 当计数器的值大于或等于周期值时 将计数器清零 并唤醒任务 唤醒的方式通过发送一个EventId 0的事件给任务的TCB defineEVENTID TIMER0 defineOSTimerStart prio cnt period 设置周期和计数器OSTCBTbl prio TimerCnt cnt OSTCBTbl prio TimerPeriod period defineOSTimerDisable prio 禁止timerOSTCBTbl prio TimerPeriod 0 18 五 RTOS举例 根据应用裁减的uCOS II 系统开销 以共11个任务 11个消息队列 11个TIMER计算 不计算任务堆栈的大小

温馨提示

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

评论

0/150

提交评论