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

下载本文档

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

文档简介

分类:软件项目设计使用者:E-fanciers概要设计说明书Version:1.0项目承担队伍:烟台大学计算机学院E-fanciers小组撰写人(署名):孝瑞完成日期:2023-7-16本文档使用小组:E-fanciers小组评审负责人(署名):孝瑞评审日期:2023-8-19目录TOC\o"1-3"一、引言 41.1编写目的 41.2项目背景 41.3定义 41.4参考资料: 5二、任务概述 52.1目的 52.2运营环境 62.3需求概述..........................................62.4条件与限制 6三、总体设计 63.1解决流程 63.2总体结构和模块外部设计 63.3.功能分派.........................................7四、接口设计 74.1外部接口 74.2内部接口 7五、数据结构设计 85.1

逻辑结构设计.....................................85.2物理结构设计......................................85.2物理结构设计......................................8六、运营设计 86.1运营模块的组合.....................................86.2运营控制...........................................86.3运营时间...........................................8七、犯错解决设计 9八、安全保密设计 9九、维护设计 9概要设计说明书(ArchitecturalDesignSpecification)

一.引言1.编写目的 MyRTOS是E-fanciers小组通过开源的微型操作系统ucos-ii开发的嵌入式实时操作系统,目的板选用周立功ARMLPC2138+JLINK调试头,开发环境选用RealView公司的MDK.MyRTOS的设计采用ucos-ii的设计思想,并在其基础上进行了扩展和创新.特别设计解决了优先级反转问题和同级时间片轮询调度机制.2.项目背景嵌入式实时操作系统是2023山东省齐鲁软件大赛新增的题目,本题目迎合了目前非常热门的嵌入式产业的人才需求,让学生了解嵌入式开发的方方面面.并逐渐进入嵌入式开发的领域. E-fanciers小组通过度析本次大赛的题目,最后决定选择这个具有挑战性的题目.后来通过学习和陈老师的指导,结识到选择此题目的必要性:目前市场上有很多嵌入式产品,嵌入式实时操作系统也是层出不穷,如何开发出一个功能完善、而又高效的嵌入式实时操作系统成为一大热点课题.3.定义3.1嵌入式实时操作系统嵌入式实时操作系统(EmbeddedRealTimeOS,简称RTOS)是嵌入式系统应用开发的核心软件,是嵌入式系统的灵魂,就像我们平常所用计算机桌面系统中,微软公司的Windows操作系统同样重要。市场上有很多著名的商业化嵌入式操作系统,如VxWorks、PamOS、WindowsCE、嵌入式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.11ShellShell是用来进行人机交互的界面。供操作系统的用户对系统进行操作.用户可以通过Shell查看任务运营情况、可以挂起、恢复任务,查看信号量的使用情况等操作.4.参考资料(列出这些资料的作者、标题、编号、发表日期、出版单位或资料来源,可涉及:编号 名称 作者/来源 (1) 项目开发计划; E-fanciers (2) 需求规格说明书;E-fanciers(3) 测试计划(初稿); E-fanciers (4) 用户操作手册(初稿); E-fanciers(5) 《ucos-ii中文版》 (6) 《自己动手做操作系统》 二.任务概述1.目的: 实现大赛规定的基本功能,并着手实现一些扩展功能2.运营环境实验板:lpc2138调试头:JLINK开发环境:RealViewMDk3.53.需求概述本赛题规定完毕一个小型微内核嵌入式实时操作系统的设计和实现。需提交实际可运营代码,并在参考硬件平台上演示功能。软件实现过程应遵循灵敏性方法的指导,注意代码和文档的质量和版本控制,编写测试用例验证软件功能和重构代码。4.条件与限制 参考硬件平台为:周立功EasyArm2138。事实上,也可用其他LPC系列CPU和实验板,只要CPU有足够的RAM、Flash存储器和一个串口扩展就可以了。但与LPC2138区别越小越好,最终的验证都统一在LPC2138上进行。硬件抽象层的接口遵循uc/OS的接口规范。这样现存的大量的uC/OS硬件抽象层可为新操作系统提供服务,减少移植工作量。硬件抽象层可以直接借用uC/OS的代码,但最佳自己实现,只是接口兼容。操作系统的调用采用函数调用方式,不用中断陷入方式;将各任务栈独立,作为任务的私有存储区;同时支持任务数不小于255个。空闲任务占用编号0。同级任务的轮询时间片大小可以调节,单位为10毫秒(称为tick)。串口接口参数:波特率9600,8位数据,1位停止,无硬件流控制。任务优先级不小于255级,最高优先级为0,最低优先级为255。空闲任务优先级为255。操作系统的应用接口的应遵循题目的规范,见后面的描述。对于代码移植性验证,参赛者可自行选择硬件平台。该硬件平台与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.S2.内部接口内部各模块间设计容易访问的接口。下面为os.h头文献内容,该文献为对外应用接口说明文献。若需使用操作系统服务,需引用该文献。列出为基本部分,参赛者必须遵循,根据需要可扩展。/*初始化操作系统,建立多任务环境.该函数调用后,其他系统调用则可用*//*返回:0:成功,-1:失败.后面返回无说明则同*/inttaskInit(void);/*创建一个任务*//*返回:返回任务编号tid,>0:成功,其他:失败.*//*name:任务名称,entryPtr:任务函数入口,stack_size:任务栈大小,priority:任务优先级*/inttaskCreate(char*name,void*entryPtr,intstack_size,intpriority);/*启动一个任务,让taskCreat创建的任务参与调度*//*tid:任务编号,由taskCreate返回*/inttaskStart(unsignedchartid);/*获取和设立任务优先级,用于动态调整*/inttaskPriorityGet(unsignedchartid);inttaskPrioritySet(unsignedchartid,intnewPriority);/*将任务挂起,该任务退出调度*/inttaskSuspend(unsignedchartid);/*将任务删除该任务退出调度且回收任务分派的资源*/inttaskDelete(unsignedchartid);/*互斥信号量创建,返回信号量标记sid,<0:失败*/intsemCreate(void);/*互斥信号量获取和释放*/intsemTake(intsid);intsemGive(intsid);/*任务睡眠(非忙等),由任务自己调用,积极阻塞一段时间.时间单位为tick,即10毫秒*/inttaskSleep(intticks);五.数据结构设计1.

逻辑结构设计 1.1任务状态任务共有五种状态,在任一给定的时刻,任务的状态一定是在这五种状态之一.1.2任务控制块一旦任务建立了,任务控制块将被赋值。任务控制块是一个数据结构,当任务的CPU使用权被剥夺时,系统用它来保存该任务的状态。当任务重新得到CPU使用权时,任务控制块能保证任务从当时被中断的那一点丝毫不差地继续执行。控制块所有驻留在RAM中。读者将会注意到笔者在组织这个数据结构时,考虑到了各成员的逻辑分组。任务建立的时候,控制块就被初始化了2.

物理结构设计 硬件抽象层的建立,遵循ucos-ii的规范.3.

数据结构与程序的关系就绪队列使用链表数据结构,查找最高优先级任务时遍历链表查询.六.运营设计1.运营模块的组合各模块互相配合共同完毕对任务的实时调度。2.运营控制通过Shell来控制任务的运营,可以对任务进行挂起、恢复、运营、删除等操作。3.运营时间通过以时钟心跳tick为单位对任务状态计时,任务调度有同级时间片轮询和不同优先级按优先级调度,完毕对任务的实时调度。七.犯错解决设计1.犯错输出信息 宏定义相应的错误编码,程序犯错时输犯错误信息。2.犯错解决对策提醒用户系统犯错,等待用户解决.八.安全保密设计设立登陆界面,以此来限制用户,保证操作该系统的都是合法用户,保护系统安全。

温馨提示

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

评论

0/150

提交评论