




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章第一章 课程设置课程设置目标与要求目标与要求n独立实践课开设的意义独立实践课开设的意义n独立实践课的内容独立实践课的内容n课程安排及成绩评估课程安排及成绩评估本实践课程开设的意义本实践课程开设的意义操作系统是计算机系统中承上启下的系统软操作系统是计算机系统中承上启下的系统软件,它的工作流程和设计方法最有代表性和件,它的工作流程和设计方法最有代表性和实用价值。实用价值。要真正理解操作系统基本原理,切实可行的要真正理解操作系统基本原理,切实可行的方法是针对各类操作系统实例系统进行各种方法是针对各类操作系统实例系统进行各种类型的实践,利用操作系统内核进行应用程类型的实践,利用操作系统内核进行应
2、用程序设计。序设计。 培养实用型、创新型人才,提升学生的软件培养实用型、创新型人才,提升学生的软件研发能力。开拓学生的专业视野和实际工作研发能力。开拓学生的专业视野和实际工作能力。能力。体验系统级应用程序的设计实现体验系统级应用程序的设计实现n结合实际开发需求,掌握开发环境、开发技术、结合实际开发需求,掌握开发环境、开发技术、项目开发实施方面的基本过程项目开发实施方面的基本过程n以课题组方式进行方案论证、设计、开发环境以课题组方式进行方案论证、设计、开发环境构建、分工、单元开发、调试,集成调试运行,构建、分工、单元开发、调试,集成调试运行,以及文档的编写,组长是项目小组核心。以及文档的编写,组
3、长是项目小组核心。n该过程能使大家明确软件开发的各个环节,结该过程能使大家明确软件开发的各个环节,结合自身条件对每个环节进行自己的设计实现。合自身条件对每个环节进行自己的设计实现。操作系统内核与应用实践实施方案操作系统内核与应用实践实施方案n嵌入式实时操作系统嵌入式实时操作系统c/os-是实时操作系统的成是实时操作系统的成功范例。功范例。n开放源代码资源架设一个方便的开发平台,提供一个开放源代码资源架设一个方便的开发平台,提供一个很好实用的开发工具环境,使学生能够专注于实时应很好实用的开发工具环境,使学生能够专注于实时应用软件技术,不必为系统开发环境等问题耗费精力。用软件技术,不必为系统开发环
4、境等问题耗费精力。而且有大量的移植范例下载参考。而且有大量的移植范例下载参考。nc/os-的商业价值也很高,可以支持嵌入式商业的商业价值也很高,可以支持嵌入式商业应用程序的开发需求。应用程序的开发需求。操作系统实践课达到的目标操作系统实践课达到的目标理解把握实现操作系统的层次结构和工作流程理解把握实现操作系统的层次结构和工作流程设计应用系统的工作流程设计应用系统的工作流程学会使用需要的开发工具环境学会使用需要的开发工具环境选择合适的软件工具进行编码实现选择合适的软件工具进行编码实现进行单元调试和集成调试进行单元调试和集成调试课题组为单位展开工作课题组为单位展开工作编写开发文档及其课程设计报告编
5、写开发文档及其课程设计报告对软件开发全过程的技术运用进行考量对软件开发全过程的技术运用进行考量独立实践课培养检验学生能力独立实践课培养检验学生能力n培养学生的研究能力、协调培养学生的研究能力、协调协作能力、软件系统的分析协作能力、软件系统的分析设计能力、编码能力,解决设计能力、编码能力,解决问题能力、表述能力等。问题能力、表述能力等。 课程设计的实施课程设计的实施n自由自由2 2人组成课题组人组成课题组n选定一名组长,负责课题小组全面工作选定一名组长,负责课题小组全面工作n根据小组各成员的基础和意愿从应用题根据小组各成员的基础和意愿从应用题目中选择进行开发目中选择进行开发独立实践课的核心内容独
6、立实践课的核心内容n选择实时操作系统选择实时操作系统cos-iicos-ii进行分析和应用程序的仿进行分析和应用程序的仿真开发。真开发。n基于基于dosdos和和windowswindows操作系统平台,选用嵌入式实时操操作系统平台,选用嵌入式实时操作系统作系统cos-iicos-ii的源代码(非常优秀有价值的的源代码(非常优秀有价值的c c源代码)源代码)进行分析,理解工作原理和工作流程,参考教材选择进行分析,理解工作原理和工作流程,参考教材选择设计自己的应用程序的功能,并编码实现,完成系统设计自己的应用程序的功能,并编码实现,完成系统调试运行。调试运行。n可建立可建立2 2人的课题组进行分
7、工,对每人负责的模块分别人的课题组进行分工,对每人负责的模块分别进行应用程序设计或内核分析程序运行监测。进行应用程序设计或内核分析程序运行监测。n鼓励选择有个人创新内容的应用项目完成设计与实现鼓励选择有个人创新内容的应用项目完成设计与实现。方案技术内容方案技术内容n了解实时操作系统基本概念、工作原理,明确了解实时操作系统基本概念、工作原理,明确c/os-内核应用的结构、组成方法,理解一个内核应用的结构、组成方法,理解一个实时操作系统及其应用的基本架构。实时操作系统及其应用的基本架构。n掌握掌握c/os-内核的运行流程及应用代码运行流内核的运行流程及应用代码运行流程,能够基于程,能够基于c/os
8、-内核,利用系统函数接口,内核,利用系统函数接口,构建用户自己的应用程序代码,实现一个嵌入实时构建用户自己的应用程序代码,实现一个嵌入实时应用程序的设计、编码等开发工作。应用程序的设计、编码等开发工作。n利用提供编译环境,编译、调试、运行应用程序。利用提供编译环境,编译、调试、运行应用程序。 设计实现技术设计实现技术n授课讲解内核与应用程序实现技术授课讲解内核与应用程序实现技术n参考参考ucos-iiucos-ii系统代码以及编译生成技术系统代码以及编译生成技术(makemake文件)文件)n课题组选定所重点使用的内核模块,理解课题组选定所重点使用的内核模块,理解源码,确立应用方案源码,确立应
9、用方案n并用并用c c语言编码实现语言编码实现基于基于cos-iicos-ii内核的应用项目推荐内核的应用项目推荐n任务管理实验任务管理实验n信号量管理实验信号量管理实验n消息队列实验消息队列实验n时钟中断实验时钟中断实验n任务执行时间测定任务执行时间测定n生产者消费者算法实验生产者消费者算法实验n哲学家就餐实验哲学家就餐实验n鼓励自行选择感兴趣的应用程序鼓励自行选择感兴趣的应用程序课程安排及成绩评估课程安排及成绩评估一、一、授课授课8 8学时(学时(7 7、8 8周,周,4 4学时学时/ /周)周)达到目标:达到目标:1)1)明确独立实践课内容及要求。明确独立实践课内容及要求。2)2)理解内
10、核编程技术及应用系统功能理解内核编程技术及应用系统功能及各个模块功能及接口,为应用系及各个模块功能及接口,为应用系统分析设计打基础。统分析设计打基础。确立课题小组,提交任务书确立课题小组,提交任务书n上机实践之前,确定以下内容:上机实践之前,确定以下内容:n按选择的项目自由组成一个课题按选择的项目自由组成一个课题组,讨论并确定开发功能、开发组,讨论并确定开发功能、开发环境及软件工具、分工交流方式环境及软件工具、分工交流方式等。等。课程设计任务书建议内容课程设计任务书建议内容n开发项目名称(选择题目)开发项目名称(选择题目)n主要系统功能以及目标(运行功能描述)主要系统功能以及目标(运行功能描述
11、)n设计要求(内核功能及接口、应用代码结构)设计要求(内核功能及接口、应用代码结构)n成果形式(软件验收、报告文档)成果形式(软件验收、报告文档)n基本要求(阶段检查、进度安排、验收要求)基本要求(阶段检查、进度安排、验收要求)n主要参考文献(课件、源代码、实例程序、教材)主要参考文献(课件、源代码、实例程序、教材)n工作量(系统复杂度、创新等)工作量(系统复杂度、创新等)上机时间安排上机时间安排上机共上机共40学时学时安排地点:计算机学院机房(安排地点:计算机学院机房(307、308)安排时间:第安排时间:第9周周第第13周,每周周,每周8学时,学时,分两次上机。第八周确定具体时间。分两次上
12、机。第八周确定具体时间。安排批次:安排批次:计科计科0901-3(范艳芳)(范艳芳)计科计科0904-6(牛欣源)(牛欣源)上机实施内容与步骤上机实施内容与步骤v理解掌握内核接口及应用代码结构理解掌握内核接口及应用代码结构v以课题组为单位提出应用系统需求和设计以课题组为单位提出应用系统需求和设计建议,完成系统分析设计建议,完成系统分析设计v每人独立进行模块详细设计及编码调试每人独立进行模块详细设计及编码调试v完成课程设计报告的编写完成课程设计报告的编写v由教师对每组进行阶段检查和项目验收由教师对每组进行阶段检查和项目验收独立实践课成绩评估独立实践课成绩评估n课程设计任务书课程设计任务书n系统分
13、析设计报告系统分析设计报告n模块详细设计报告模块详细设计报告 n单元测试系统调试报告、用户手册单元测试系统调试报告、用户手册 20% n阶段检查(内核、应用代码、测试)阶段检查(内核、应用代码、测试) 30%n验收检查(运行与界面所有数据)验收检查(运行与界面所有数据)10%n开卷期末考试开卷期末考试40%阶段检查及内容阶段检查及内容l内核模块功能、应用接口内核模块功能、应用接口l应用代码的算法与数据结构应用代码的算法与数据结构l单元调试、系统测试单元调试、系统测试l工作量工作量l创新设计与实现、新编程技术、新设计方法创新设计与实现、新编程技术、新设计方法系统验收检查及内容系统验收检查及内容n
14、系统运行平稳系统运行平稳n界面友好界面友好n系统功能设计完备系统功能设计完备n系统调试完备系统调试完备文档成绩评估文档成绩评估n课程设计任务书课程设计任务书n系统分析设计报告系统分析设计报告n模块详细设计报告模块详细设计报告 n单元测试系统调试报告、用户手册单元测试系统调试报告、用户手册 20% 评价标准:评价标准:根据文档质量(可读性,可根据文档质量(可读性,可操作性,创新性,完整性,工作量)评操作性,创新性,完整性,工作量)评估文档成绩。估文档成绩。课程设计报告课程设计报告的编写的编写 n参见参见课程设计报告撰写规范课程设计报告撰写规范 n报告每组打印一份上交报告每组打印一份上交课程设计报
15、告封面课程设计报告封面课程名称课程名称 题目题目指导教师指导教师设计起止日期设计起止日期系别系别专业专业学生姓名学生姓名班级班级/学号学号成绩成绩课程设计任务书内容课程设计任务书内容n题目:n主要系统功能以及目标:n设计要求n成果形式n基本要求n主要参考文献n工作量课程设计报告撰写规范课程设计报告撰写规范1、任务书、任务书2、摘要:功能及实现技术的简练陈述,不超过、摘要:功能及实现技术的简练陈述,不超过400字,关键词为字,关键词为4个左右个左右3、目录、目录4、正文。正文。正文应按目录编排依次撰写,要求论正文应按目录编排依次撰写,要求论述清楚,文字简练通顺,插图简明,书写整述清楚,文字简练通
16、顺,插图简明,书写整洁。洁。 5、参考文献、参考文献(资料资料) 正文正文 核心文档内容与格式核心文档内容与格式一、系统分析与设计功能(小组编写)一、系统分析与设计功能(小组编写)1、从所使用内核功能和实现应用程序功能两个方面说明、从所使用内核功能和实现应用程序功能两个方面说明2、模块结构图(按照内核模块、应用模块划分)、模块结构图(按照内核模块、应用模块划分)3、系统实现方案编程工具说明、系统实现方案编程工具说明 4、系统运行界面及功能说明、系统运行界面及功能说明 三、系统模块设计与调试文档(设计实现者编写)三、系统模块设计与调试文档(设计实现者编写) 1、模块功能、模块功能 2、模块接口(
17、被调用、调用关系;调用参数和返回结果)、模块接口(被调用、调用关系;调用参数和返回结果) 3、模块主要处理步骤及其编码实现方法、模块主要处理步骤及其编码实现方法(主要数据结构设计实现、主要算法设计实现)(主要数据结构设计实现、主要算法设计实现) 4、模块调试:调试数据、调试结果、问题分析、模块调试:调试数据、调试结果、问题分析 四、系统集成调试(小组编写)四、系统集成调试(小组编写) 五、用户使用说明五、用户使用说明n课程邮箱:课程邮箱:n邮箱密码:邮箱密码:welcomen答疑时间:答疑时间:7、8周周一下午周周一下午1:30-3:30第二章第二章 c/os-ii系统分析系统分析n通过分析通
18、过分析c/os-ii内核源代码程序及其数据结构的内核源代码程序及其数据结构的设计,理解掌握一个成熟实时操作系统的基本架构设计,理解掌握一个成熟实时操作系统的基本架构n与本学期操作系统课程的通用操作系统原理及其模与本学期操作系统课程的通用操作系统原理及其模块设计作比较,从中可发现其异同。块设计作比较,从中可发现其异同。n可根据可根据c/os-ii内核的运行流程,掌握操作系统的内核的运行流程,掌握操作系统的动态工作流程,使得在学习操作系统原理中掌握的动态工作流程,使得在学习操作系统原理中掌握的基本概念和模块功能得到一个感性的认识,使各个基本概念和模块功能得到一个感性的认识,使各个模块的运行机制及其
19、动态逻辑关系得到真实的展现。模块的运行机制及其动态逻辑关系得到真实的展现。嵌入式系统的应用程序嵌入式系统的应用程序n嵌入式系统的应用程序是与操作系统内嵌入式系统的应用程序是与操作系统内核集成在一起运行,实现对系统监控对核集成在一起运行,实现对系统监控对象的控制和处理,可基于和利用象的控制和处理,可基于和利用c/os-ii内核,构建用户自己的应用程序代码,内核,构建用户自己的应用程序代码,实现对特定任务的管理。实现对特定任务的管理。具体实施步骤具体实施步骤 n参考参考c/os-ii系统的内核与实例应用程序的系统的内核与实例应用程序的设计资料和源代码,以及实例程序中实现编译设计资料和源代码,以及实
20、例程序中实现编译链接的链接的make文件的设计,课题组选定所修改文件的设计,课题组选定所修改的模块,确立应用程序的功能设计方案,并用的模块,确立应用程序的功能设计方案,并用(borland c )编码实现。)编码实现。n在这个项目中,利用普通的在这个项目中,利用普通的pc机及其通用的机及其通用的操作系统环境,就可以自己动手搭建嵌入式系操作系统环境,就可以自己动手搭建嵌入式系统应用程序的开发平台,具有实际开发操作系统应用程序的开发平台,具有实际开发操作系统软件的实用价值。统软件的实用价值。授课基本内容授课基本内容1.1.嵌入式软件系统。嵌入式软件系统。主要介绍嵌入式软件分类、主要介绍嵌入式软件分
21、类、特点、体系结构、运行流程、操作系统及开特点、体系结构、运行流程、操作系统及开发工具。发工具。2.2.嵌入式实时嵌入式实时c/os-iic/os-ii内核及模块接口。内核及模块接口。具有具有嵌入式操作系统的组成原理和构成特点,主嵌入式操作系统的组成原理和构成特点,主要包括对多任务、任务的调度及任务间的通要包括对多任务、任务的调度及任务间的通信机制,内存管理,时间管理等重要模块。信机制,内存管理,时间管理等重要模块。3.3.嵌入式系统软件的开发。嵌入式系统软件的开发。主要讨论嵌入式系主要讨论嵌入式系统开发工具的选择、嵌入式软件开发模式的统开发工具的选择、嵌入式软件开发模式的实施、实时软件分析设
22、计方法的运用。实施、实时软件分析设计方法的运用。 4.4.仿真开发环境仿真开发环境borland c/c+ v4.5 borland c/c+ v4.5 及其源代及其源代码资源。码资源。介绍介绍c/os-iic/os-ii的内核及应用程序的的内核及应用程序的编译连接运行环境,讲解应用实例,为编写编译连接运行环境,讲解应用实例,为编写实例程序提供指导。实例程序提供指导。5.5.应用方案设计。应用方案设计。为学生提供应用程序的设计为学生提供应用程序的设计方案,可从中选择,运用方案,可从中选择,运用c/os-iic/os-ii提供的环提供的环境开发生成自己的实时应用程序。境开发生成自己的实时应用程序
23、。1、嵌入式软件系统、嵌入式软件系统 n软件与嵌入式软件软件与嵌入式软件 n嵌入式软件体系结构嵌入式软件体系结构 软件与嵌入式软件软件与嵌入式软件n嵌入式软件分为系统软件、支撑软件和应用软件。嵌入式软件分为系统软件、支撑软件和应用软件。n系统软件:控制、管理计算机系统资源。如:嵌入系统软件:控制、管理计算机系统资源。如:嵌入式操作系统、嵌入式中间件(式操作系统、嵌入式中间件(corbacorba、javajava)等)等n支撑软件:辅助软件开发的工具。如:系统分析设支撑软件:辅助软件开发的工具。如:系统分析设计工具、仿真开发工具、交叉开发工具、测试工具、计工具、仿真开发工具、交叉开发工具、测试
24、工具、配置管理工具、维护工具等。配置管理工具、维护工具等。n应用软件:面向应用领域。如:手机软件、路由器应用软件:面向应用领域。如:手机软件、路由器软件、交换机软件、飞控软件等。软件、交换机软件、飞控软件等。n运行平台来分,嵌入式软件可以分为运行平台来分,嵌入式软件可以分为n运行在开发平台上的软件:设计、开发、测运行在开发平台上的软件:设计、开发、测试工具等。试工具等。n运行在嵌入式系统上的软件:嵌入式操作系运行在嵌入式系统上的软件:嵌入式操作系统、应用程序、驱动程序及部分开发工具。统、应用程序、驱动程序及部分开发工具。 嵌入式软件体系结构嵌入式软件体系结构n驱动层驱动层n操作系统层操作系统层
25、n中间件层中间件层n应用层应用层 驱动层驱动层n驱动层是直接与硬件的交互层,对操作系统和驱动层是直接与硬件的交互层,对操作系统和应用提供驱动支持。该层主要包括三种类型的应用提供驱动支持。该层主要包括三种类型的程序:程序:n板级初始化程序:嵌入式系统上电后初始化系统的板级初始化程序:嵌入式系统上电后初始化系统的硬件环境,包括嵌入式微处理器、存储器、中断控硬件环境,包括嵌入式微处理器、存储器、中断控制器、制器、dma、定时器等的初始化。、定时器等的初始化。 n与系统软件相关的驱动:操作系统和中间件等系统与系统软件相关的驱动:操作系统和中间件等系统软件所需的驱动程序。软件所需的驱动程序。n与应用软件
26、相关的驱动:应用软件相关的驱动不一与应用软件相关的驱动:应用软件相关的驱动不一定需要与操作系统连接,这些驱动的设计和开发由定需要与操作系统连接,这些驱动的设计和开发由应用决定。应用决定。操作系统层操作系统层n操作系统层包括嵌入式内核、嵌入式操作系统层包括嵌入式内核、嵌入式tcp/ip网络系统、嵌入式文件系统、嵌入式网络系统、嵌入式文件系统、嵌入式gui系系统和电源管理等部分。统和电源管理等部分。n嵌入式内核:内核是嵌入式操作系统的必备基础。嵌入式内核:内核是嵌入式操作系统的必备基础。提供任务管理、内存管理、通信、同步与互斥机提供任务管理、内存管理、通信、同步与互斥机制、中断管理、时间管理及任务
27、扩展等功能制、中断管理、时间管理及任务扩展等功能 嵌入式操作系统体系结构嵌入式操作系统体系结构 硬件硬件基本进程管理基本进程管理虚存管理虚存管理i/oi/o和设备管理和设备管理进程间通信进程间通信文件系统文件系统用户用户用户模式用户模式内核模式内核模式中间件层中间件层n复杂的嵌入式系统中也开始采用中间件技术,主要包括复杂的嵌入式系统中也开始采用中间件技术,主要包括嵌入式嵌入式corba、嵌入式、嵌入式java、嵌入式、嵌入式dcom和面向应和面向应用领域的中间件软件。用领域的中间件软件。n为解决分布异构问题,提出中间件为解决分布异构问题,提出中间件(middleware)的概的概念。中间件是位
28、于平台念。中间件是位于平台(硬件和操作系统硬件和操作系统)和应用之间的和应用之间的通用服务,这些服务具有标准的程序接口和协议。针对通用服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。议规范的多种实现。 应用层应用层n应用程序划分为若干应用任务应用程序划分为若干应用任务n每个应用任务完成特定的工作,如每个应用任务完成特定的工作,如i/o任务、计算任务、通信任务等任务、计算任务、通信任务等n由操作系统按照抢占优先级调度策略调由操作系统按照抢占优先级调度策略调度各个任务的运行。度各个任务的运
29、行。基于内核的嵌入式应用程序结构基于内核的嵌入式应用程序结构n嵌入式实时内核嵌入式实时内核内核运行机制内核运行机制n应用代码应用代码调用内核接口调用内核接口n两级代码完成编译连接两级代码完成编译连接n生成可执行程序生成可执行程序n在宿主机在宿主机pc机上运行机上运行嵌入式实时内核基础核心概念嵌入式实时内核基础核心概念n多任务运行多任务运行n任务的优先级任务的优先级n抢占式优先级调度抢占式优先级调度n任务间通信机制任务间通信机制n任务中的时间管理机制任务中的时间管理机制嵌入式实时内核的多任务管理嵌入式实时内核的多任务管理n多任务并发运行多任务并发运行n优先级最高的就绪任务运行优先级最高的就绪任务
30、运行n运行权按优先级抢占运行权按优先级抢占n每个任务的运行是死循环每个任务的运行是死循环任务的优先级任务的优先级n任务创建时确定优先级任务创建时确定优先级n优先级由优先数表示优先级由优先数表示n优先数优先数063抢占式优先级调度抢占式优先级调度n内核采用的调度算法:抢占式优先内核采用的调度算法:抢占式优先级调度级调度n每个任务有一个唯一优先数每个任务有一个唯一优先数n优先数小优先级高优先数小优先级高n一旦优先级高任务就绪,立即进行任一旦优先级高任务就绪,立即进行任务调度务调度任务间通信机制任务间通信机制n任务间通信机制任务间通信机制n并发执行的任务需要使用互斥资源并发执行的任务需要使用互斥资源
31、n并发执行的任务需要传递信息,完成并发执行的任务需要传递信息,完成合作。合作。n解决由于任务优先级引发的问题解决由于任务优先级引发的问题时间管理机制时间管理机制n任务中的时间管理机制任务中的时间管理机制n必须令任务自主睡眠若干时间n必须控制任务的执行频率n通过时间延迟控制任务自主睡眠2 2、嵌入式实时、嵌入式实时c/os-iic/os-ii内核模块接口内核模块接口 n核心杂项模块核心杂项模块n任务管理模块任务管理模块n消息队列模块消息队列模块n信号量模块信号量模块n消息邮箱模块消息邮箱模块n时间管理模块时间管理模块n互斥信号量模块互斥信号量模块n内存管理模块内存管理模块n事件标志模块事件标志模
32、块c/os-iic/os-ii内核源代码结构内核源代码结构nsoftware/ c/os-ii/source下:下:n#include softwareucos-iisourceos_core.cn#include softwareucos-iisourceos_flag.cn#include softwareucos-iisourceos_mbox.cn#include softwareucos-iisourceos_mem.cn#include softwareucos-iisourceos_mutex.cn#include softwareucos-iisourceos_q.cn#inc
33、lude softwareucos-iisourceos_sem.cn#include softwareucos-iisourceos_task.cn#include softwareucos-iisourceos_time.c内核模块及核心技术内核模块及核心技术n核心杂项模块:实现临界区管理核心杂项模块:实现临界区管理n任务管理模块:实现任务管理任务管理模块:实现任务管理n时间管理模块:实现时间及中断管理时间管理模块:实现时间及中断管理n消息队列模块:任务间传递多个消息消息队列模块:任务间传递多个消息n信号量模块:任务实现信号量及其申请释放信号量模块:任务实现信号量及其申请释放n消息邮箱模块
34、:任务间传递一个消息消息邮箱模块:任务间传递一个消息n互斥信号量模块:解决优先级反转互斥信号量模块:解决优先级反转n内存管理模块:内存块的分配回收内存管理模块:内存块的分配回收核心杂项模块:临界区的实现核心杂项模块:临界区的实现n并发运行任务需要实现临界区。并发运行任务需要实现临界区。n临界区必须通过关中断开中断实现。关中临界区必须通过关中断开中断实现。关中断时长是实时系统的重要指标,越短越好。断时长是实时系统的重要指标,越短越好。n微处理器具有开关中断的指令,微处理器具有开关中断的指令,ucos_iiucos_ii用宏命令实现用宏命令实现n宏调用宏调用os_enter_criticalos_
35、enter_critical()实现进入临界区()实现进入临界区n宏调用宏调用os_exit_criticalos_exit_critical()实现退出临界区()实现退出临界区应用示例应用示例os_enter_critical();pc_vectset(0 x08, ostickisr); /*install uc/os-iis clock tick isr*/pc_settickrate(os_ticks_per_sec); /*reprogram tick rate*/os_exit_critical();os_core.c中的系统函数中的系统函数nint8u os_tcbinit (i
36、nt8u prio, os_stk *ptos, os_stk *pbos, int16u id, int32u stk_size, void *pext, int16u opt)nvoid os_taskstat (void *pdata)nvoid os_taskidle (void *pdata)nvoid os_sched (void)nstatic void os_inittcblist (void)nstatic void os_inittaskstat (void)nstatic void os_inittaskidle (void)nstatic void os_initrdy
37、list (void)nstatic void os_initmisc (void)nstatic void os_initeventlist (void)nvoid os_eventwaitlistinit (os_event *pevent)nvoid os_eventto (os_event *pevent)nvoid os_eventtaskwait (os_event *pevent)nint8u os_eventtaskrdy (os_event *pevent, void *msg, int8u msk)nvoid os_dummy (void)nint16u osversion
38、 (void)nvoid ostimetick (void)nvoid osstatinit (void)nvoid osstart (void)nvoid osschedunlock (void)nvoid osschedlock (void)nvoid osintexit (void)nvoid osintenter (void)nvoid osinit (void)任务管理与调度任务管理与调度n可将应用分解为多个并发任务。可将应用分解为多个并发任务。n每个任务是一个独立的执行线程,应用代码每个任务是一个独立的执行线程,应用代码中以函数为单位实现。可以与其它的并发任中以函数为单位实现。可以
39、与其它的并发任务竞争处理机时间。务竞争处理机时间。n每个任务都是可调度的,根据预定的抢占式每个任务都是可调度的,根据预定的抢占式优先级调度算法竞争系统的执行时间。优先级调度算法竞争系统的执行时间。 任务管理任务管理 n可以通过创建、删除、睡眠、唤醒、改变优先级、可以通过创建、删除、睡眠、唤醒、改变优先级、发送或等待事件等操作对任务进行管理。发送或等待事件等操作对任务进行管理。n创建任务时,给任务提供一个名字、一个唯一的创建任务时,给任务提供一个名字、一个唯一的id、一个优先级、一个任务控制块、一个堆栈、一个优先级、一个任务控制块、一个堆栈和一个任务函数代码,这些内容构成任务对象和一个任务函数代
40、码,这些内容构成任务对象 。任务管理任务管理task.c中的系统函数中的系统函数nostaskchangeprio():改变优先级:改变优先级nostaskcreate():任务创建:任务创建nostaskcreateext():任务创建:任务创建nostaskdel():任务删除:任务删除nostaskdelreq():任务删除请求:任务删除请求nostaskresume():任务恢复:任务恢复nostaskstkchk():任务堆栈检查:任务堆栈检查nostasksuspend():任务挂起:任务挂起nostaskquery():任务查询:任务查询任务的调度算法任务的调度算法 n嵌入式操作
41、系统多采用基于嵌入式操作系统多采用基于静态优先级静态优先级的可抢占式调度的可抢占式调度。n任务优先级是在运行前在任务创建时静任务优先级是在运行前在任务创建时静态分配完成,开始运行时,一旦有优先态分配完成,开始运行时,一旦有优先级更高的任务就绪,就马上进行调度级更高的任务就绪,就马上进行调度 。n函数源代码如下:参见源文件函数源代码如下:参见源文件core.cvoid osstart (void) int8u y; int8u x; if (osrunning = false) y = osunmaptblosrdygrp; /* find highest prioritys task prio
42、rity number */ x = osunmaptblosrdytbly; ospriohighrdy = (int8u)(y ostcbstkptr=sp;4.清中断源;清中断源;5.重新开中断;重新开中断;6.执行用户代码做中断服务执行用户代码做中断服务; 7.调用调用osintexit();8.恢复所有恢复所有cpu寄存器;寄存器;9.执行中断返回指令;执行中断返回指令;时间管理模块时间管理模块n时钟节拍是特定的周期性中断。中断时时钟节拍是特定的周期性中断。中断时间间隔取决于不同的应用。间间隔取决于不同的应用。nc/os-ii需要提供周期性信号源,用于需要提供周期性信号源,用于实现时
43、间延迟和超时确认(时间为节拍实现时间延迟和超时确认(时间为节拍的整数倍)。的整数倍)。 时间管理功能时间管理功能 n嵌入式系统中,系统任务和用户任务经嵌入式系统中,系统任务和用户任务经常要随着时间进行调度和执行。常要随着时间进行调度和执行。n任务的执行时间、任务的挂起时间、时任务的执行时间、任务的挂起时间、时钟节拍等等与时间相关联的数据是控制钟节拍等等与时间相关联的数据是控制实时系统的关键参数实时系统的关键参数 时钟管理时钟管理time.c中的系统函数中的系统函数nostimedly()nostimedlyhmsm()nostimedlyresume()nostimeget()nostimes
44、et()nostimetick()任务间同步、互斥与通信及其实现任务间同步、互斥与通信及其实现n嵌入式系统中使用任务间原语实现任务嵌入式系统中使用任务间原语实现任务的同步和通信,称为事件机制,一般包的同步和通信,称为事件机制,一般包括:括:n信号量信号量n消息邮箱消息邮箱n消息队列消息队列n互斥信号量互斥信号量n事件标志组事件标志组事件事件 n在嵌入式实时内核中,事件是指一种表明预在嵌入式实时内核中,事件是指一种表明预先定义的系统事件已经发生的机制。一个事先定义的系统事件已经发生的机制。一个事件就是一个标志,不具备其它信息。件就是一个标志,不具备其它信息。n用于实现任务间的互斥和同步关系控制。
45、用于实现任务间的互斥和同步关系控制。n事件机制用于任务与任务之间、任务与事件机制用于任务与任务之间、任务与isr之间的同步。之间的同步。 用于支持后续具体同步机制。用于支持后续具体同步机制。事件控制块事件控制块ecbn事件本身的定义事件本身的定义n用于信号量的计数器用于信号量的计数器n用于指向邮箱的指针用于指向邮箱的指针n指向消息队列的指针数组指向消息队列的指针数组n等待该事件的所有任务的列表等待该事件的所有任务的列表 typedef struct void *oseventptr; /* 指向消息或者消息队列的指针指向消息或者消息队列的指针 */ int8u oseventtblos_eve
46、nt_tbl_size; /* 等待任务表等待任务表 */ int16u oseventcnt; /* 计数器计数器(当事件是信号量时当事件是信号量时) */ int8u oseventtype; /* 时间类型时间类型 */ int8u oseventgrp; /* 等待任务所在的组等待任务所在的组 */ os_event;事件的功能函数事件的功能函数n初始化一个事件控制块,初始化一个事件控制块,oseventwaitlistinit( )n使一个任务进入就绪态,使一个任务进入就绪态,oseventtaskrdy( ) n使一个任务进入等待某事件发生状态使一个任务进入等待某事件发生状态, o
47、seventtaskwait( ) n由于等待超时而将任务置为就绪态由于等待超时而将任务置为就绪态, oseventto( ) 信号量信号量 n在实时操作系统中,根据信号量的值,在实时操作系统中,根据信号量的值,内核可以管理等待使用信号量的任务。内核可以管理等待使用信号量的任务。n一般来说,操作系统对信号量提供初始一般来说,操作系统对信号量提供初始化、等待信号、发送信号等操作。就是化、等待信号、发送信号等操作。就是创建信号量、获取(申请)信号量、释创建信号量、获取(申请)信号量、释放信号量、删除信号量、获取有关信号放信号量、删除信号量、获取有关信号量的各种信息等操作。量的各种信息等操作。nc/
48、os-ii中的信号量由两部分组成:中的信号量由两部分组成:n一个是信号量的计数值,它是一个一个是信号量的计数值,它是一个16位的位的无符号整数(无符号整数(0 到到65,535之间);之间);n另一个是由等待该信号量的任务组成的等待另一个是由等待该信号量的任务组成的等待任务表。用户要在任务表。用户要在os_cfg.h中将中将os_sem_en开关量常数置成开关量常数置成1, 信号量如何创建信号量如何创建n调用调用ossemcreate( )函数,对信号量函数,对信号量初始计数值赋值。该初始值为初始计数值赋值。该初始值为0到到65,535之间的一个数。之间的一个数。n信号量用来表示一个或者多个事
49、件的发生,信号量用来表示一个或者多个事件的发生,初始值应设为初始值应设为0。n信号量用于对互斥资源的访问,初始值应设信号量用于对互斥资源的访问,初始值应设为为1。n信号量用来表示允许任务访问信号量用来表示允许任务访问n个相同的互个相同的互斥资源,初始值应该是斥资源,初始值应该是n。nc/os-ii提供了提供了5个对信号量操作的函数。个对信号量操作的函数。nossemcreate()nossempend()/*等待一个信号量等待一个信号量*/nossempost()/*发送一个信号量发送一个信号量 */nossemaccept() /*无等待请求一个信号量无等待请求一个信号量 */nossemq
50、uery() /*查询信号量当前状态查询信号量当前状态 */nossempost()函数可由任务或中断服务子函数可由任务或中断服务子程序代码调用,程序代码调用,nossempend()和和ossemquery()函数只能函数只能由任务代码调用由任务代码调用 。信号量管理信号量管理os_sem.c中的系统函数中的系统函数nossemaccept()nossemcreate()nossempend()nossempost()nossemquery()消息邮箱消息邮箱 n邮箱是邮箱是c/os-ii中另一种通讯机制,它可以中另一种通讯机制,它可以使一个任务或者中断服务子程序向另一个任使一个任务或者中断
51、服务子程序向另一个任务发送一个指针型的变量。该指针指向一个务发送一个指针型的变量。该指针指向一个包含了特定包含了特定“消息消息”的数据结构。的数据结构。 nc/os-ii提供了提供了5种对邮箱的操作函数:种对邮箱的操作函数:osmboxcreate(),osmboxpend(),osmboxpost(),osmboxaccept(),osmboxquery()函数函数 操作函数及其参数操作函数及其参数os_event *osmboxcreate (void *msg) void *osmboxpend (os_event *pevent, int16u timeout, int8u *err)
52、 int8u osmboxpost (os_event *pevent, void *msg) void *osmboxaccept (os_event *pevent) int8u osmboxquery (os_event *pevent, os_mbox_data *pdata) 消息邮箱消息邮箱os_mbox.c中的系统函数中的系统函数nosmboxaccept()nosmboxcreate()nosmboxpend()nosmboxpost()nosmboxquery()消息队列消息队列n消息队列是消息队列是c/os-ii中另一种通讯机制,中另一种通讯机制,它可以使一个任务或者中断服
53、务子程序它可以使一个任务或者中断服务子程序向另一个任务发送多个指针变量。向另一个任务发送多个指针变量。 n在使用一个消息队列之前,必须先建立在使用一个消息队列之前,必须先建立该消息队列。这可以通过调用该消息队列。这可以通过调用osqcreate( )函数,并定义消息队列中函数,并定义消息队列中的单元数(消息数)来完成。的单元数(消息数)来完成。 c/os-ii消息队列操作函数消息队列操作函数nosqcreate()/*建立一个消息队列建立一个消息队列 */nosqpend()/*等待一个消息队列中的消息等待一个消息队列中的消息 */nosqpost()/*向消息队列发送一个消息(向消息队列发送
54、一个消息(fifo) */nosqpostfront()/*向消息队列发送一个消息(后进先出向消息队列发送一个消息(后进先出lifo) */nosqaccept()/*无等待地从一个消息队列中取得消息无等待地从一个消息队列中取得消息 */nosqflush()/*清空一个消息队列清空一个消息队列 */nosqquery() /*查询一个消息队列的状态查询一个消息队列的状态 */消息队列消息队列os_q.c中的系统函数中的系统函数nosqaccept()nosqcreate()nosqflush()nosqpend()osqpost()nosqpostfront()nosqquery()内存管理
55、和内存管理和i/o管理管理n嵌入式操作系统的内存管理比较简单,嵌入式操作系统的内存管理比较简单,通常不采用虚拟存储管理,而采用静态通常不采用虚拟存储管理,而采用静态内存分配和动态内存分配,内存分配和动态内存分配,n固定大小内存分配和可变大小内存分配固定大小内存分配和可变大小内存分配相结合的管理方式。相结合的管理方式。 c/os-ii按分区来管理按分区来管理n每个分区中包含有整数个大小相同的内存块。每个分区中包含有整数个大小相同的内存块。nc/os-ii设计分配和释放内存块函数可以分配设计分配和释放内存块函数可以分配和释放固定大小的内存块。和释放固定大小的内存块。n分配和释放内存块函数的执行时间
56、也是固定的,分配和释放内存块函数的执行时间也是固定的,这样确保实时内核的系统性能。这样确保实时内核的系统性能。 内存控制块内存控制块n为了便于内存的管理,在为了便于内存的管理,在c/os-ii中使用内存控制块中使用内存控制块(memory control blocks)的数据结构来跟踪每一个)的数据结构来跟踪每一个内存分区,系统中的每个内存分区都有它自己的内存内存分区,系统中的每个内存分区都有它自己的内存控制块。控制块。 typedef struct void *osmemaddr; void *osmemfreelist; int32u osmemblksize; int32u osmemn
57、blks; int32u osmemnfree; os_mem;内存的功能内存的功能1.使用一个内存分区之前,必须先建立该内存使用一个内存分区之前,必须先建立该内存分区。调用分区。调用osmemcreate()函数完成。函数完成。2.应用程序可以调用应用程序可以调用osmemget()函数从已创函数从已创建的内存分区中申请一个内存块。建的内存分区中申请一个内存块。3.当用户应用程序不再使用一个内存块时,必当用户应用程序不再使用一个内存块时,必须及时释放,并放回对应内存分区。调用须及时释放,并放回对应内存分区。调用osmemput()函数完成。函数完成。 n在在c/os-ii 中,可以使用中,可
58、以使用osmemquery()函数来查询一个特定内存分区的有关消息:函数来查询一个特定内存分区的有关消息:n特定内存分区中内存块的大小、特定内存分区中内存块的大小、n可用内存块数可用内存块数n正在使用的内存块数等信息。正在使用的内存块数等信息。n所有这些信息都放在一个叫所有这些信息都放在一个叫os_mem_data的的数据结构中数据结构中 内存块管理内存块管理mem.c中的系统函数中的系统函数nosmemcreate()nosmemget()nosmemput()nosmemquery()nvoid os_meminit (void)i/o管理管理n所有的嵌入式系统都包括一些负责实现所有的嵌入
59、式系统都包括一些负责实现输入输出操作的模块。这些输入输出操作的模块。这些i/o操作运操作运行于不同类型的行于不同类型的i/o设备上,系统通过设备上,系统通过这些操作来控制这些操作来控制i/o设备的运行。设备的运行。n通常,设计一个嵌入式系统的目的就是通常,设计一个嵌入式系统的目的就是专门用来控制某些设备,并适应该设备专门用来控制某些设备,并适应该设备的特殊需求。的特殊需求。os_flag.c中的系统函数中的系统函数nos_flags osflagaccept (os_flag_grp *pgrp, os_flags flags, int8u wait_type, int8u *err)nos_
60、flag_grp *osflagcreate (os_flags flags, int8u *err)nos_flag_grp *osflagdel (os_flag_grp *pgrp, int8u opt, int8u *err)nos_flags osflagpend (os_flag_grp *pgrp, os_flags flags, int8u wait_type, int16u timeout, int8u *err)nos_flags osflagpost (os_flag_grp *pgrp, os_flags flags, int8u opt, int8u *err)c/o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 氢能装备施工方案
- 惠州市汇科源科技有限公司电源适配器的生产建设项目环评报告表
- 昌江县公益性公墓及殡仪馆建设工程(一期)项目环评报告表
- 甘肃巨化新材料有限公司股东全部权益价值项目资产评估报告
- 玻璃更换施工方案施工方案
- 2024-2025学年下学期高一语文第一单元A卷
- 东江大坝隧道施工方案
- 《雷雨》教案-高一下学期语文统编版
- 2025年中国碑石行业供需态势、市场现状及发展前景预测报告
- 提高女性、老年人及残疾人就业率的策略及实施路径
- 《基础和声学》试习题库(6套答案)
- 马克思主义政治经济学课程讲义
- 四年级道德与法治从中国制造到中国创造
- SolidWorks、CAD三维建模练习习题图
- HONEYWELLDCS操作手册
- 2021-2022新教科版四年级科学下册全一册全部课件(共24课)
- 方正飞腾使用教程详解
- 3 弃渣场施工方案
- 国外客户来访行程安排表
- 八路抢答器PLC控制系统设计
- 《车辆解压委托书 》
评论
0/150
提交评论