嵌入式实时操作系统概要设计说明书.doc_第1页
嵌入式实时操作系统概要设计说明书.doc_第2页
嵌入式实时操作系统概要设计说明书.doc_第3页
嵌入式实时操作系统概要设计说明书.doc_第4页
嵌入式实时操作系统概要设计说明书.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

分 类 软件项目设计 使用者 E fanciers 概要设计说明书概要设计说明书 Version 1 0 项 目 承 担 队伍 烟台大学 计算机学院 E fanciers 小组 撰 写 人 签名 孝瑞 完 成 日 期 2009 7 16 本文档使用小组 E fanciers 小组 评审负责人 签名 孝瑞 评 审 日 期 2009 8 19 2 目目 录录 一 引言一 引言 4 4 1 11 1 编写目的编写目的 4 4 1 21 2 项目背景项目背景 4 4 1 31 3 定义定义 4 4 1 41 4 参考资料 参考资料 5 5 二 任务概述二 任务概述 5 5 2 12 1 目标目标 5 5 2 22 2 运行环境运行环境 6 6 2 32 3 需求概述需求概述 6 6 2 42 4 条件与限制条件与限制 6 6 三 总体设计三 总体设计 6 6 3 13 1 处理流程处理流程 6 6 3 23 2 总体结构和模块外部设计总体结构和模块外部设计 6 6 3 3 3 3 功能分配功能分配 7 7 四 四 接口设计接口设计 7 7 4 14 1 外部接口外部接口 7 7 4 24 2 内部接口内部接口 7 7 五 数据结构设计五 数据结构设计 8 8 5 15 1 逻辑结构设计逻辑结构设计 8 8 5 25 2 物理结构设计物理结构设计 8 8 5 25 2 物理结构设计物理结构设计 8 8 3 六 运行设计六 运行设计 8 8 6 16 1 运行模块的组合运行模块的组合 8 8 6 26 2 运行控制运行控制 8 8 6 36 3 运行时间运行时间 8 8 七 出错处理设计七 出错处理设计 9 9 八 安全保密设计八 安全保密设计 9 9 九 维护设计九 维护设计 9 9 4 概要设计说明书概要设计说明书 ArchitecturalArchitectural DesignDesign SpecificationSpecification 一 引言 1 编写目的 MyRTOS 是 E fanciers 小组通过开源的微型操作系统 ucos ii 开发的嵌入式实时操 作系统 目标板选用周立功 ARMLPC2138 JLINK 调试头 开发环境选用 RealView 公司 的 MDK MyRTOS 的设计采用 ucos ii 的设计思想 并在其基础上进行了扩展和创新 尤其设计 解决了优先级反转问题和同级时间片轮询调度机制 2 项目背景 嵌入式实时操作系统是 09 年山东省齐鲁软件大赛新增的题目 本题目迎合了目前非常 热门的嵌入式产业的人才需求 让学生了解嵌入式开发的方方面面 并逐渐进入嵌入式开发 的领域 E fanciers 小组经过分析本次大赛的题目 最后决定选择这个具有挑战性的题目 后 来经过学习和陈老师的指导 认识到选择此题目的必要性 目前市场上有很多嵌入式产品 嵌入式实时操作系统也是层出不穷 如何开发出一个功能完善 而又高效的嵌入式实时操作 系统成为一大热点课题 3 定义 3 1 嵌入式实时操作系统 嵌入式实时操作系统 Embedded Real Time OS 简称 RTOS 是嵌入式系统应用开 发的核心软件 是嵌入式系统的灵魂 就像我们日常所用计算机桌面系统中 微软公司的 Windows 操作系统一样重要 市场上有很多著名的商业化嵌入式操作系统 如 VxWorks Pam OS Windows CE 嵌入式 Linux 和 C OS II 等上千种 RTOS 3 2 临界区 和其它内核一样 MyRtos 为了处理临界段代码需要关中断 处理完毕后再开中断 这 使得 MyRtos 能够避免同时有其它任务或中断服务进入临界段代码 关中断的时间是实时 内核开发商应提供的最重要的指标之一 因为这个指标影响用户系统对实时事件的响应性 MyRtos 努力使关中断时间降至最短 但就使用 MyRtos 而言 关中断的时间很大程度上取 决于微处理器的架构以及编译器所生成的代码质量 3 3 任务 一个任务通常是一个无限的循环 一个任务看起来像其它 C 的函数一样 有函数返回 类型 有形式参数变量 返回任务编号 3 4 任务调度 确定哪个任务优先级最高 下面该哪个任务运行了的工作是由调度器 Scheduer 完 5 成的 3 5 空闲任务 系统的空闲任务 OS TaskIdle MyRtos 总是建立一个空闲任务 这个任务在没有其 它任务进入就绪态时投入运行 这个空闲任务永远设为最低优先级 即 OS LOWEST PRI0 空闲任务 OS TaskIdle 什么也不做 只是在不停地给一个 32 位的名 叫 OSIdeCtr 的计数器加 1 注意空闲任务不可能被应用软件删除 属于系统服务 3 6 统计任务 统计任务用来根据计数器的值计算 cpu 利用率 属于系统服务 3 7 任务管理 对任务进行的操作 包括任务创建 删除 阻塞睡眠 挂起 恢复等操作 属于内核部 分 3 8 任务堆栈 每个任务都有自己的堆栈空间 堆栈必须声明为 OS STK 类型 并且由连续的内存 空间组成 用户可以静态分配堆栈空间 在编译的时候分配 也可以动态地分配堆栈空间 在 运行的时候分配 3 9 优先级 在用户建立任务的时候会分配给任务一个优先级 优先级决定了任务的运行次序和调 度次序 3 10 互斥信号量 使用互斥信号量进行任务间通信 避免了优先级反转问题的发生 互斥信号量的操 作包括 创建互斥信号量 等待信号量 发送信号量 3 11 Shell Shell 是用来进行人机交互的界面 供操作系统的用户对系统进行操作 用户可以通 过 Shell 查看任务运行情况 可以挂起 恢复任务 查看信号量的使用情况等操作 4 参考资料 列出这些资料的作者 标题 编号 发表日期 出版单位或资料来源 可包括 编号 名称作者 来源 1 项目开发计划 E fanciers 2 需求规格说明书 E fanciers 3 测试计划 初稿 E fanciers 4 用户操作手册 初稿 E fanciers 5 ucos ii 中文版 6 自己动手做操作系统 二 任务概述 1 目标 实现大赛要求的基本功能 并着手实现一些扩展功能 2 运行环境 6 实验板 lpc2138 调试头 JLINK 开发环境 RealView MDk3 5 3 需求概述 本赛题要求完成一个小型微内核嵌入式实时操作系统的设计和实现 需提交实际可运 行代码 并在参考硬件平台上演示功能 软件实现过程应遵循敏捷性方法的指导 注意代 码和文档的质量和版本控制 编写测试用例验证软件功能和重构代码 4 条件与限制 1 参考硬件平台为 周立功 EasyArm2138 实际上 也可用其他 LPC 系列 CPU 和实 验板 只要 CPU 有足够的 RAM Flash 存储器和一个串口扩展就可以了 但与 LPC2138 区别越小越好 最终的验证都统一在 LPC2138 上进行 2 硬件抽象层的接口遵循 uc OS 的接口规范 这样现存的大量的 uC OS 硬件抽象层 可为新操作系统提供服务 减少移植工作量 硬件抽象层可以直接借用 uC OS 的 代码 但最好自己实现 只是接口兼容 3 操作系统的调用采用函数调用方式 不用中断陷入方式 4 将各任务栈独立 作为任务的私有存储区 5 同时支持任务数不小于 255 个 空闲任务占用编号 0 6 同级任务的轮询时间片大小可以调节 单位为 10 毫秒 称为 tick 7 串口接口参数 波特率 9600 8 位数据 1 位停止 无硬件流控制 8 任务优先级不小于 255 级 最高优先级为 0 最低优先级为 255 空闲任务优先级 为 255 9 操作系统的应用接口的应遵循题目的规范 见后面的描述 10 对于代码移植性验证 参赛者可自行选择硬件平台 该硬件平台与 LPC2138 或 ARM 之间的区别越大越好 三 总体设计 1 处理流程 设计和实现一个小型微内核嵌入式实时操作系统 硬件抽象层的接口遵循 uc OS 的接口 规范 操作系统的调用采用函数调用方式 不用中断陷入方式 同时支持任务数不小于 255 个 空闲任务占用编号 0 同级任务的调度采用时间片轮询的方式 不同优先级任务采 用按优先计调度的方式 及时对请求的任务进行处理 2 总体结构和模块外部设计 1 任务管理模块 对任务进行的操作 包括任务创建 删除 阻塞睡眠 挂起 恢复等操作 属于内核部 分 2 任务堆栈模块 每个任务都有自己的堆栈空间 堆栈必须声明为 OS STK 类型 并且由连续的内存 7 空间组成 用户可以静态分配堆栈空间 在编译的时候分配 也可以动态地分配堆栈空间 在 运行的时候分配 3 优先级模块 在用户建立任务的时候会分配给任务一个优先级 优先级决定了任务的运行次序和调 度次序 4 互斥信号量模块 使用互斥信号量进行任务间通信 避免了优先级反转问题的发生 互斥信号量的操 作包括 创建互斥信号量 等待信号量 发送信号量 5 Shell Shell 是用来进行人机交互的界面 供操作系统的用户对系统进行操作 用户可以通 过 Shell 查看任务运行情况 可以挂起 恢复任务 查看信号量的使用情况等操作 3 功能分配 表明各项功能与程序结构的关系 各个模块既是相互独立的又是互相关联的 各个模块的互相调用配合共同使得系统得 以稳定的工作 四 接口设计 1 外部接口 遵循 uc OS 的底层接口规范 参考代码文件 OS CPU H OS CPU A C OS CPU A S 2 内部接口 内部各模块间设计容易访问的接口 下面为 os h 头文件内容 该文件为对外应用接口说明文件 若需使用操作系统服务 需引用该文件 列出为基本部分 参赛者必须遵循 根据需要可扩展 初始化操作系统 建立多任务环境 该函数调用后 其他系统调用则可用 返回 0 成功 1 失败 后面返回无说明则同 int taskInit void 创建一个任务 返回 返回任务编号 tid 0 成功 其他 失败 name 任务名称 entryPtr 任务函数入口 stack size 任务栈大小 priority 任务优先级 int taskCreate char name void entryPtr int stack size int priority 启动一个任务 让 taskCreat 创建的任务参加调度 tid 任务编号 由 taskCreate 返回 int taskStart unsigned char tid 获取和设置任务优先级 用于动态调整 int taskPriorityGet unsigned char tid int taskPrioritySet unsigned char tid int newPriority 将任务挂起 该任务退出调度 int taskSuspend unsigned char tid 将任务删除 该任务退出调度且回收任务分配的资源 int taskDelete unsigned char tid 8 互斥信号量创建 返回信号量标识 sid 0 失败 int semCreate void 互斥信号量获取和释放 int semTake int sid int semGive int sid 任务睡眠 非忙等 由任务自己调用 主动阻塞一段时间 时间单位为 tick 即 10 毫秒 int taskSleep int ticks 五 数据结构设计 1 逻辑结构设计 1 1 任务状态 任务共有五种状态 在任一给定的时刻 任务的状态一定是在这五种状态之一 1 2 任务控制块 一旦任务建立了 任务控制块将被赋值 任务控制块是一个数据结构 当任务的 CPU 使用 权被剥夺时 系统用它来保存该任务的状态 当任务重新得到 CPU 使用权时 任务控制块 能确保任务从当时被中断的那一点丝毫不差地继续执行 控制块全部驻留在 RAM 中 读者 将会注意到笔者在组织这个数据结构时 考虑到了各成员的逻辑分组 任务建立的时候 控制块就被初始化了 2 物理结构设计 硬件抽象层的建立 遵循 ucos ii 的规范 3 数据结构与程序的关系 就绪队列使用链表数据结构 查找最高优先级任务时遍历链表查询 六 运行设计 1 运行模块的组合 各模块互相配合共同完成对任务的实时调度 2 运行控制 通过 Shell 来控制任务的运行 可以对任务进行挂起 恢复 运行 删除等操作 3 运行时间 通过以时钟心跳 tick 为单位对任务状态计时 任务

温馨提示

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

评论

0/150

提交评论