ImageVerifierCode 换一换
格式:PPT , 页数:142 ,大小:317.50KB ,
资源ID:13965144      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/13965144.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(操作系统内核与应用实践09级.ppt)为本站上传会员【s4****5z】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

操作系统内核与应用实践09级.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第一章课程设置目标与要求,独立实践课开设的意义,独立实践课的内容,课程安排及成绩评估,本实践课程开设的意义,操作系统是计算机系统中承上启下的系统软件,它的工作流程和设计方法最有代表性和实用价值。,要真正理解操作系统基本原理,切实可行的方法是针对各类操作系统实例系统进行各种类型的实践,利用操作系统内核进行应用程序设计。,培养实用型、创新型人才,提升学生的软件研发能力。开拓学生的专业视野和实际工作能力。,体验系统级应用程序的设计实现,结合实际开发需求,掌握开发环境、开发技术、项目开发实施方面的基本过程,以课题

2、组方式进行方案论证、设计、开发环境构建、分工、单元开发、调试,集成调试运行,以及文档的编写,组长是项目小组核心。,该过程能使大家明确软件开发的各个环节,结合自身条件对每个环节进行自己的设计实现。,操作系统内核与应用实践实施方案,嵌入式实时操作系统,C/OS-,是实时操作系统的成功范例。,开放源代码资源架设一个方便的开发平台,提供一个很好实用的开发工具环境,使学生能够专注于实时应用软件技术,不必为系统开发环境等问题耗费精力。而且有大量的移植范例下载参考。,C/OS-,的商业价值也很高,可以支持嵌入式商业应用程序的开发需求。,操作系统实践课达到的目标,理解把握实现操作系统的层次结构和工作流程,设计

3、应用系统的工作流程,学会使用需要的开发工具环境,选择合适的软件工具进行编码实现,进行单元调试和集成调试,课题组为单位展开工作,编写开发文档及其课程设计报告,对软件开发全过程的技术运用进行考量,独立实践课培养检验学生能力,培养学生的研究能力、协调协作能力、软件系统的分析设计能力、编码能力,解决问题能力、表述能力等。,课程设计的实施,自由,2,人组成课题组,选定一名组长,负责课题小组全面工作,根据小组各成员的基础和意愿从应用题目中选择进行开发,独立实践课的核心内容,选择实时操作系统,cos,-II,进行分析和应用程序的仿真开发。,基于,DOS,和,windows,操作系统平台,选用嵌入式实时操作系

4、统,cos,-II,的源代码(非常优秀有价值的,C,源代码)进行分析,理解工作原理和工作流程,,,参考教材选择设计自己的应用程序的功能,并编码实现,完成系统调试运行。,可建立,2,人的课题组进行分工,对每人负责的模块分别进行应用程序设计或内核分析程序运行监测。,鼓励选择有个人创新内容的应用项目完成设计与实现,。,方案技术内容,了解实时操作系统基本概念、工作原理,明确,C/OS-,内核应用的结构、组成方法,理解一个实时操作系统及其应用的基本架构。,掌握,C/OS-,内核的运行流程及应用代码运行流程,能够基于,C/OS-,内核,利用系统函数接口,构建用户自己的应用程序代码,实现一个嵌入实时应用程序

5、的设计、编码等开发工作。,利用提供编译环境,编译、调试、运行应用程序。,设计实现技术,授课讲解内核与应用程序实现技术,参考,ucos,-II,系统代码以及编译生成技术(,make,文件),课题组选定所重点使用的内核模块,理解源码,确立应用方案,并用,C,语言编码实现,基于,cos,-II,内核的应用项目推荐,任务管理实验,信号量管理实验,消息队列实验,时钟中断实验,任务执行时间测定,生产者消费者算法实验,哲学家就餐实验,鼓励自行选择感兴趣的应用程序,课程安排及成绩评估,一、,授课,8,学时(,7,、,8,周,,4,学时/周),达到目标:,明确独立实践课内容及要求。,理解内核编程技术及应用系统功

6、能及各个模块功能及接口,为应用系统分析设计打基础。,确立课题小组,提交任务书,上机实践之前,确定以下内容:,按选择的项目自由组成一个课题组,讨论并确定开发功能、开发环境及软件工具、分工交流方式等。,课程设计任务书建议内容,开发项目名称(选择题目),主要系统功能以及目标(运行功能描述),设计要求(内核功能及接口、应用代码结构),成果形式(软件验收、报告文档),基本要求(阶段检查、进度安排、验收要求),主要参考文献(课件、源代码、实例程序、教材),工作量(系统复杂度、创新等),上机时间安排,上机共4,0,学时,安排地点:计算机学院机房(,307,、,308,),安排时间:第,9,周,第,13,周,

