vxworks培训讲稿(嵌入式系统)(编辑修改稿)内容摘要:

合比较松散。 * * * 控制系统 13 中断 传 1, 2 BEGIN COUNT+=1。 END 定时器 display BEGIN FOR 从左到右显示 Count。 END FOR END 真实值 存储值 显示值 ……… ……… ……… 9 9 xxx 9 9 0xx 9 9 0xx 10 10 000 ……… ……… ……… 发生上述错误的的原因是 count是一个全局变量,在程序中缺乏数据保护。 实时程序结构体的特点:正确结构必须在时间耗尽线之前被提交,理解调试复杂,错误代价大,分析设计要慎重;例如:大的嵌入式系统,多任务之间有大量的耦合关系,所以实时程序结构体是一个三维系统。 连续程序结构体、并行程序结构体 处理的是与执行速度无关的数学领域的问题,实时程序结构体处理的是物理领域的问题,实时程序结构体并不提高 CPU指令的速度,而是其程序体反映了客观世界的优先级,例如: Digital Camera的前端由十几路 DMA将图象读入内存,此时内存的读写速度都已经成为瓶颈。 第二节 Time Deadline Time deadline s。 ms。 连续系统。 实时系统 us。 ns。 CPU的指令速度。 不可见域 离散事件 人鸟 鼓振 掌翅 离散事件的时间耗 尽线是客观存在的时间,在离散事件的时间耗尽线的曲线图中, CPU 14 的指令速度是一个分水岭,时间耗尽线低于 CPU指令速度的范围是不可见域,其中的时间是计算机无法识别的。 实时程序结构体只是将计算机可识别的事件的时间耗尽线,相对于连续程序结构体下降了一点。 所谓实时是一个相对的概念。 第三节 数据保护 一个程序总是由代码和数据组成,对于共享数据的使用要加以保护。 最初的数学模型是利用 Hidden Data Lib来管理共享数据,但是这种方法有一个缺陷:延误系统的执行。 read write control 所以抽象出了两中数据结构:消息队列、信号量。 抽象思想的关键是:数据直接定位,即保护数据元素,而非数据库;精简操作接口,减少操作手续。 类比:精简官僚机构。 第二章 层次设计 第一节 层次划分 我们在分析一个系统的时候,首先看到的是系统的“处理”,即功能。 机 处理 ……… ……… ……… ……… 子处理 数据 第二节 任务划分 程序在 CPU中是以任务的方式在运行,所以我们要将系统的处理框图转化为多任务流程图,对处理进行任务划分。 任务划分存在这样一对矛盾:如果任务太多,必然增加系统任务切换的开销;如果任务太少,系统的并行度就降低了,实时性就比较差。 在任务划分时要遵循 : 1. I/O原则:不同的外设不同任务。 CPU的操作快于 I/O操作,如果将 I/O操作串行则会很浪费。 2. 优先级原则:对于突发事件的优先级等价于事件的时间耗尽线,不同优先级的处理不同任务。 3. 大量运算:归为一个任务 4. 功能耦合:归为一个任务,举例: f(),g(f()),h(g(f())) 5. 偶然耦合:归为一个任务,举例: f1(), f2(), f3()。 早晨起床以后,刷牙、洗脸、吃早饭之间并没有必然的先后顺序,但由于习惯一直是按这个顺序做的。 6. 频率组:对于周期时间,针对不同频率的处理不同任务。 如果我们在具体分析一个系 统的时候发生原则冲突的话,则要为每一个原则针对具体的系统 code data Synchronous Hidden Data Service Lib 传感器 1 传感器 2 数据处理 显 示 15 设定“权重”,必要的时候可以通过计算“权重”来最终确定如何去划分任务。 思考题:一个多层通信协议栈的实现,应该如何去划分任务。 第三节 任务调度 2. 3. 1任务调度的几种算法 任务调度算法的发展过程大致经历了三个阶段,存在三种调度算法: control loop、Interrupt schedule、 RTOS。 Control loop 是通过一种循环查询任务标志位的算法来调度任务,其特点是:简单,但不适于大系统、不灵活、不易升级,如果升级或添加新的模块就要打 开 loop,重新设计算法。 process 算法 process process Interrupt schedule 是为每个任务分配一个中断,通过中断的方式来调度任务,其特点是:简单,但把应用的并行度下降到 CPU 级。 计算机的发展是体系结构的发展,是层次结构的发展,如果采用中断的任务调度方式,任务就绕过操作系统直接与硬件发生关联,破坏了计算机的层次结构。 中断 1 中断 2 中断 3 VxWorks 的任务经创建以后可以处于三种状态: Ready、 Delayed、 Pended,操作系统采用事件驱动的方式进行任务调度。 其特点是:很复杂,需要有一些操作系统的背景。 RE:不同优先级抢占,同一优先级时间片轮转 ER:被其他任务抢占或时间片耗尽 EB:所需资源没有满足 BR:所需资源得到满足 思考题: RTOS 是在什麽时候出来执行。 操作系统是被事件驱动的。 RTOS任务调度的算法 Pre_empty:不同优先级的任务采 用抢占方式 Pended Ready Delayed Suspended Executing High Priority Task A Medium Priority Task B Low Priority Task C Event Event Event Event 16 Timeslice:相同优先级的任务采用时间片轮转方式( KernelTimeSlice(ticks)) 2. 3. 2 VxWorks的任务调度算法 VxWorks 的每个任务可以规定自己的 priority; mode:可否设断点、是否支持浮点操作。 2.3.3 VxWorks的优先级空间 priority ISR space 0 system task 230 task space user task 255 IDLE任务的优先级是 255。 第四节 任务之间的关系 1. 通信:松耦合:实现机制:一个消息队列 紧耦合:实现机制:两个消息队列 任务之间的通信也可以用信号量来构造。 2. 控制:数据保护:信号量或互斥量 同步:信号量,信号或消息队列 第五节 VxWorks的 Object VxWorks是面向对象的操作系统,我们可以从下面的角度来讨论 VxWorks的对象: 1. VxWorks的对象: Task、 Message Queue、 Semophore、 Timer、 Pipe、 File Descriptor. 2. 对象的属性: 生存性:对象可以被创建或删除 在生存期间,可被标识和管理: Name、 ID、 Control Block 平等性:对象之间不象 Unix中的父子进程间那样存在继承关系 3. 对象的服务: 系统使用系统服务对对象进行操作 第六节 VxWorks的构成实体 2. 6. 1 Task与 code的关系 Task 是 VxWorks 的一种对象,系统创建以后为其分配一个 TCB 和一个 stack, task 占用 code。 Code被 task占用,不被 OS识别和管理。 举例:程控交换机的计费系统,实现计费算法的代码只有一个 copy,在交换机系统运A B C D A B C D 时间片 17 行时可以创建多个任务,任务分别去调用该代码体。 task ……… 实时系统是一个多任务运行环境,所以要求我们编写的代码是可重入的。 所谓可重入的代码体是指代码体可被多任务占用,而且不出错。 这就要求,代码内无临界资源:临界变量如全局变量,临界设备如打印机,大部分 I/O都是临界设备;代码不修改自身,例如病毒就是一种能够修改自身的代码。 举例:为什麽多任务要求代码可重入。 例如早期有人曾经想在 DOS 的环境下执行多任务,在 DOS 上面构造了一个 multitask层 ,然后运行多任务,但是经常 down机,最后发 现 BIOS是不可重入的,所以导致死机。 2. 6. 2 Driver与 ISR的关系 首先我们来讨论一下 CPU与 device的关系, CPU的 I/O操作有四种方式:查询 polling、中断 interrupt、 DMA、 channel I/O processor。 计算机按计算机体系结构来分,大致有两种:微型机的体系结构和巨型机的体系结构。 ……… ……… I/O 符合冯 .诺依曼结构的计算机从最高层次的抽象的角度来看,由四部分组成:输入、输出、处理、存储。 微型机的体系结构是以 CPU为核心的,巨型机的体系结构是以存储器为核心的。 CPU对 I/O的操作,微型机采用的是查询、中断或 DMA的方式,巨型机采用的是 channel I/O processor的方式,在 CPU和 I/O processor 中都有 device 的驱动程序,而我们所需要编写的驱动程序是在 CPU中的驱动程序。 用户设计开发的应用系统往往是上述两种计算机体系结构的综合,例如我们使用MPC860设计一块电路板,如果从整个电路板的角度看,我们的电路是一种典型以 MPC860为核心的微型机的体系结构,但是如果具体地讨论 CPU芯片的内部结构,我们会发现其内部采用的是巨型机的体系结构。 计费算法的 1 个 copy 任务 multitask shell DOS BIOS CPU mem I/O CPU mem I/O processor 18 明确了 CPU和 device 的耦合方式以后,我们来看一下驱动程序和于之相关的中断服务程序的关系。 我们从两个角度来考虑: 1. 优先级:从优先级空间可以看出, ISR的优先级高于所有的系统任务的优先级,而 driver的优先级是从调用它的任务那里继承来的。 可以以此为依据将驱动程序的功能 划分,分别放在 ISR和 driver中; ISR应该只包含直接硬相关的操作,即要求 ISR短、精、直接硬相关;后期的处理放在 driver中。 举例:参加通信展,在展览会上主要是搜集资料,回来以后再仔细阅读。 2. 引发的条件: driver是由任务调用而开始执行。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。