嵌入式实时操作系统概要设计说明书

上传人:一*** 文档编号:136931794 上传时间:2022-08-17 格式:DOC 页数:9 大小:75KB
返回 下载 相关 举报
嵌入式实时操作系统概要设计说明书_第1页
第1页 / 共9页
嵌入式实时操作系统概要设计说明书_第2页
第2页 / 共9页
嵌入式实时操作系统概要设计说明书_第3页
第3页 / 共9页
点击查看更多>>
资源描述
分 类:软件项目设计使用者:E-fanciers 概要设计说明书Version: 1.0项 目 承 担 队伍:烟台大学计算机学院 E-fanciers小组 撰 写 人(签名): 孝瑞 完 成 日 期: 2009-7-16 本文档使用小组: E-fanciers小组评审负责人(签名): 孝瑞 评 审 日 期: 2009-8-19 目 录一、引言41.1编写目的41.2项目背景41.3定义41.4参考资料:5二、任务概述52.1目标52.2运行环境62.3 需求概述.6 2.4条件与限制6三、总体设计63.1处理流程63.2总体结构和模块外部设计6 3.3. 功能分配.7 四、接口设计74.1外部接口74.2内部接口7五、数据结构设计85.1 逻辑结构设计.85.2物理结构设计.8 5.2物理结构设计.8 六、运行设计86.1运行模块的组合.86.2运行控制.8 6.3运行时间.8 七、出错处理设计9八、安全保密设计9九、维护设计9概要设计说明书(Architectural Design Specification)一引言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)完成的。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 ShellShell是用来进行人机交互的界面。供操作系统的用户对系统进行操作.用户可以通过Shell查看任务运行情况、可以挂起、恢复任务,查看信号量的使用情况等操作.4参考资料(列出这些资料的作者、标题、编号、发表日期、出版单位或资料来源,可包括: 编号 名称作者/来源 (1)项目开发计划;E-fanciers(2)需求规格说明书; E-fanciers(3)测试计划(初稿);E-fanciers(4)用户操作手册(初稿); E-fanciers(5) ucos-ii中文版(6) 自己动手做操作系统二任务概述1目标:实现大赛要求的基本功能,并着手实现一些扩展功能2运行环境 实验板:lpc2138 调试头:JLINK 开发环境:RealView MDk3.53需求概述本赛题要求完成一个小型微内核嵌入式实时操作系统的设计和实现。 需提交实际可运行代码,并在参考硬件平台上演示功能。软件实现过程应遵循敏捷性方法的指导,注意代码和文档的质量和版本控制,编写测试用例验证软件功能和重构代码。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类型,并且由连续的内存空间组成。用户可以静态分配堆栈空间(在编译的时候分配)也可以动态地分配堆栈空间(在运行的时候分配)。3.优先级模块在用户建立任务的时候会分配给任务一个优先级。优先级决定了任务的运行次序和调度次序。4.互斥信号量模块使用互斥信号量进行任务间通信,避免了优先级反转问题的发生。互斥信号量的操作包括:创建互斥信号量、等待信号量、发送信号量.5. ShellShell是用来进行人机交互的界面。供操作系统的用户对系统进行操作.用户可以通过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);/*互斥信号量创建, 返回信号量标识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出错输出信息宏定义相应的错误编码,程序出错时输出错误信息。2出错处理对策 提示用户系统出错,等待用户处理.八安全保密设计 设置登陆界面,以此来限制用户,保证操作该系统的都是合法用户,保护系统安全。 九维护设计可移植性强(Portable),MyRtos绝大部分使用ANSI C编写,而而与微处理器硬件相关的那部分利用了C/OS-II的函数层,所以MyRtos和C/OS-II一样有很强的可移植性的可固化,可裁减,可确定性。9
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!