7、每周,8,学时,分两次上机。第八周确定具体时间。,安排批次:,计科,0901-3,(范艳芳),计科,0904-6,(牛欣源),上机实施内容与步骤,理解掌握内核接口及应用代码结构,以课题组为单位提出应用系统需求和设计建议,完成系统分析设计,每人独立进行模块详细设计及编码调试,完成课程设计报告的编写,由教师对每组进行阶段检查和项目验收,独立实践课成绩评估,课程设计任务书,系统分析设计报告,模块详细设计报告,单元测试系统调试报告、用户手册,20%,阶段检查(内核、应用代码、测试),30%,验收检查(运行与界面所有数据),10%,开卷期末考试,40%,阶段检查及内容,内核模块功能、应用接口,应用代码的

8、算法与数据结构,单元调试、系统测试,工作量,创新设计与实现、新编程技术、新设计方法,系统验收检查及内容,系统运行平稳,界面友好,系统功能设计完备,系统调试完备,文档成绩评估,课程设计任务书,系统分析设计报告,模块详细设计报告,单元测试系统调试报告、用户手册,20%,评价标准:,根据文档质量(可读性,可操作性,创新性,完整性,工作量)评估文档成绩。,课程设计报告,的编写,参见,课程设计报告撰写规范,报告每组打印一份上交,课程设计报告封面,课程名称,题目,指导教师,设计起止日期,系别,专业,学生姓名,班级,/,学号,成绩,课程设计任务书内容,题目:,主要系统功能以及目标:,设计要求,成果形式,基本

9、要求,主要参考文献,工作量,课程设计报告撰写规范,1,、任务书,2,、摘要:功能及实现技术的简练陈述,不超过,400,字,关键词为,4,个左右,3,、目录,4,、,正文。,正文应按目录编排依次撰写,要求论述清楚,文字简练通顺,插图简明,书写整洁。,5,、参考文献,(,资料,),正文,核心文档内容与格式,一、系统分析与设计功能(小组编写),1,、从所使用内核功能和实现应用程序功能两个方面说明,2,、模块结构图(按照内核模块、应用模块划分),3,、系统实现方案编程工具说明,4,、系统运行界面及功能说明,三、系统模块设计与调试文档(设计实现者编写),1,、模块功能,2,、模块接口(被调用、调用关系;

10、调用参数和返回结果),3,、模块主要处理步骤及其编码实现方法,(主要数据结构设计实现、主要算法设计实现),4,、模块调试:调试数据、调试结果、问题分析,四、系统集成调试(小组编写),五、用户使用说明,课程邮箱:,jike09kernel,邮箱密码:,welcome,答疑时间:,7,、,8,周周一下午,1:30-3:30,第二章 ,c/OS-II,系统分析,通过分析,C/OS-II,内核源代码程序及其数据结构的设计,理解掌握一个成熟实时操作系统的基本架构,与本学期操作系统课程的通用操作系统原理及其模块设计作比较,从中可发现其异同。,可根据,C/OS-II,内核的运行流程,掌握操作系统的动态工作流

11、程,使得在学习操作系统原理中掌握的基本概念和模块功能得到一个感性的认识,使各个模块的运行机制及其动态逻辑关系得到真实的展现。,嵌入式系统的应用程序,嵌入式系统的应用程序是与操作系统内核集成在一起运行,实现对系统监控对象的控制和处理,可基于和利用,C/OS-II,内核,构建用户自己的应用程序代码,实现对特定任务的管理。,具体实施步骤,参考,C/OS-II,系统的内核与实例应用程序的设计资料和源代码,以及实例程序中实现编译链接的,make,文件的设计,课题组选定所修改的模块,确立应用程序的功能设计方案,并用(,Borland C,)编码实现。,在这个项目中,利用普通的,PC,机及其通用的操作系统环

