嵌入式系统开发与应.ppt

上传人:wuy****n92 文档编号:86940622 上传时间:2023-04-15 格式:PPT 页数:519 大小:3.17MB
返回 下载 相关 举报
嵌入式系统开发与应.ppt_第1页
第1页 / 共519页
嵌入式系统开发与应.ppt_第2页
第2页 / 共519页
点击查看更多>>
资源描述

《嵌入式系统开发与应.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统开发与应.ppt(519页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、嵌入式系统开发与应用嵌入式系统开发与应用重庆交通大学信息科学与工程学院重庆交通大学信息科学与工程学院许强许强主要内容主要内容1.1.从芯片到系统硬件环境设计从芯片到系统硬件环境设计;要求:熟悉芯片的工作特点,要求:熟悉芯片的工作特点,CADCAD设计;设计;目标:搭建应用硬件系统。目标:搭建应用硬件系统。2.2.内嵌内嵌uC/OS-IIuC/OS-II操作系统的嵌入式系统设计操作系统的嵌入式系统设计;要求:熟悉要求:熟悉uC/OS-IIuC/OS-II操作系统内部运行特点;操作系统内部运行特点;目标:设计嵌入式的软件系统。目标:设计嵌入式的软件系统。3.3.内嵌内嵌Linux(uClinux)

2、Linux(uClinux)操作系统的嵌入式系统设计。操作系统的嵌入式系统设计。要求:了解要求:了解Linux(uClinux)Linux(uClinux)操作系统内部运行原理;熟悉开操作系统内部运行原理;熟悉开 发平台的搭建过程。发平台的搭建过程。目标:开发嵌入目标:开发嵌入Linux(uClinux)Linux(uClinux)的嵌入式应用系统。的嵌入式应用系统。学习要求学习要求课前预习教材课前预习教材按时上课,认真听讲按时上课,认真听讲研读参考书和参考网站研读参考书和参考网站整理笔记,认真思考,积极讨论,善于发现问题、整理笔记,认真思考,积极讨论,善于发现问题、提出问题并努力寻求问题的答

3、案。提出问题并努力寻求问题的答案。结合嵌入式系统专题学习网站丰富的教学资源,结合嵌入式系统专题学习网站丰富的教学资源,努力寻求问题的答案,掌握基本原理,拓展知识,努力寻求问题的答案,掌握基本原理,拓展知识,延伸视野,提高分析问题和解决问题的能力。延伸视野,提高分析问题和解决问题的能力。考核方式平时考勤占20%,作业占10%,实验占20%考试占50%考勤有6次上参考书LabrosseJeanJ.嵌入式实时操作系统uC/OS-II(第2版),邵贝贝等译.北京:北京航空航天大学出版社,2003.汤子瀛等,计算机操作系统,西安电子科技大学南京大学孙钟秀院士,操作系统教程第三版,高等教育出版社nSilb

4、erschatz,操作系统概念(中、英文)第六版,高等教育出版社题外之言态度决定一切-前国家足球队教练米卢考试只是手段,掌握知识才是关键。本课的重点在于宏观理解计算机系统,扩大知识面。交流、合作是成功的关键向他人公开你的见解和问题,勇于提出问题。通过报纸、杂志、书籍和网络查阅相关文献。对本专业来讲:活到老、学到老,时时更新自己的知识。要要有有强强烈烈的的求求知知欲欲要要经经常常复复习习知知识识不要将自己置于尴尬境地不要将自己置于尴尬境地一一.从芯片到系统硬件环境设计从芯片到系统硬件环境设计;最小系统外存储芯片的组织网络芯片的组织与应用USB芯片的组织与应用LCD显示器的组织应用触摸屏的应用。二

5、二.内嵌内嵌uC/OS-IIuC/OS-II操作系统的嵌入式操作系统的嵌入式系统设计系统设计;uC/OS-II操作系统的原理uC/OS-II操作系统的应用设计嵌入式实时操作系统uC/OS-II原理及应用基本内容:基本内容:基本概念、基本概念、uC/OS-IIuC/OS-II的任务的任务构架、任务的实现特点;构架、任务的实现特点;uC/OS-IIuC/OS-II的移的移植操作;具体植操作;具体uC/OS-IIuC/OS-II操作系统的裁剪;操作系统的裁剪;重点:重点:基本概念、基本概念、uC/OS-IIuC/OS-II的任务构架、的任务构架、任务的实现特点及具体应用编程;任务的实现特点及具体应用

6、编程;为什么要学习操作系统设计操作系统或者修改现有的系统设计操作系统或者修改现有的系统存在们意识不到的大量存在们意识不到的大量“操作系统操作系统”,嵌入式系,嵌入式系统(统(EmbeddedOS)加深对使用的加深对使用的OS的理解,有利于深入编程的理解,有利于深入编程用户为了开发应用程序必须与操作系统打交道用户为了开发应用程序必须与操作系统打交道编程时借鉴操作系统的设计思想和算法编程时借鉴操作系统的设计思想和算法选择购实操作系统选择购实操作系统我并不总使用我并不总使用Win95/NT/2000/XP操作系统中所用的许多概念和技巧可以推广应用操作系统中所用的许多概念和技巧可以推广应用到其它领域到

7、其它领域第1章嵌入式实时操作系统的基本概念什么是计算机操作系统?什么是计算机操作系统?什么是批处理操作系统?什么是批处理操作系统?什么是分时操作系统?什么是分时操作系统?什么是实时操作系统?什么是实时操作系统?监控程序与实时操作系统?监控程序与实时操作系统?什么是嵌入式操作系统?什么是嵌入式操作系统?嵌入式系统与嵌入式操作系统?嵌入式系统与嵌入式操作系统?计算机操作系统计算机操作系统系统软件、计算机硬件、软件资源的管理者系统软件、计算机硬件、软件资源的管理者。管理对象包括:管理对象包括:CPU、存储器、外部设备、信息(数、存储器、外部设备、信息(数据和软件);据和软件);管理的内容:资源的当前

8、状态(数量和使用情况)、管理的内容:资源的当前状态(数量和使用情况)、资源的分配、回收和访问操作,相应管理策略(包括资源的分配、回收和访问操作,相应管理策略(包括用户权限)。用户权限)。用户使用系统硬件、软件的接口用户使用系统硬件、软件的接口系统命令(命令行、菜单式、命令脚本式、图形用户系统命令(命令行、菜单式、命令脚本式、图形用户接口接口GUI););系统调用(形式上类似于过程调用,在应用编程中使系统调用(形式上类似于过程调用,在应用编程中使用)。用)。在裸机上添加:设备管理、文件管理、存在裸机上添加:设备管理、文件管理、存储管理(针对内存和外存)、处理机管理储管理(针对内存和外存)、处理机

9、管理(针对(针对CPU););合理组织工作流程:作业管理、进程管理。合理组织工作流程:作业管理、进程管理。批处理操作系统批处理操作系统作业的处理流程作业的处理流程作业提交:作业的输入;作业提交:作业的输入;作业执行作业执行作业完成:作业的输出;作业完成:作业的输出;图1 批处理系统中作业处理及状态分时操作系统把计算机的系统资源(尤其是把计算机的系统资源(尤其是CPUCPU时间)进行时时间)进行时间上的分割,每个时间段称为一个时间片间上的分割,每个时间段称为一个时间片(time slicetime slice),每个用户依次轮流使用时间),每个用户依次轮流使用时间片。分时特征如下片。分时特征如下

10、:多路性:多路性:多个用户同时工作。多个用户同时工作。共享系统资源,提高了资源利用率。节省维护开支,可靠性高:共享系统资源,提高了资源利用率。节省维护开支,可靠性高:终端的概念至今仍在使用。促进了计算机的普遍应用,提高资终端的概念至今仍在使用。促进了计算机的普遍应用,提高资源利用率:远地用户通过终端(较便宜)联机使用。源利用率:远地用户通过终端(较便宜)联机使用。独立性:独立性:各用户独立操作,互不干扰。各用户独立操作,互不干扰。交互性:交互性:系统能及时对用户的操作进行响应,显著提高调系统能及时对用户的操作进行响应,显著提高调试和修改程序的效率:缩短了周转时间。试和修改程序的效率:缩短了周转

11、时间。实时操作系统实时操作系统实时操作系统主要用于过程控制、事务处理等有实时要实时操作系统主要用于过程控制、事务处理等有实时要求的领域,其主要特征是实时性和可靠性。求的领域,其主要特征是实时性和可靠性。实时系统的特征实时系统的特征实时时钟管理实时时钟管理:提供系统日期和时间、定时和延时等:提供系统日期和时间、定时和延时等时钟管理功能;时钟管理功能;过载保护过载保护:缓冲区排队,丢弃某些任务,动态调整任:缓冲区排队,丢弃某些任务,动态调整任务周期;务周期;过载是指进入系统的任务数目超出系统的处理能力。过载是指进入系统的任务数目超出系统的处理能力。高度可靠性和安全性高度可靠性和安全性:容错能力(如

12、故障自动复位):容错能力(如故障自动复位)和冗余备份(双机,关键部件);和冗余备份(双机,关键部件);实时系统与批处理系统和分时系统的区别实时系统与批处理系统和分时系统的区别专用性质专用性质:许多实时系统是专用系统,而批处理与分:许多实时系统是专用系统,而批处理与分时系统通常是通用系统。时系统通常是通用系统。实时控制实时控制:实时系统用于控制实时过程,要求对外部:实时系统用于控制实时过程,要求对外部事件的迅速响应,具有较强的中断处理机构。事件的迅速响应,具有较强的中断处理机构。高可靠性高可靠性:实时系统用于控制重要过程,要求高度可:实时系统用于控制重要过程,要求高度可靠,具有较高冗余。如双机系

13、统。靠,具有较高冗余。如双机系统。事件驱动和队列驱动事件驱动和队列驱动:实时系统的:实时系统的工作方式工作方式:接受外:接受外部消息,分析消息,调用相应处理程序进行处理。部消息,分析消息,调用相应处理程序进行处理。可可与通用系统结合与通用系统结合成通用实时系统:实时处理前台作成通用实时系统:实时处理前台作业,批处理为后台作业。业,批处理为后台作业。监控程序与实时操作系统监控程序与实时操作系统监控程序监控程序:是最原始的低端单片机管理程序是最原始的低端单片机管理程序,由应用程序员自行编制由应用程序员自行编制;用户通过监控程用户通过监控程序提高计算机的资源利用率,但这种利序提高计算机的资源利用率,

14、但这种利用是有限的。用是有限的。随着计算机技术的发展,计算机的硬件、随着计算机技术的发展,计算机的硬件、软件资源愈来愈丰富,监控程序已不能软件资源愈来愈丰富,监控程序已不能高效支持,在此需求下不得不采用管理高效支持,在此需求下不得不采用管理功能更全面的操作系统来完成。功能更全面的操作系统来完成。操作系统的服务操作系统的服务服务类型服务类型程序执行和终止(包括分配和回收资源)程序执行和终止(包括分配和回收资源)I/OI/O操作操作文件系统操作文件系统操作通信:本机内,计算机之间(通常通信服务的通信:本机内,计算机之间(通常通信服务的使用者为进程,而不是笼统说使用者为进程,而不是笼统说 主机主机)

15、配置管理:硬件、配置管理:硬件、OSOS本身、其他软件本身、其他软件差错检测差错检测服务提供方式:服务提供方式:系统命令和系统调用系统命令和系统调用早期低端嵌入式系统工作特点传统的前/后台方式 不复杂的小系统常采用前/后台方式进行程序操作,整个程序为一个大循环体。其中前台为中断级,时间相关性很强的关键操作放在前台执行。后台为任务级,用于处理前台产生的各种信息。功能1功能2功能4功能3功能5功能6ISR1ISR2后台程序前台程序前后台系统后台程序:系统后台程序按顺序执行各种动作,通常用于处理前台产生的各种信息。前台程序:前台为中断服务程序,用于响应外部事件,并产生一些信息提供给后台处理。前后台系

16、统的优缺点优点逻辑关系简单:系统中所有的功能程序都是串行进行的,软件开发人员上手很快。缺点实时性差:所有工作都是串行进行的,循环周期不易确定;系统健壮性不强:因为所有程序都是串行执行的,一个工作出现问题,将直接影响后续程序;不适合复杂系统:当系统功能比较复杂时,不易实现复杂的逻辑关系;不适合系统维护:一旦系统调试结束,产品定型后,如果要进行软件升级将”牵一发而动全身“,不能方便的添加新功能。嵌入式操作系统嵌入式操作系统运行在嵌入式硬件平台上,对整个系统及运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进行统一协其所操作的部件、装置等资源进行统一协调、指挥和控制的系统软件。调、指挥

17、和控制的系统软件。嵌入式操作系统以微内核为主,其它诸如嵌入式操作系统以微内核为主,其它诸如窗口系统界面、文件管理模块、通信协议窗口系统界面、文件管理模块、通信协议等还要由开发人员自已设计或者外购。内等还要由开发人员自已设计或者外购。内核大多数只提供核大多数只提供内存管理、多任务管理、内存管理、多任务管理、外围资源管理外围资源管理。嵌入式操作系统嵌入式操作系统电子消费产品电子消费产品-家用电器、手机、武器、控制设备家用电器、手机、武器、控制设备嵌入式(计算机)系统硬件不再以物理上独立的装置嵌入式(计算机)系统硬件不再以物理上独立的装置或设备形式出现,而是大部分甚至全部都隐藏和嵌入或设备形式出现,

18、而是大部分甚至全部都隐藏和嵌入到各种应用系统中。到各种应用系统中。特点:特点:微型化微型化-可用内存小(可用内存小(1MB1MB以内、没有外存、微处理以内、没有外存、微处理器字长短且运算速度有限、能提供的能源较少、外器字长短且运算速度有限、能提供的能源较少、外部设备和被控设备千变万化)部设备和被控设备千变万化)可定制可定制-专业化(剪裁性)专业化(剪裁性)实时性实时性-语音、视频、军事武器、航空航天、交通语音、视频、军事武器、航空航天、交通运输运输可靠性可靠性易移植性易移植性嵌入式系统与嵌入式操作系统嵌入式系统与嵌入式操作系统嵌入式系统是基于单片机系统嵌入到对象系统的整合,实现对象的智能化控制

19、。因此要求具有专用性、微小化、控制的可靠性高、低功耗和成本低等特点。跟随嵌入式系统的完备管理,提出嵌入式操作系统,特点是异常响应时间可确定、程序微小化且可靠、可裁剪和易移植性等。嵌入式操作系统的现状嵌入式操作系统的现状VxWorks、pSOSWindowsCEQNXOSuC/OS-IIuCLinuxLinuxC/OS-II原理及应用lC/OS-IIC/OS-II简介简介l工作原理工作原理lC/OS-IIC/OS-II移植简介移植简介lC/OS-IIC/OS-II使用初步使用初步lC/OS-II简介简介l工作原理工作原理lC/OS-II移植简介移植简介lC/OS-II使用初步使用初步C/OS-I

20、I原理及应用C/OS-II简介概述C/OS-II读做读做“microCOS2”,意为,意为“微控制器微控制器操作系统版本操作系统版本2”。C/OS-II是源码公开的著名实时内是源码公开的著名实时内核,可用于各类核,可用于各类8位、位、16位和位和32位单片机或位单片机或DSP。从。从C/OS算起,该内核已有算起,该内核已有10多年应用史,在诸多领域多年应用史,在诸多领域得到广泛应用。得到广泛应用。C/OS-II是一个完整的、可移植、可固化、可剪是一个完整的、可移植、可固化、可剪裁的占先式实时多任务内核。裁的占先式实时多任务内核。C/OS-II使用使用ANSIC语语言编写,包含一小部分汇编代码,

21、使之可以供不同架言编写,包含一小部分汇编代码,使之可以供不同架构的微处理器使用。至今,从构的微处理器使用。至今,从8位到位到64位,位,C/OS-II已已在超过在超过40种不同架构的微处理器上运行。种不同架构的微处理器上运行。C/OS-II特点提供源代码提供源代码:购买作者撰写的:购买作者撰写的嵌入式实时操作系统嵌入式实时操作系统C/OS-II一一书即可获得书即可获得C/OS-IIV2.52版本的所有源代码,购买此书的其它版本版本的所有源代码,购买此书的其它版本可以获得相应版本的全部源代码。可以获得相应版本的全部源代码。可移植性可移植性(portable):C/OS-II的源代码绝大部分是使用

22、移植性的源代码绝大部分是使用移植性很强的很强的ANSIC写的,将与微处理器硬件相关的汇编语言使用量压缩写的,将与微处理器硬件相关的汇编语言使用量压缩到最低的限度,以使到最低的限度,以使C/OS-II便于移植到其它微处理器上。目前,便于移植到其它微处理器上。目前,C/OS-II已经被移植到多种不同架构的微处理器上。已经被移植到多种不同架构的微处理器上。可固化可固化(ROMmable):只要具备合适的软硬件工具,就可以将只要具备合适的软硬件工具,就可以将C/OS-II嵌入到产品中成为产品的一部分。嵌入到产品中成为产品的一部分。可剪裁可剪裁(scalable):C/OS-II使用条件编译实现可剪裁,

23、用户程序可使用条件编译实现可剪裁,用户程序可以只编译自己需要的(以只编译自己需要的(C/OS-II的)功能,而不编译不要需要的功的)功能,而不编译不要需要的功能,以减少能,以减少C/OS-II对代码空间和数据空间的占用。对代码空间和数据空间的占用。可剥夺可剥夺(preemptive):C/OS-II是完全可剥夺型的实时内核,是完全可剥夺型的实时内核,C/OS-II总是运行就绪条件下优先级最高的任务。总是运行就绪条件下优先级最高的任务。C/OS-II特点多任务多任务:C/OS-II可以管理可以管理64个任务,然而,个任务,然而,C/OS-II的作者建议的作者建议用户保留用户保留8个给个给C/OS

24、-II。这样,留给用户的应用程序最多可有这样,留给用户的应用程序最多可有56个个任务。任务。可确定性可确定性:绝大多数:绝大多数C/OS-II的函数调用和服务的执行时间具有确的函数调用和服务的执行时间具有确定性,也就是说,用户总是能知道定性,也就是说,用户总是能知道C/OS-II的函数调用与服务执行的函数调用与服务执行了多长时间。了多长时间。任务栈任务栈:C/OS-II的每个任务都有自己单独的栈,使用的每个任务都有自己单独的栈,使用C/OS-II的的占空间校验函数,可确定每个任务到底需要多少栈空间。占空间校验函数,可确定每个任务到底需要多少栈空间。系统服务系统服务:C/OS-II提供很多系统服

25、务,例如信号量、互斥信号量、提供很多系统服务,例如信号量、互斥信号量、时间标志、消息邮箱、消息队列、块大小固定的内存的申请与释放时间标志、消息邮箱、消息队列、块大小固定的内存的申请与释放及时间管理函数等。及时间管理函数等。中断管理中断管理:中断可以使正在执行的任务暂时挂起,如果优先级更高:中断可以使正在执行的任务暂时挂起,如果优先级更高的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套层数可达执行,中断嵌套层数可达255层。层。C/OS-II特点稳定性与可靠性:C/OS-II是C/OS的升级版,C/OS自1992年

26、以来已经有数百个商业应用。C/OS-II与C/OS的内核是一样的,只是提供了更多的功能。2000年7月,C/OS-II在一个航空项目中得到了美国联邦航空管理局对商用飞机的、符合RTCA DO 178B标准的认证。这表明,该操作系统的质量得到了认证,可以在任何应用中使用。作者及其著作uC/OS-II的体系结构用户应用程序用户应用程序uC/OS-II与处理器无关的代码与处理器无关的代码OS_CORE.COS_Q.COS_FLAG.COS_SEM.COS_MBOX.COS_TASK.COS_MEM.COS_TIME.COS_MUTEX.CuCOS_II.CuCOS_II.HuC/OS-II与与应用程

27、序相关的代码应用程序相关的代码OS_CFG.HINCLUDES.HuC/OS-II与处理器相关的代码与处理器相关的代码OS_CPU.H(移植时需要修改)(移植时需要修改)OS_CPU_A.ASMOS_CPU_C.C软件软件硬件硬件CPU定时器定时器uC/OS-II练习题1、什么是计算机的操作系统?它应该具备什么功、什么是计算机的操作系统?它应该具备什么功能?能?2、简述嵌入式系统与普通操作系统的区别?、简述嵌入式系统与普通操作系统的区别?3、观察人们日常生活中嵌入式系统的应用?、观察人们日常生活中嵌入式系统的应用?4、什么是实时系统?试列举几个日常生活中的实、什么是实时系统?试列举几个日常生活

28、中的实时系统?时系统?第2章uC/OS-II中的任务uC/OS-II操作系统内核的主要工作就是对任务进行管理。本章的主要内容有:uC/OS-II任务引入;任务的基本概念,用户任务和系统任务;任务代码、任务控制和任务堆栈;任务的优先权及表示任务优先权的参数;任务就绪表结构及操作;任务切换及任务调度;任务的创建、删除、挂起、恢复和查询;uC/OS-II的初始化和启动。uC/OS-II多任务管理多任务操作系统多任务运行的实现实际上是靠多任务运行的实现实际上是靠CPU在许多任务之在许多任务之间转换和调度。间转换和调度。CPU只有一个,轮番服务于一系列任只有一个,轮番服务于一系列任务中的某一个。多任务运

29、行使务中的某一个。多任务运行使CPU的利用率达到最高,的利用率达到最高,并使应用程序模块化。并使应用程序模块化。最大特点是,最大特点是,开发人员可以将很复杂的应用开发人员可以将很复杂的应用开发人员可以将很复杂的应用开发人员可以将很复杂的应用程序层次化,程序将更容易设计和维护程序层次化,程序将更容易设计和维护程序层次化,程序将更容易设计和维护程序层次化,程序将更容易设计和维护。多任务系统工作原理任务1任务2.空闲任务操作系统调度程序CPU资源信号量邮箱内存管理数据队列产生系统运作所必需的节拍调度程序对所有任务进行运行控制多任务系统工作原理任务1任务2.空闲任务信号量邮箱内存管理数据队列l最多支持

30、6464个任务个任务;l l空闲任务一定存在空闲任务一定存在,当所有任务都不运行时才运行空闲任务;l l所有任务都有不同的优先级所有任务都有不同的优先级,优先级为0表示最高,空闲任务优先级最低;l任务之间的通信通过ucos提供的各种事件机制进行。0 01 1n n.多任务系统工作原理操作系统调度程序CPU资源l操作系统的操作系统的调度程序对所有任务实现运行控制调度程序对所有任务实现运行控制调度程序对所有任务实现运行控制调度程序对所有任务实现运行控制;l l任务切换任务切换任务切换任务切换实际就是把当前任务所占用的实际就是把当前任务所占用的CPUCPU资源用其它任务来替资源用其它任务来替换;换;

31、lCPUCPU资源包括寄存器资源包括寄存器R0-R15R0-R15、CPSRCPSR、SPRSSPRS和其它一些全局变量;和其它一些全局变量;l调度程序由调度程序由系统节拍驱动系统节拍驱动系统节拍驱动系统节拍驱动。2.1 2.1 任务的基本概念任务的基本概念任务是具有规定执行时间的一段程序代码。由任务是具有规定执行时间的一段程序代码。由于任务运行时是完全占有于任务运行时是完全占有CPU时间片,因此可时间片,因此可认为是一个认为是一个“线程线程”。从应用程序的角度来看,从应用程序的角度来看,uC/OS-II的任务就是的任务就是一个线程,就是一个线程,就是C语言函数和与之相关联的数语言函数和与之相

32、关联的数据结构据结构构成的实体。构成的实体。从任务的从任务的存储结构存储结构来看,来看,uC/OS-II的任务由三的任务由三个组成部分构成:个组成部分构成:任务程序代码、任务堆栈和任务程序代码、任务堆栈和任务控制块。任务控制块。(a)任务的组成任务的代码任务的代码Voidmytask(void*pdata)For(;)任务堆栈任务堆栈前一个任务控制的指针前一个任务控制的指针后一个任务控制的指针后一个任务控制的指针指向任务的指针指向任务的指针指向任务堆栈的指针指向任务堆栈的指针任务的优先级别任务的优先级别任务控制块任务控制块任务任务(b)(b)任务链表任务链表任务任务控制块控制块任务任务代码代码

33、任务任务堆栈堆栈任务任务1 1任务任务控制块控制块任务任务代码代码任务任务堆栈堆栈任务任务2 2任务任务控制块控制块任务任务代码代码任务任务堆栈堆栈任务任务3 3任务任务控制块控制块任务任务代码代码任务任务堆栈堆栈任务任务n n图图2-1 uC/OS-II2-1 uC/OS-II的任务在内存中的结构的任务在内存中的结构2.1.1 2.1.1 任务的状态任务的状态uC/OS-II中的5种状态:睡眠状态:就绪状态:运行状态:等待状态:中断服务状态:2.1.1 2.1.1 任务的状态任务的状态uC/OS-II中的5种状态:睡眠状态:就绪状态:运行状态:等待状态:中断服务状态:任务只是以代码的形式驻任

34、务只是以代码的形式驻留在程序空间(留在程序空间(ROMROM或或RAMRAM),还没有交给操作),还没有交给操作系统管理时的情况叫做睡系统管理时的情况叫做睡眠状态。眠状态。简言之就是在内简言之就是在内存中的无任务控制块的任存中的无任务控制块的任务。务。OSTaskDel()OSTaskDel()OSTaskCreate()OSTaskCreate()OSTaskCreateExt()OSTaskCreateExt()2.1.1 2.1.1 任务的状态任务的状态uC/OS-II中的5种状态:睡眠状态:就绪状态:运行状态:等待状态:中断服务状态:任务任务配备了任务控制块配备了任务控制块且在任务就绪

35、表且在任务就绪表中进行了中进行了就绪登记就绪登记,任务具备了运行充,任务具备了运行充分条件,这是的任务状态叫就绪状态。分条件,这是的任务状态叫就绪状态。OSTaskCreate()OSTaskCreate()OSTaskCreateExt()OSTaskCreateExt()OSFlagPost()OSFlagPost()OSMboxPost()OSMboxPost()OSMboxPostOpt()OSMboxPostOpt()OSMutexPost()OSMutexPost()OSQPost()OSQPost()OSQPostFront()OSQPostFront()OSQPostOpy()

36、OSQPostOpy()OSSemPost()OSSemPost()OSTaskResume()OSTaskResume()OSTimeTick()OSTimeTick()OSStart()OSStart()OsIntExit()OsIntExit()OS_TASK_SW()OS_TASK_SW()2.1.1 2.1.1 任务的状态任务的状态uC/OS-II中的5种状态:睡眠状态:就绪状态:运行状态:等待状态:中断服务状态:处于就绪状态的任务如果处于就绪状态的任务如果经调度器判断获得了经调度器判断获得了CPUCPU的的的使用权,则任务就进入的使用权,则任务就进入运行状态。运行状态。任何时刻只能

37、有一个任务任何时刻只能有一个任务处于运行状态,就绪的任处于运行状态,就绪的任务只有当所有优先级高于务只有当所有优先级高于本任务的任务都转为等待本任务的任务都转为等待状态时,才进入运行状态。状态时,才进入运行状态。OSStart()OSStart()OsIntExit()OsIntExit()OS_TASK_SW()OS_TASK_SW()2.1.1 2.1.1 任务的状态任务的状态uC/OS-II中的5种状态:睡眠状态:就绪状态:运行状态:等待状态:中断服务状态:正在运行的任务,需要等待正在运行的任务,需要等待一段时间或需要等待一个事一段时间或需要等待一个事件发生再运行时,该任务就件发生再运行

38、时,该任务就会把会把CPUCPU的使用权让给其他任的使用权让给其他任务而使任务进入等待状态。务而使任务进入等待状态。OSFlagPend()OSFlagPend()OSMboxPend()OSMboxPend()OSMutexPend()OSMutexPend()OSQPend()OSQPend()OSSemPend()OSSemPend()OSTaskSuspend()OSTaskSuspend()OSTimeDly()OSTimeDly()OSTimeDlyHMSM()OSTimeDlyHMSM()2.1.1 2.1.1 任务的状态任务的状态uC/OS-II中的5种状态:睡眠状态:就绪状态

39、:运行状态:等待状态:中断服务状态:一个正在运行的一个正在运行的任务任务一旦响应一旦响应中断申请就会中断申请就会中止运行中止运行而去执而去执行中断服务程序,这时任务的行中断服务程序,这时任务的状态状态叫做中断服务状态。叫做中断服务状态。任务的运行状态任务的运行状态l每个任务都有确定的状态,而同时只能是一个任务占有每个任务都有确定的状态,而同时只能是一个任务占有CPUCPU;l拥有运行权的任务一定是就绪任务中优先级最高的。拥有运行权的任务一定是就绪任务中优先级最高的。睡眠睡眠状态状态就绪就绪状态状态运行运行状态状态等待等待状态状态ISRISR被删除的任务被删除的任务退出中断退出中断调度程序启动就

40、绪调度程序启动就绪的最高优先级任务的最高优先级任务被更高优先级的被更高优先级的任务抢夺运行权任务抢夺运行权刚创建的任务刚创建的任务等待某个事件等待某个事件事件发生或超时事件发生或超时进入中断进入中断用户任务代码的一般结构用户任务代码的一般结构1.1.任务一般结构任务一般结构任务的执行代任务的执行代码通常是一个码通常是一个无限循环结构,无限循环结构,并且在这个循并且在这个循环中可以响应环中可以响应中断,这种结中断,这种结构也叫超构也叫超循环循环结构结构。例例2-1:一个用:一个用C语言编写的任务语言编写的任务VoidMyTask(Void*pdata)for(;)可以被中断的用户代码;可以被中断

41、的用户代码;OS_ENTER_CRITICAL();/进入临界段进入临界段(关中断关中断)不可以被中断的用户代码;不可以被中断的用户代码;OS_EXIT_CRITICAL();/退出临界退出临界(开中断开中断)可以被中断的用户代码;可以被中断的用户代码;2、用户应用程序的一般结构 要在自己的系统中使用C/OS-II编写自己的应用程序,就必须遵守C/OS-II的编程规范。主要包括主函数和用户任务,它们的关系如下。Main函数初始化操作系统,并建立空闲任务创建根任务或更多的任务启动多任务环境根任务目标板初始化(启动系统时钟)创建其它的任务执行任务循环任务1执行特定操作执行任务循环任务n执行特定操作

42、执行任务循环.编写应用程序Main函数初始化操作系统,并建立空闲任务创建根任务或更多的任务启动多任务环境根任务目标板初始化(启动系统时钟)创建其它的任务执行任务循环任务1执行特定操作执行任务循环任务n执行特定操作执行任务循环.多任务共享系统资源,分时执行多任务共享系统资源,分时执行多任务共享系统资源,分时执行多任务共享系统资源,分时执行 要在自己的系统中使用C/OS-II编写自己的应用程序,就必须遵守C/OS-II的编程规范。主要包括主函数和用户任务,它们的关系如下。Main函数初始化操作系统,并建立空闲任务创建根任务或更多的任务启动多任务环境根任务目标板初始化(启动系统时钟)创建其它的任务执

43、行任务循环任务1执行特定操作执行任务循环任务n执行特定操作执行任务循环.多任务共享系统资源,分时执行多任务共享系统资源,分时执行多任务共享系统资源,分时执行多任务共享系统资源,分时执行 要在自己的系统中使用C/OS-II编写自己的应用程序,就必须遵守C/OS-II的编程规范。主要包括主函数和用户任务,它们的关系如下。编写应用程序Main函数初始化操作系统,并建立空闲任务创建根任务或更多的任务启动多任务环境Main函数初始化操作系统,并建立空闲任务创建根任务或更多的任务启动多任务环境#includeconfig.hOS_STKTaskStartStkTASK_STK_SIZE;OS_STKTas

44、kStkTASK_STK_SIZE;intmain(void)OSInit();OSTaskCreate(Task1,(void*)0,&TaskStartStkTASK_STK_SIZE-1,0);OSStart();return0;定义任务的堆栈编写应用程序根任务目标板初始化(启动系统时钟)创建其它的任务执行任务循环voidTask1(void*pdata)pdata=pdata;/*避免编译警告避免编译警告*/TargetInit();/*目标板初始化目标板初始化*/for(;)OSTimeDly(OS_TICKS_PER_SEC/50);if(GetKey()!=KEY1)contin

45、ue;OSTimeDly(OS_TICKS_PER_SEC/50);if(GetKey()!=KEY1)continue;OSTaskCreate(Task2,(void*)0,&TaskStkTASK_STK_SIZE-1,10);while(GetKey()!=0)OSTimeDly(OS_TICKS_PER_SEC/50);任务1执行特定操作执行任务循环将该任务放在循环中创建,是因为该任务执行一次后会自行删除编写应用程序任务1执行特定操作执行任务循环根任务目标板初始化(启动系统时钟)创建其它的任务执行任务循环voidTask1(void*pdata)pdata=pdata;/*避免编译警

46、告避免编译警告*/TargetInit();/*目标板初始化目标板初始化*/for(;)OSTimeDly(OS_TICKS_PER_SEC/50);if(GetKey()!=KEY1)continue;OSTimeDly(OS_TICKS_PER_SEC/50);if(GetKey()!=KEY1)continue;OSTaskCreate(Task2,(void*)0,&TaskStkTASK_STK_SIZE-1,10);while(GetKey()!=0)OSTimeDly(OS_TICKS_PER_SEC/50);将该任务放在循环中创将该任务放在循环中创建,是因为该任务执行建,是因为

47、该任务执行一次后会自行删除一次后会自行删除任务1执行特定操作执行任务循环/任务功能:鸣叫两声,然后删除自己任务功能:鸣叫两声,然后删除自己voidTask2(void*pdata)pdata=pdata;/*避免编译警告避免编译警告*/BeeMoo();/*使蜂鸣器鸣叫使蜂鸣器鸣叫*/*延时延时*/OSTimeDly(OS_TICKS_PER_SEC/8);BeeNoMoo();/*使蜂鸣器停止鸣叫使蜂鸣器停止鸣叫*/OSTimeDly(OS_TICKS_PER_SEC/4);BeeMoo();/*延时延时*/OSTimeDly(OS_TICKS_PER_SEC/8);BeeNoMoo();/

48、*使蜂鸣器停止鸣叫使蜂鸣器停止鸣叫*/OSTaskDel(OS_PRIO_SELF);/*删除自己删除自己*/2.1.3 2.1.3 系统任务系统任务uC/OS-IIuC/OS-II预定义了:预定义了:空闲任务空闲任务和和统计任务统计任务。1.1.空闲任务空闲任务OSTaskIdle()OSTaskIdle()空闲任务:运行系统中无应用空闲任务:运行系统中无应用任务时,任务时,uC/OS-IIuC/OS-II提供的一提供的一个占用个占用CPUCPU的任务,且级别最的任务,且级别最低,任何有用任务都可抢占低,任何有用任务都可抢占这一任务,这一任务叫这一任务,这一任务叫空闲空闲任务任务。空闲任务不

49、能用软件删除。空闲任务不能用软件删除。Void OSTaskIdle(void*pdata)Void OSTaskIdle(void*pdata)#if OS_CRITICAL_METHOD=3#if OS_CRITICAL_METHOD=3 OS_CPU_SR cpu_sr;OS_CPU_SR cpu_sr;#endif#endif pdata=pdata;/pdata=pdata;/防编择器报错防编择器报错 for(;)for(;)OS_ENTER_CRITICAL();/OS_ENTER_CRITICAL();/关闭中断关闭中断 OSdleCtr+;/OSdleCtr+;/计算计算 OS

50、_EXIT_CRITICAL();/OS_EXIT_CRITICAL();/开放中断开放中断 2.1.3 2.1.3 系统任务系统任务2.2.统计任务统计任务OSTaskStat()OSTaskStat()统计任务每秒计算一次统计任务每秒计算一次CPUCPU在单在单位时间内被使用的时间,并位时间内被使用的时间,并把计算结果以百分比的形式把计算结果以百分比的形式存放在变量存放在变量OSCPUsageOSCPUsage中。因中。因此叫统计任务。此叫统计任务。操作:操作:OS_CFG.HOS_CFG.H中的常数中的常数OS_TASK_STAT_EN=1;OS_TASK_STAT_EN=1;调用调用O

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