12、境,就可以自己动手搭建嵌入式系统应用程序的开发平台,具有实际开发操作系统软件的实用价值。,授课基本内容,嵌入式软件系统。,主要介绍嵌入式软件分类、特点、体系结构、运行流程、操作系统及开发工具。,嵌入式实时,C/OS-II,内核及模块接口。,具有嵌入式操作系统的组成原理和构成特点,主要包括对多任务、任务的调度及任务间的通信机制,内存管理,时间管理等重要模块。,嵌入式系统软件的开发。,主要讨论嵌入式系统开发工具的选择、嵌入式软件开发模式的实施、实时软件分析设计方法的运用。,仿真开发环境,Borland C/C+V4.5,及其源代码资源。,介绍,C/OS-II,的内核及应用程序的编译连接运行环境,讲

13、解应用实例,为编写实例程序提供指导。,应用方案设计。,为学生提供应用程序的设计方案,可从中选择,运用,C/OS-II,提供的环境开发生成自己的实时应用程序。,1,、嵌入式软件系统,软件与嵌入式软件,嵌入式软件体系结构,软件与嵌入式软件,嵌入式软件分为系统软件、支撑软件和应用软件。,系统软件:控制、管理计算机系统资源。如:嵌入式操作系统、嵌入式中间件(,CORBA,、,Java,)等,支撑软件:辅助软件开发的工具。如:系统分析设计工具、仿真开发工具、交叉开发工具、测试工具、配置管理工具、维护工具等。,应用软件:面向应用领域。如:手机软件、路由器软件、交换机软件、飞控软件等。,运行平台来分,嵌入式

14、软件可以分为,运行在开发平台上的软件:设计、开发、测试工具等。,运行在嵌入式系统上的软件:嵌入式操作系统、应用程序、驱动程序及部分开发工具。,嵌入式软件体系结构,驱动层,操作系统层,中间件层,应用层,驱动层,驱动层是直接与硬件的交互层,对操作系统和应用提供驱动支持。该层主要包括三种类型的程序:,板级初始化程序:嵌入式系统上电后初始化系统的硬件环境,包括嵌入式微处理器、存储器、中断控制器、,DMA,、定时器等的初始化。,与系统软件相关的驱动:操作系统和中间件等系统软件所需的驱动程序。,与应用软件相关的驱动:应用软件相关的驱动不一定需要与操作系统连接,这些驱动的设计和开发由应用决定。,操作系统层,

15、操作系统层包括嵌入式内核、嵌入式,TCP/IP,网络系统、嵌入式文件系统、嵌入式,GUI,系统和电源管理等部分。,嵌入式内核:内核是嵌入式操作系统的必备基础。提供任务管理、内存管理、通信、同步与互斥机制、中断管理、时间管理及任务扩展等功能,嵌入式操作系统体系结构,硬件,基本进程管理,虚存管理,I/O,和设备管理,进程间通信,文件系统,用户,用户模式,内核模式,中间件层,复杂的嵌入式系统中也开始采用中间件技术,主要包括嵌入式,CORBA,、嵌入式,Java,、嵌入式,DCOM,和面向应用领域的中间件软件。,为解决分布异构问题,提出中间件,(middleware),的概念。中间件是位于平台,(,硬

16、件和操作系统,),和应用之间的通用服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。,应用层,应用程序划分为若干应用任务,每个应用任务完成特定的工作,如,I/O,任务、计算任务、通信任务等,由操作系统按照抢占优先级调度策略调度各个任务的运行。,基于内核的嵌入式应用程序结构,嵌入式实时内核,内核运行机制,应用代码,调用内核接口,两级代码完成编译连接,生成可执行程序,在宿主机,PC,机上运行,嵌入式实时内核基础核心概念,多任务运行,任务的优先级,抢占式优先级调度,任务间通信机制,任务中的时间管理机制,嵌入式实时内核的多任务管理,多任务并发

17、运行,优先级最高的就绪任务运行,运行权按优先级抢占,每个任务的运行是死循环,任务的优先级,任务创建时确定优先级,优先级由优先数表示,优先数,063,抢占式优先级调度,内核采用的调度算法:抢占式优先级调度,每个任务有一个唯一优先数,优先数小优先级高,一旦优先级高任务就绪,立即进行任务调度,任务间通信机制,任务间通信机制,并发执行的任务需要使用互斥资源,并发执行的任务需要传递信息,完成合作。,解决由于任务优先级引发的问题,时间管理机制,任务中的时间管理机制,必须令任务自主睡眠若干时间,必须控制任务的执行频率,通过时间延迟控制任务自主睡眠,2,、嵌入式实时,C/OS-II,内核模块接口,核心杂项模块

18、任务管理模块,消息队列模块,信号量模块,消息邮箱模块,时间管理模块,互斥信号量模块,内存管理模块,事件标志模块,C/OS-II,内核源代码结构,SOFTWARE/C/OS-II/SOURCE,下:,#INCLUDE SOFTWAREUCOS-IISOURCEOS_CORE.C,#INCLUDE SOFTWAREUCOS-IISOURCEOS_FLAG.C,#INCLUDE SOFTWAREUCOS-IISOURCEOS_MBOX.C,#INCLUDE SOFTWAREUCOS-IISOURCEOS_MEM.C,#INCLUDE SOFTWAREUCOS-IISOURCEOS_MUTEX.C,

19、INCLUDE SOFTWAREUCOS-IISOURCEOS_Q.C,#INCLUDE SOFTWAREUCOS-IISOURCEOS_SEM.C,#INCLUDE SOFTWAREUCOS-IISOURCEOS_TASK.C,#INCLUDE SOFTWAREUCOS-IISOURCEOS_TIME.C,内核模块及核心技术,核心杂项模块:实现临界区管理,任务管理模块:实现任务管理,时间管理模块:实现时间及中断管理,消息队列模块:任务间传递多个消息,信号量模块:任务实现信号量及其申请释放,消息邮箱模块:任务间传递一个消息,互斥信号量模块:解决优先级反转,内存管理模块:内存块的分配回收,核心

20、杂项模块:临界区的实现,并发运行任务需要实现临界区。,临界区必须通过关中断开中断实现。关中断时长是实时系统的重要指标,越短越好。,微处理器具有开关中断的指令,,Ucos_II,用宏命令实现,宏调用,OS_ENTER_CRITICAL,()实现进入临界区,宏调用,OS_EXIT_CRITICAL,()实现退出临界区,应用示例,OS_ENTER_CRITICAL();,PC_VectSet(0 x08,OSTickISR,);,/*Install,uC/OS-IIs,clock tick ISR*/,PC_SetTickRate(OS_TICKS_PER_SEC,);,/*Reprogram ti

21、ck rate*/,OS_EXIT_CRITICAL();,os_core.c,中的系统函数,INT8U,OS_TCBInit,(INT8U,prio,OS_STK*,ptos,OS_STK*,pbos,INT16U id,INT32U,stk_size,void*,pext,INT16U opt),void,OS_TaskStat,(void*,pdata,),void,OS_TaskIdle,(void*,pdata,),void,OS_Sched,(void),static void,OS_InitTCBList,(void),static void,OS_InitTaskStat,(v

22、oid),static void,OS_InitTaskIdle,(void),static void,OS_InitRdyList,(void),static void,OS_InitMisc,(void),static void,OS_InitEventList,(void),void,OS_EventWaitListInit,(OS_EVENT*,pevent,),void,OS_EventTO,(OS_EVENT*,pevent,),void,OS_EventTaskWait,(OS_EVENT*,pevent,),INT8U,OS_EventTaskRdy,(OS_EVENT*,pe

23、vent,void*,msg,INT8U,msk,),void,OS_Dummy,(void),INT16U,OSVersion,(void),void,OSTimeTick,(void),void,OSStatInit,(void),void,OSStart,(void),void,OSSchedUnlock,(void),void,OSSchedLock,(void),void,OSIntExit,(void),void,OSIntEnter,(void),void,OSInit,(void),任务管理与调度,可将应用分解为多个并发任务。,每个任务是一个独立的执行线程,应用代码中以函数为单

24、位实现。可以与其它的并发任务竞争处理机时间。,每个任务都是可调度的,根据预定的抢占式优先级调度算法竞争系统的执行时间。,任务管理,可以通过创建、删除、睡眠、唤醒、改变优先级、发送或等待事件等操作对任务进行管理。,创建任务时,给任务提供一个名字、一个唯一的,ID,、一个优先级、一个任务控制块、一个堆栈和一个任务函数代码,这些内容构成任务对象。,任务管理,task.c,中的系统函数,OSTaskChangePrio,(),:改变优先级,OSTaskCreate,(),:任务创建,OSTaskCreateExt,(),:任务创建,OSTaskDel,(),:任务删除,OSTaskDelReq,(),

25、任务删除请求,OSTaskResume,(),:任务恢复,OSTaskStkChk,(),:任务堆栈检查,OSTaskSuspend,(),:任务挂起,OSTaskQuery,(),:任务查询,任务的调度算法,嵌入式操作系统多采用基于,静态优先级的可抢占式调度,。,任务优先级是在运行前在任务创建时静态分配完成,开始运行时,一旦有优先级更高的任务就绪,就马上进行调度。,函数源代码如下:参见源文件,core.c,void,OSStart,(void),INT8U y;,INT8U x;,if(,OSRunning,=FALSE),y=,OSUnMapTblOSRdyGrp,;,/*Find hi

26、ghest prioritys task priority number*/,x=,OSUnMapTblOSRdyTbly,;,OSPrioHighRdy,=(INT8U)(y,OSTCBStkPtr,=SP;,清中断源;,重新开中断;,执行用户代码做中断服务,;,调用,OSIntExit,(),;,恢复所有,CPU,寄存器;,执行中断返回指令;,时间管理模块,时钟节拍是特定的周期性中断。中断时间间隔取决于不同的应用。,C/OS-II,需要提供周期性信号源,用于实现时间延迟和超时确认(时间为节拍的整数倍)。,时间管理功能,嵌入式系统中,系统任务和用户任务经常要随着时间进行调度和执行。,任务的执

27、行时间、任务的挂起时间、时钟节拍等等与时间相关联的数据是控制实时系统的关键参数,时钟管理,time.c,中的系统函数,OSTimeDly,(),OSTimeDlyHMSM,(),OSTimeDlyResume,(),OSTimeGet,(),OSTimeSet,(),OSTimeTick,(),任务间同步、互斥与通信及其实现,嵌入式系统中使用任务间原语实现任务的同步和通信,称为事件机制,一般包括:,信号量,消息邮箱,消息队列,互斥信号量,事件标志组,事件,在嵌入式实时内核中,事件是指一种表明预先定义的系统事件已经发生的机制。一个事件就是一个标志,不具备其它信息。,用于实现任务间的互斥和同步关系

28、控制。,事件机制用于任务与任务之间、任务与,ISR,之间的同步。用于支持后续具体同步机制。,事件控制块,ECB,事件本身的定义,用于信号量的计数器,用于指向邮箱的指针,指向消息队列的指针数组,等待该事件的所有任务的列表,typedef,struct,void *,OSEventPtr,;/*,指向消息或者消息队列的指针*,/,INT8U,OSEventTblOS_EVENT_TBL_SIZE,;/*,等待任务表 *,/,INT16U,OSEventCnt,;/*,计数器,(,当事件是信号量时,)*/,INT8U,OSEventType,;/*,时间类型 *,/,INT8U,OSEventGrp

29、/*,等待任务所在的组 *,/,OS_EVENT;,事件的功能函数,初始化一个事件控制块,,OSEventWaitListInit,(),使一个任务进入就绪态,,OSEventTaskRdy,(),使一个任务进入等待某事件发生状态,OSEventTaskWait,(),由于等待超时而将任务置为就绪态,OSEventTO,(),信号量,在实时操作系统中,根据信号量的值,内核可以管理等待使用信号量的任务。,一般来说,操作系统对信号量提供初始化、等待信号、发送信号等操作。就是创建信号量、获取(申请)信号量、释放信号量、删除信号量、获取有关信号量的各种信息等操作。,C/OS-II,中的信号量由两部

30、分组成:,一个是信号量的计数值,它是一个,16,位的无符号整数(,0,到,65,535,之间);,另一个是由等待该信号量的任务组成的等待任务表。用户要在,OS_CFG.H,中将,OS_SEM_EN,开关量常数置成,1,,,信号量如何创建,调用,OSSemCreate,(),函数,对信号量初始计数值赋值。该初始值为,0,到,65,535,之间的一个数。,信号量用来表示一个或者多个事件的发生,初始值应设为,0,。,信号量用于对互斥资源的访问,初始值应设为,1,。,信号量用来表示允许任务访问,n,个相同的互斥资源,初始值应该是,n,。,C/OS-II,提供了,5,个对信号量操作的函数。,OSSemC

31、reate,(),OSSemPend,()/*,等待一个信号量,*/,OSSemPost,()/*,发送一个信号量,*/,OSSemAccept,()/*,无等待请求一个信号量,*/,OSSemQuery,(),/*,查询信号量当前状态,*/,OSSemPost,(),函数可由任务或中断服务子程序代码调用,,OSSemPend,(),和,OSSemQuery,(),函数只能由任务代码调用。,信号量管理,os_sem.c,中的系统函数,OSSemAccept,(),OSSemCreate,(),OSSemPend,(),OSSemPost,(),OSSemQuery,(),消息邮箱,邮箱是,C/

32、OS-II,中另一种通讯机制,它可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。该指针指向一个包含了特定“消息”的数据结构。,C/OS-II,提供了,5,种对邮箱的操作函数:,OSMboxCreate,(),,,OSMboxPend,(),,,OSMboxPost,(),,,OSMboxAccept,(),,,OSMboxQuery,(),函数,操作函数及其参数,OS_EVENT*,OSMboxCreate,(void*,msg,),void*,OSMboxPend,(OS_EVENT*,pevent,INT16U timeout,INT8U*err),INT8U,OSMbo

33、xPost,(OS_EVENT*,pevent,void*,msg,),void*,OSMboxAccept,(OS_EVENT*,pevent,),INT8U,OSMboxQuery,(OS_EVENT*,pevent,OS_MBOX_DATA*,pdata,),消息邮箱,os_mbox.c,中的系统函数,OSMboxAccept,(),OSMboxCreate,(),OSMboxPend,(),OSMboxPost,(),OSMboxQuery,(),消息队列,消息队列是,C/OS-II,中另一种通讯机制,它可以使一个任务或者中断服务子程序向另一个任务发送多个指针变量。,在使用一个消息队列

34、之前,必须先建立该消息队列。这可以通过调用,OSQCreate,(),函数,并定义消息队列中的单元数(消息数)来完成。,C/OS-II,消息队列操作函数,OSQCreate,()/*,建立一个消息队列,*/,OSQPend,()/*,等待一个消息队列中的消息,*/,OSQPost,()/*,向消息队列发送一个消息(,FIFO,),*/,OSQPostFront,(),/*,向消息队列发送一个消息(后进先出,LIFO,),*/,OSQAccept,()/*,无等待地从一个消息队列中取得消息,*/,OSQFlush,()/*,清空一个消息队列,*/,OSQQuery,(),/*,查询一个消息队列的

35、状态,*/,消息队列,os_q.c,中的系统函数,OSQAccept,(),OSQCreate,(),OSQFlush,(),OSQPend()OSQPost,(),OSQPostFront,(),OSQQuery,(),内存管理和,I/O,管理,嵌入式操作系统的内存管理比较简单,通常不采用虚拟存储管理,而采用静态内存分配和动态内存分配,,固定大小内存分配和可变大小内存分配相结合的管理方式。,C/OS-II,按分区来管理,每个分区中包含有整数个大小相同的内存块。,C/OS-II,设计分配和释放内存块函数可以分配和释放固定大小的内存块。,分配和释放内存块函数的执行时间也是固定的,这样确保实时内核

36、的系统性能。,内存控制块,为了便于内存的管理,在,C/OS-II,中使用内存控制块(,memory control blocks,)的数据结构来跟踪每一个内存分区,系统中的每个内存分区都有它自己的内存控制块。,typedef,struct,void *,OSMemAddr,;,void *,OSMemFreeList,;,INT32U,OSMemBlkSize,;,INT32U,OSMemNBlks,;,INT32U,OSMemNFree,;,OS_MEM;,内存的功能,使用一个内存分区之前,必须先建立该内存分区。调用,OSMemCreate,(),函数完成。,应用程序可以调用,OSMemGe

37、t,(),函数从已创建的内存分区中申请一个内存块。,当用户应用程序不再使用一个内存块时,必须及时释放,并放回对应内存分区。调用,OSMemPut,(),函数完成。,在,C/OS-II,中,可以使用,OSMemQuery,(),函数来查询一个特定内存分区的有关消息:,特定内存分区中内存块的大小、,可用内存块数,正在使用的内存块数等信息。,所有这些信息都放在一个叫,OS_MEM_DATA,的数据结构中,内存块管理,mem.c,中的系统函数,OSMemCreate,(),OSMemGet,(),OSMemPut,(),OSMemQuery,(),void,OS_MemInit,(void),I/O,

38、管理,所有的嵌入式系统都包括一些负责实现输入输出操作的模块。这些,I/O,操作运行于不同类型的,I/O,设备上,系统通过这些操作来控制,I/O,设备的运行。,通常,设计一个嵌入式系统的目的就是专门用来控制某些设备,并适应该设备的特殊需求。,Os_flag.c,中的系统函数,OS_FLAGS,OSFlagAccept,(OS_FLAG_GRP*,pgrp,OS_FLAGS flags,INT8U,wait_type,INT8U*err),OS_FLAG_GRP *OSFlagCreate(OS_FLAGS flags,INT8U*err),OS_FLAG_GRP *,OSFlagDel,(OS_

39、FLAG_GRP*,pgrp,INT8U opt,INT8U*err),OS_FLAGS,OSFlagPend,(OS_FLAG_GRP*,pgrp,OS_FLAGS flags,INT8U,wait_type,INT16U timeout,INT8U*err),OS_FLAGS OSFlagPost(OS_FLAG_GRP*pgrp,OS_FLAGS flags,INT8U opt,INT8U*err),c/OS-II,的模块组成介绍,#,INCLUDE SOFTWAREUCOS-IISOURCEOS_CORE.C“(*),#INCLUDE SOFTWAREUCOS-IISOURCEOS_F

40、LAG.C“(*),#INCLUDE SOFTWAREUCOS-IISOURCEOS_MBOX.C“(*),#INCLUDE SOFTWAREUCOS-IISOURCEOS_MEM.C“(*),#INCLUDE SOFTWAREUCOS-IISOURCEOS_MUTEX.C“(*),#INCLUDE SOFTWAREUCOS-IISOURCEOS_Q.C“(*),#INCLUDE SOFTWAREUCOS-IISOURCEOS_SEM.C“(*),#INCLUDE SOFTWAREUCOS-IISOURCEOS_TASK.C“(*),#INCLUDE SOFTWAREUCOS-IISOURCE

41、OS_TIME.C“(*),内核模块的源代码框架分析,目录,Source,下内容,文件的种类和数量,文件的功能,文件包含的调用函数,函数的功能及其调用,函数的实现技术,达到源代码级了解内核的功能的目的!,3,、嵌入式系统软件的开发,交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括文本编辑器、交叉编译器、交叉调试器、仿真器、下载器等工具。,交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。图,F2-1,显示宿主机(开发平台)和目标机(运行平台)间的逻辑关系。,宿主机(,Host,)是用于开发嵌入式系统的计算机。一般为,PC,机(或者工作站),具

42、备丰富的软硬件资源,为嵌入式软件的开发提供全过程支持。,目标机(,Target,)即所开发的嵌入式系统,是嵌入式软件的运行环境,其硬件软件是为特定应用定制的。,目标机硬件,目标机应用系统,应用软件,应用中间件,目标机,OS,宿主机硬件,宿主机,OS,调,试,代,理,运,行,库,宿主机开发环境,编辑,编译,连接,调试,开发平台,目标机硬件,目标机应用系统,应用软件,应用中间件,目标机,操作系统,宿主机硬件,宿主机,操作系统,调,试,代,理,运,行,库,宿主机开发环境,编辑,编译,连接,调试,Host,下载,Target,嵌入式软件生成分为三个过程:,源代码程序的编写,编译成各个目标模块,链接成可

43、供下载调试或固化的目标程序,4,、仿真开发方式,采用仿真开发方式的理由在于,嵌入式应用的开发经常会遭遇缺少目标机环境、缺乏目标机芯片等资源的问题,,一种软件仿真器,在宿主机上创建一个虚拟的目标机环境,再将应用系统下载到这个虚拟目标机上运行调试。,仿真开发环境,Borland C/C+V4.5,C/OS-II,的内核代码及其应用实例均用,Borland C/C+,编译器(,V3.1,)编译过。,这些代码可在,Intel Pentium II PC,(,300MHz,)上运行和测试。,c/OS-II,的安装文件和目录,目标硬盘的目录,software,to(DOS,下的实用工具:改变目录),blo

44、ck(PC,机中的功能函数),c/OS-II,所有源代码,文档,实例14,与处理器无关的源代码,Ix86L:,与处理器相关的源代码,面向86,X86,处理器,使用,BC,编译器,Ix86L-FP:,带浮点协处理单元的86,X86,处理器,block(PC,机中的功能函数),PC.c:,包括服务有:字符显示、运行时间测量、其他服务,PC.h:,该文件集成了,PC,的许多功能函数,为测试代码调用,使得用户容易将代码移植到其他编译器。在,WinX,操作系统中使用的是,DOS,仿真窗口(虚拟,X86,环境),应用程序实例1,EX1_X86LBC45,SOURCE:,INCLUDE.H,CFG.H,TE

45、ST.C,TEST:,MAKETEST.BAT,(编译链接生成可执行代码的批文件),TEST.MAK,TEST.EXE,TEST.MAP,SOURCE,的作用,SOURCE:,INCLUDE.H,CFG.H,TEST.C,TEST,的作用,TEST:,MAKETEST.BAT,(编译链接生成可执行代码的批文件),TEST.MAK,TEST.EXE,TEST.MAP,MAKETEST.BAT,文件的功能,在当前的父目录,(BC45),下创建三个子目录:,lst,obj,Work,将当前目录转到,work,下,拷贝,.test,test.mak,拷贝到当前目录下,执行,test.mak,将当前目录

46、转到,.test,下。,构建一个应用程序的环境设置,SOFTWAREuCOS-IIEX1_x86L,/bc45/lst,:编译需要的列表目录,/bc45/obj,:实例程序编译生成的目标文件,/bc45/source,:实例源代码、实例源代码头文件和本实例的配置头文件,链接命令文件定义生成可执行程序需要使用的目标文件和函数库。,/bc45/test,:编译本实例程序的,make,文件(,TEST.MAK,)和批处理文件,供用户生成,DOS,环境下的可执行文件,实例程序的可执行代码(,TEST.EXE,),链接生成的,MAP,文件,/bc45/work,:修改源代码重新编译的工作目录,按照系统安

47、装的目录,调整各个编译运行环境文件的参数,/bc45/source/Include.h,文件中的路径,/bc45/test,中:,Maketest.txt,文件的路径,Test.make,文件的路径,提示:!将编译器和内核源码文件夹拷贝到,C,盘下无需修改目录设置!,编译生成实例,1,的可执行代码,运行,maketest,批处理文件生成可执行文件,打开,DOS,界面;输入,Dos,命令:,C:CD D,:,SOFTWAREUCDOS-IIEX1-X86LBC45TEST,c:,maketest,直接双击,maketest.bat,文件,运行实例可执行文件,test.exe,:,test,编译生

48、成实例,1,的可执行代码,-2,如果编译出错,无法生成可执行程序,编译环境有误,重新拷贝,应用程序源代码有误,可在,DOS,下运行:,C:CD D,:,SOFTWAREUCDOS-IIEX1-X86LBC45TEST,c:,maketest,|more,完成单步编译,查看编译错误!,实例,1,程序设计基本方法,功能:,c/OS-II,具有多任务处理能力,设计,10,个任务分别在屏幕上固定区域的随机位置显示,09,,每个任务只显示同一个数字。,添加,2,个内部任务:空闲任务,计算,CPU,利用率的统计任务,在函数,main(),中建立,TaskStart,(),任务;它的功能是建立其它任务并且在

49、屏幕上显示如下统计信息,并且检查是否按下,ESC,键,以决定是否返回到,DOS,。,实例,1,的主函数设计:,main(),void,main(void,),PC_DispClrScr(DISP_FGND_WHITE,+DISP_BGND_BLACK);,OSInit,();,PC_DOSSaveReturn,();,PC_VectSet(uCOS,OSCtxSw,);,RandomSem,=OSSemCreate(1);,OSTaskCreate(TaskStart,(void*)0,(void*)&TaskStartStkTASK_STK_SIZE-1,0);,OSStart,();,主函

50、数流程说明,定义白色字符和黑色背景色。,它会建立两个任务:空闲任务和统计任务。,保存当前,DOS,环境调用,PC_DOSSaveReturn,(),。,得到中断向量进行任务切换,通过调用,INT,指令引发中断实现任务切换,通过向量地址调用指定的处理函数。,建立一个信号量,保护使用,DOS,下,C,语言库函数,random,()。,开始多任务运行前必须建立第一个任务,TaskStart,(),创建任务需要,4,个参数:任务运行代码指针、任务初始化数据指针(空指针)、任务堆栈栈顶指针、建立任务的优先级,为,0,。,调用,OSStart,(),,将控制权交给,C/OS-II,内核,开始运行多任务。此

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服