嵌入式操作系统教程-第九章
嵌入式linux(贺丹丹等编著)课后习题答案

嵌入式linux(贺丹丹等编著)课后习题答案第八章一、填空题。
1、ARM-Linux内核的配置系统由三个部分组成,它们分别是Makefile、配置文件和配置工具。
2、配置工具一般包括配置命令解释器和配置用户界面,前者主要作用是对配置脚本中使用的配置命令进行解释;而后者则是提供基于字符界面、基于Ncurses图形界面以及基于X Window图形界面的用户配置界面。
3、Makefile文件主要包含注释、编译目标定义和适配段。
4、Linux内核常用的配置命令有make oldconfig、make config、make menuconfig和make xconfig。
其中以字符界面配置的命令是make config。
5、内核编译结束后,会在“/arch/arm/boot/”目录下面和根目录下面生成一个名为zImage的内核镜像文件。
二、选择题C AD D B三、叙述题1、Linux内核各个部分与内核源码的各个目录都是对应起来的,比如有关驱动的内容,内核中就都组织到“drive”这个目录中去,有关网络的代码都集中组织到“net”中。
当然,这里有的目录是包含多个部分的内容。
具体各个目录的内容组成如下:arch:arch目录包括了所有和体系结构相关的核心代码。
include:include 目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux 子目录下;init:init 目录包含核心的初始化代码(不是系统的引导代码),有main.c 和Version.c 两个文件;mm:mm 目录包含了所有的内存管理代码。
与具体硬件体系结构相关的内存管理代码位于arch/*/mm 目录下;drivers:drivers 目录中是系统中所有的设备驱动程序。
它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound;ipc:ipc 目录包含了核心进程间的通信代码;modules:modules 目录存放了已建好的、可动态加载的模块;fs:fs 目录存放Linux 支持的文件系统代码。
《嵌入式系统》课程教学大纲

《嵌入式系统》课程教学大纲学分:3学时:64适用专业:电子信息、通信技术前导课程:电路分析基础、模拟电路、数字电路、高频电路、单片机原理、C语言后续课程:一、课程的性质和任务本课程围绕目前流行的32位ARM处理器和嵌入操作系统,讲述嵌入式系统的概念、软硬件组成、开发过程以及嵌入式应用程序和驱动程序的开发设计方法。
《嵌入式系统》是培养学生具有嵌入式系统的应用知识、嵌入式系统的初步分析能力和具有使用RTOS (实时操作系统)构成嵌入式系统的应用能力等方面的学科,是电子信息与计算机类或相关工科专业的一门专业课。
二、课程的教学基本要求本课程是一门综合性、实践性、应用性很强的专业课。
课程教学所要达到的目的是:使学生掌握嵌入式系统体系结构,嵌入式处理器结构(ARM架构为主),异常处理、系统控制过程、存储处理、ARM内部资源、各种I/O接口;嵌入式系统开发应用方法;实时多任务操作系统。
本课程将为学生今后从事嵌入式系统研究与开发打下坚实的基础。
三、教学内容和要求(一)理论教学内容和要求第一章:嵌入式系统的概况1、讲授内容:主要讲解嵌入式系统的定义、嵌入式系统的分类、嵌入式系统的组成及嵌入式系统的应用领域和发展趋势。
2、基本要求:使学生明确学习本课程的目的。
第二章:嵌入式系统的硬件基本知识1、讲授内容:1、ARM体系的硬件架构2、冯.诺依曼体系结构和哈佛体系结构3、RISC体系结构4、流水线技术2、基本要求:了解嵌入式系统的硬件基础。
第三章:嵌入式操作系统1、讲授内容:1、嵌入式操作系统的分类2、嵌入式操作系统的特点3、实时操作系统4、目前市场上流行的嵌入式操作系统2、基本要求:掌握嵌入式操作系统的分类和特点,明确实时操作系统的内核特点第四章:ARM架构的嵌入式微处理器1、讲授内容:目前基于ARM架构的嵌入式微处理器:I44B0,2410,LPC2000的架构及特点。
2、基本要求:要求掌握不同处理的的特点及使用场合。
嵌入式系统设计大学教程_习题与解答71815

嵌入式系统设计大学教程习题与解答第1章嵌入式系统设计基本概念(绪论)1、嵌入式系统的定义是什么?你是如何理解嵌入式系统的? (P3)答:嵌入式系统一般定义为以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。
一个嵌入式系统就是一个硬件和软件的集合体,它包括硬件和软件两部分。
其中硬件包括嵌入式处理器/控制器/数字信号处理器(DSP)、存储器及外设器件、输入输出(I/O)端口、图形控制器等;软件部分包括操作系统软件(嵌入式操作系统)和应用程序(应用软件),由于应用领域不同,应用程序千差万别。
For personal use only in study and research; not for commercial use2、列出并说明嵌入式系统不同于其他计算机系统的主要特征。
(P3~P4)答:主要特征有:∙系统内核小:由于嵌入式系统一般是应用于小型电子装置,系统资源相对有限,所以内核较传统的操作系统要小得多。
∙For personal use only in study and research; not for commercialuse∙∙专用性强:嵌入式系统通常是面向特定任务的,个性化很强,其中软件系统和硬件的结合非常紧密,一般要针对硬件进行软件系统的移植。
∙运行环境差异大:嵌入式系统使用范围极为广泛,其运行环境差异很大。
∙可靠性要求高:嵌入式系统往往要长期在无人值守的环境下运行,甚至是常年运行,因此对可靠性的要求特别高。
∙For personal use only in study and research; not for commercial use∙∙系统精简和高实时性操作系统:∙具有固化在非易失性存储器中的代码:为了系统的初始化,几乎所有系统都要在非易失性存储器中存放部分代码(启动代码)。
为了提高执行速度和系统可靠性,大多数嵌入式系统常常把所有代码(或者其压缩代码)固化,存放在存储器芯片或处理器的内部存储器件中,而不使用外部存储介质。
《嵌入式系统基础教程》第09讲第5章ARM指令集特点寻址方式和指令

标志
C=1,Z=0 C=0,Z=l
N=V N!=V Z=0,N=V Z=1,N!=V 任何 ARMv3之前
含义
无符号数大于 无符号数小于或等于 有符号数大于或等于 有符号数小于 有符号数大于 有符号数小于或等于 无条件执行(指令默认条件) 该指令从不执行
2008年6月28日
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
《嵌入式系统基础教程 》第09讲第5章ARM指 令集特点寻址方式和指
令
2023/5/9
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
第5章 ARM指令集和汇编语言程序
l 本章主要介绍以下内容:
l ARM指令集的基本特点 l 与Thumb指令集的区别 l 与x86处理器的区别 l ARM指令格式
l 举例:
l SUB R1,R1,R2 ;R1-R2→R1 l MOV PC,R0 ;PC←R0,程序跳转到指定地址 l LDR R0,[R1],-R2
;读取R1地址上的存储器单元内容并存入R0, ;且R1=R1-R2,后索引偏移 l AND R0,R5,R2 ;R2中存放的是第2操作数 ;该数据属于寄存器方式的第2操作数
运算指令能够访问存储器
2008年6月28日
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
ARM指令集的编码格式
l 参看ARM指令集编码格式PDF文件
2008年6月28日
《嵌入式系统基础教程》第09讲第5 章ARM指令集特点寻址方式和指令
ARM指令集的语法
l 一条典型的ARM指令语法如下所示:
寄存器寻址
l 操作数的值在寄存器中,指令中的地址码字段指 出的是寄存器编号,指令执行时直接取出寄存器 值来操作。寄存器寻址指令举例如下:
《嵌入式系统开发与应用》教学教案

《嵌入式系统开发与应用》教学教案第一章:嵌入式系统概述1.1 教学目标让学生了解嵌入式系统的定义、特点和应用领域让学生掌握嵌入式系统的基本组成部分及其工作原理让学生了解嵌入式系统的发展趋势和未来发展方向1.2 教学内容嵌入式系统的定义和特点嵌入式系统的基本组成部分:处理器、存储器、输入输出接口等嵌入式系统的应用领域:家电、工业控制、医疗设备等嵌入式系统的发展趋势和未来发展方向1.3 教学方法采用讲授法,讲解嵌入式系统的定义、特点和应用领域采用案例分析法,分析具体的嵌入式系统应用实例采用小组讨论法,让学生分组讨论嵌入式系统的发展趋势和未来发展方向1.4 教学评价课堂问答:学生能够回答嵌入式系统的定义、特点和应用领域的问题案例分析报告:学生能够分析具体的嵌入式系统应用实例第二章:嵌入式处理器2.1 教学目标让学生了解嵌入式处理器的定义、分类和性能指标让学生掌握嵌入式处理器的基本组成和工作原理让学生了解嵌入式处理器的选择方法和应用领域2.2 教学内容嵌入式处理器的定义和分类:单片机、ARM、DSP等嵌入式处理器的主要性能指标:主频、缓存、功耗等嵌入式处理器的基本组成:内核、外围电路、接口等嵌入式处理器的选择方法和应用领域2.3 教学方法采用讲授法,讲解嵌入式处理器的定义、分类和性能指标采用实验演示法,展示嵌入式处理器的基本组成和工作原理采用案例分析法,分析具体的嵌入式处理器应用实例2.4 教学评价课堂问答:学生能够回答嵌入式处理器的定义、分类和性能指标的问题案例分析报告:学生能够分析具体的嵌入式处理器应用实例第三章:嵌入式操作系统3.1 教学目标让学生了解嵌入式操作系统的定义、特点和分类让学生掌握嵌入式操作系统的基本组成和工作原理让学生了解嵌入式操作系统的选择方法和应用领域3.2 教学内容嵌入式操作系统的定义和特点:实时性、小型化、可移植性等嵌入式操作系统的分类:裸机、实时操作系统、嵌入式中间件等嵌入式操作系统的基本组成:内核、驱动程序、应用程序等嵌入式操作系统的选择方法和应用领域3.3 教学方法采用讲授法,讲解嵌入式操作系统的定义、特点和分类采用实验演示法,展示嵌入式操作系统的基本组成和工作原理采用案例分析法,分析具体的嵌入式操作系统应用实例3.4 教学评价课堂问答:学生能够回答嵌入式操作系统的定义、特点和分类的问题案例分析报告:学生能够分析具体的嵌入式操作系统应用实例第四章:嵌入式系统设计与开发流程4.1 教学目标让学生了解嵌入式系统设计的任务和步骤让学生掌握嵌入式系统开发的基本流程和方法让学生了解嵌入式系统开发的工具和环境4.2 教学内容嵌入式系统设计的任务和步骤:需求分析、硬件选型、软件设计等嵌入式系统开发的基本流程:系统设计、硬件实现、软件开发等嵌入式系统开发的工具和环境:集成开发环境、编程语言、调试工具等4.3 教学方法采用讲授法,讲解嵌入式系统设计的任务和步骤采用实验演示法,展示嵌入式系统开发的基本流程和方法采用案例分析法,分析具体的嵌入式系统开发实例4.4 教学评价课堂问答:学生能够回答嵌入式系统设计的任务和步骤的问题案例分析报告:学生能够分析具体的嵌入式系统开发实例第五章:嵌入式系统应用实例分析5.1 教学目标让学生了解嵌入式系统在各个领域的应用实例让学生掌握第六章:嵌入式系统在家电领域的应用6.1 教学目标让学生了解嵌入式系统在家电领域的应用实例让学生掌握家电领域中嵌入式系统的解决方案和设计要点让学生了解家电领域中嵌入式系统的发展趋势6.2 教学内容嵌入式系统在家电领域的应用实例:电视、冰箱、空调等家电领域中嵌入式系统的解决方案和设计要点:人机界面设计、网络通信等家电领域中嵌入式系统的发展趋势:智能化、网络化、节能化等6.3 教学方法采用讲授法,讲解嵌入式系统在家电领域的应用实例采用案例分析法,分析具体的嵌入式系统在家电领域的应用实例采用小组讨论法,让学生分组讨论家电领域中嵌入式系统的发展趋势6.4 教学评价课堂问答:学生能够回答嵌入式系统在家电领域的应用实例的问题案例分析报告:学生能够分析具体的嵌入式系统在家电领域的应用实例第七章:嵌入式系统在工业控制领域的应用7.1 教学目标让学生了解嵌入式系统在工业控制领域的应用实例让学生掌握工业控制领域中嵌入式系统的解决方案和设计要点让学生了解工业控制领域中嵌入式系统的发展趋势7.2 教学内容嵌入式系统在工业控制领域的应用实例:PLC、等工业控制领域中嵌入式系统的解决方案和设计要点:实时性、稳定性等工业控制领域中嵌入式系统的发展趋势:自动化、智能化等7.3 教学方法采用讲授法,讲解嵌入式系统在工业控制领域的应用实例采用案例分析法,分析具体的嵌入式系统在工业控制领域的应用实例采用小组讨论法,让学生分组讨论工业控制领域中嵌入式系统的发展趋势7.4 教学评价课堂问答:学生能够回答嵌入式系统在工业控制领域的应用实例的问题案例分析报告:学生能够分析具体的嵌入式系统在工业控制领域的应用实例第八章:嵌入式系统在医疗设备领域的应用8.1 教学目标让学生了解嵌入式系统在医疗设备领域的应用实例让学生掌握医疗设备领域中嵌入式系统的解决方案和设计要点让学生了解医疗设备领域中嵌入式系统的发展趋势8.2 教学内容嵌入式系统在医疗设备领域的应用实例:心电监护仪、超声波设备等医疗设备领域中嵌入式系统的解决方案和设计要点:精度、可靠性等医疗设备领域中嵌入式系统的发展趋势:智能化、小型化等8.3 教学方法采用讲授法,讲解嵌入式系统在医疗设备领域的应用实例采用案例分析法,分析具体的嵌入式系统在医疗设备领域的应用实例采用小组讨论法,让学生分组讨论医疗设备领域中嵌入式系统的发展趋势8.4 教学评价课堂问答:学生能够回答嵌入式系统在医疗设备领域的应用实例的问题案例分析报告:学生能够分析具体的嵌入式系统在医疗设备领域的应用实例第九章:嵌入式系统在交通领域的应用9.1 教学目标让学生了解嵌入式系统在交通领域的应用实例让学生掌握交通领域中嵌入式系统的解决方案和设计要点让学生了解交通领域中嵌入式系统的发展趋势9.2 教学内容嵌入式系统在交通领域的应用实例:智能交通系统、车辆导航等交通领域中嵌入式系统的解决方案和设计要点:实时性、安全性等交通领域中嵌入式系统的发展趋势:智能化、高效化等9.3 教学方法采用讲授法,讲解嵌入式系统在交通领域的应用实例采用案例分析法,分析具体的嵌入式系统在交通领域的应用实例采用小组讨论法,让学生分组讨论交通领域中嵌入式系统的发展趋势9.4 教学评价课堂问答:学生能够回答嵌入式系统在交通领域的应用实例的问题案例分析报告:学生能够分析具体的嵌入式系统在交通领域的应用实例重点和难点解析一、嵌入式系统概述:理解嵌入式系统的定义、特点和应用领域,以及嵌入式系统的基本组成和工作原理。
嵌入式系统基础教程第2版_第09讲_第6章ARM汇编语言程序设计_111页

20XX年X季 第9讲
XXXX大学计算机系 XXXX主讲
教学主要内容
介绍第6章的以下内容
ARM汇编语言程序概述 ARM汇编语言指示符 ARM汇编语言指示符编程 ARM过程调用标准 典型的ARM汇编语言程序举例 ARM内嵌汇编 ARM汇编程序与C程序的混合编程 ARM汇编程序与C++程序的混合编程
a1-a4
入口参数,处理结果,暂存寄存器;r0-r3 的同义词
v1-v8
变量寄存器,r4-r11
sb and SB
静态基址寄存器,r9
sl and SL
栈界限寄存器,r10
fp and FP
帧指针寄存器,r11
ip and IP
内部过程调用暂存寄存器,r12
sp and SP 2014年12月5日
栈指针寄机械存工业出器版社,r13
CODE32
; 转入32位编译模式
|
; else
THUMBCODE SETL {FALSE} ; 设置THUMBCODE 为 false
]
[ THUMBCODE CODE32
]
;if THUMBCODE==TRUE ;for start-up code for Thumb mode ;转入32位编译方式
{CPU} {ARCHITECTUR
E} 2{01C4年O12D月E5日SIZE}
描述
当前指令地址
内存区位置计数器的当前值
逻辑值真
逻辑值假
汇编器如果在汇编ARM指令,取值为32,如果汇编Thumb指 令,取值16
如果汇编器是大端序,则取值big;如果是小端序,则取值 little。
被选择的CPU名称。缺省值是ARM7TDMI。 该变量内容是被选择的ARM体系结构的名称。如:3, 3M, 4T
嵌入式系统作业(第5~8章)-保证有正确答案

您的本次作业分数为:100分单选题1.致力于IP核质量衡量,提升IP核安全性和有关标准研发的组织不包括()。
A VSIAB OCP-IPC SPIRTD VCID正确答案:D单选题2.以下哪种方式不是Verilog对设计建模的方式()。
A 行为描述方式---用过程化结构建模B 接口描述方式---用模块化结构建模C 数据流方式---使用连续赋值语句方式建模D 结构化方式---用门和模块实例语句描述建模正确答案:B单选题3.XC系列FPGA是下列哪个公司的产品?A XilinxB AlteraC IntelD AMD正确答案:A单选题4.下列哪种存储设备在掉电情况下会丢失数据?A 内存B FlashMemoryC CF卡D 硬盘单选题5.Linux是UNIX类操作系统的一种,它对UNIX有很好的兼容性,下面不是它特点的是()。
A 实时性强B 互操作性强C 多硬件平台支持,多处理器支持。
D 内存保护模式,共享库支持,TCP/IP、SLIP和PPP支持。
正确答案:A单选题6.用来描述一个任务,使得任务得以独立运行的数据结构是()。
A TLBB TCBC BSPD 以上皆不是正确答案:B单选题7.设备名”/sd0”对应的设备类型是()。
A 串口设备B 软盘驱动器C 管道设备D SCSI设备正确答案:D单选题8.当任务等待的资源变得可用时,会触发的任务状态的转换是()。
A 运行-->阻塞B 阻塞-->就绪C 延迟-->就绪D 运行-->延迟单选题9.目前Leon系列处理器包括以下哪个型号()。
A Leon2B Leon1C Leon4D Leon5正确答案:A单选题10.VxWorks操作系统是WindRiver公司推出的一种32位嵌入式实时操作系统,下面不是它优点的是()。
A VxWorks源码开源,用户的开发成本低。
B 简洁、紧凑、高效的内核。
C 支持多任务,实时性强。
D 较好的兼容性和对多种硬件环境的支持。
嵌入式Linux系统开发教程参考答案

参考答案第一章p20一、填空题。
1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力以实现某些特定的功能。
2、目前国内对嵌入式系统普遍认同的定义是:以应用为中心、以计算机技术为基础、内核可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3、嵌入式系统一般由嵌入式计算机和执行部件组成,其中嵌入式计算机主要由四个部分组成,它们分别是:硬件层、中间层、系统软件层以及应用软件层。
4、嵌入式处理器目前主要有ARM、MIPS、Power PC、68K等,其中arm处理器有三大特点:体积小、低功耗、的成本和高性能,16/32位双指令集,全球合作伙伴众多。
5、常见的嵌入式操作系统有:Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。
6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。
二、选择题1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备:、存储器(SDRAM、ROM等)、设备I/O接口等。
(A)A、嵌入式处理器B、嵌入式控制器C、单片机D、集成芯片2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。
(D)A、分时多任务操作系统B、多任务操作系统C、实时操作系统D、实时多任务操作系统3、由于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是。
(B)A、PalmB、VxWorksC、LinuxD、WinCE4、嵌入式系统设计过程中一般需要考虑的因素不包括:()A、性能B、功耗C、价格D、大小5、在嵌入式系统中比较流行的主流程序有:()A、AngelB、BlobC、Red BootD、U-BootA DB ?A三、叙述题1、举例说明身边常用的嵌入式系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌 入 式 操 作 系 统 基 础
三、事件控制块
事件控制块的结构
typedef struct { void */ INT8U INT16U INT8U INT8U } OS_EVENT; *OSEventPtr; /* 指向消息或者消息队列的指针 */
OSEventTbl[OS_EVENT_TBL_SIZE]; /* 等待任务列表 OSEventCnt; OSEventType; OSEventGrp; /* 事件类型 */ */
22
嵌 入 式 操 作 系 统 基 础
第 九 章 任 务 的 同 步 与 d) { …… SetTaskPriority(RES_X_PRIO); //访问共享资源X SetTaskPriority(TASK_A_PRIO); ……
嵌 入 式 操 作 系 统 基 础
二、互斥型信号量
实现对共享资源的独占式处理。 解决任务的优先级反转:变量OSEventPtr占 16位,低8位作为信号量有效性的判断位; 高8位则存放任务运行后临时暂用的优先级 别。
3.发送一个信号量, OSSemPost() 发送一个信号量, 发送一个信号量 ()
任务获得信号量,并在访问共享资源结束以后,必须释 放信号量,此过程需调用函数OSSemPost()完成。
16
嵌 入 式 操 作 系 统 基 础
第 九 章 任 务 的 同 步 与 通 信
INT8U OSSemPost (OS_EVENT *pevent) { OS_ENTER_CRITICAL(); if (pevent->OSEventType != OS_EVENT_TYPE_SEM) { OS_EXIT_CRITICAL(); return (OS_ERR_EVENT_TYPE); } if (pevent->OSEventGrp) { OSEventTaskRdy(pevent, (void *)0, OS_STAT_SEM); OS_EXIT_CRITICAL(); OSSched(); return (OS_NO_ERR); } else { if (pevent->OSEventCnt < 65535) { pevent->OSEventCnt++; OS_EXIT_CRITICAL(); return (OS_NO_ERR); } else { OS_EXIT_CRITICAL(); return (OS_SEM_OVF); } } }
/* 计数器(当事件是信号量时) */ /* 等待任务所在的组
OSEventPtr指针,只有在所定义的事件是邮箱或者消息队 列时才使用。当所定义的事件是邮箱时,它指向一个消 息,而当所定义的事件是消息队列时,它指向一个数据 结构。
7
嵌 入 式 操 作 系 统 基 础
.OSEventTbl[] /.OSEventGrp 与前面提过的OSRdyTbl[]和
4
嵌 入 式 操 作 系 统 基 础
3.消息队列
若消息邮箱被定义成拥有若干个元素的数 组,用来传递多个消息的地址指针,这样消 息的数据结构称为消息队列。
4.事件的等待任务队列
两个功能: 对等待事件的所有记录进行登记并排序 允许任务有一定的等待时间
5
嵌 入 式 操 作 系 统 基 础
第 九 章 任 务 的 同 步 与 通 信
在可剥夺型内核中,当任务以独占方式使用共享资源时, 会出现低优先级任务先于高优先级任务而被运行的现象,这 种现象就成为任务优先级反转。
19
嵌 入 式 操 作 系 统 基 础
形成原因:使用信号量的任务是否能够运行时受任务的优先 级别以及是否占用信号量两个条件约束的,而信号量的约束 高于优先级别的约束。 解决方案:一旦获取信号量的任务投入运行,其将暂用最高 优先级别,直至任务执行完成。
2
嵌 入 式 操 作 系 统 基 础
1.信号量
互斥型信号量:通常表现为一个二值型信号,用一 位二进制位来表示(1/0),可以实现共享资源的独 占式占用。
信号量:通常表现为一个递减的计数器信号,可以 实现若干个同类资源的共享,提高资源使用效率。
3
嵌 入 式 操 作 系 统 基 础
2.消息邮箱
指向保存任务间传递信息的存储空间(缓存 区)的指针结构称为消息邮箱。
(1)
(2) (3) (4)
(5)
17
嵌 入 式 操 作 系 统 基 础
3.发送一个信号量, OSSemPost() 发送一个信号量, 发送一个信号量 ()
OS_EVENT *OSSemDel( OS_EVENT *pevent, Typedef struct{ INT16U OSCnt; INT8U opt, INTU8U OSEventb1[OS_EVENT_SIZE]; INT8U *err INT8U OSEventGrp; ); }OS_SEM_DATA;
函数作用:把变量OSEventGrp及任务等待表中的每一 位都清0,即令事件的任务等代表中不含有任何等待任 务。
9
嵌 入 式 操 作 系 统 基 础
void OSEventTaskWait (OS_EVENT *pevent) { OSTCBCur->OSTCBEventPtr = pevent; if ((OSRdyTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0) { OSRdyGrp &= ~OSTCBCur->OSTCBBitY; } pevent->OSEventTbl[OSTCBCur->OSTCBY] |= OSTCBCur->OSTCBBitX; pevent->OSEventGrp } |= OSTCBCur->OSTCBBitY; (3) (1) (2)
{
信号量 OS_EVENT *pevent; 创建 OS_ENTER_CRITICAL(); pevent = OSEventFreeList; (1) if (OSEventFreeList != (OS_EVENT *)0) { (2) OSEventFreeList = (OS_EVENT *)OSEventFreeList->OSEventPtr; } OS_EXIT_CRITICAL(); if (pevent != (OS_EVENT *)0) { (3) pevent->OSEventType = OS_EVENT_TYPE_SEM;(4) pevent->OSEventCnt = cnt; (5) OSEventWaitListInit(pevent); (6) } return (pevent); (7)
OSRdyGrp非常相像,只不过前两者包含的是等待某事件 的任务,而后两者包含的是系统中处于就绪状态的任务。 .OSEventCnt :当事件是一个信号量时,.OSEventCnt是用 于信号量的计数器。 .OSEventType: .OSEventType:定义了事件的具体类型。它可以是信号量 (OS_EVENT_SEM)、邮箱(OS_EVENT_TYPE_MBOX) 或消息队列(OS_EVENT_TYPE_Q)中的一种。用户要根 据该域的具体值来调用相应的系统函数,以保证对其进行 的操作的正确性。
3.信号量状态查询, OSSemQuery() 信号量状态查询, 信号量状态查询 ()
INT8U OSSemQuery( OS_EVENT *pevent, OS_SEM_DATA *pdata );
18
嵌 入 式 操 作 系 统 基 础
§9.3 任务优先级反转和互斥型信号量
一、任务优先级的反转现象
15
}
嵌 入 式 操 作 系 统 基 础
2.等待一个信号量,
OSSemPend()/OSSemAccept()
void OSSemPend(OS_EVENT *pevent, //信号量指针 INT16U timeout, INT8U *err); INT16U OSSEMAccept( OS_EVENT *PEVENT //信号量指针 ) //等待时限 //错误信息
第 九 章 任 务 的 同 步 与 通 信
8
嵌 入 式 操 作 系 统 基 础
四、事件控制块的基本操作函数
1.事件控制块的初始话函数
void OSEventWaitListInit (OS_EVENT *pevent) { INT8U i; pevent->OSEventGrp = 0x00; for (i = 0; i < OS_EVENT_TBL_SIZE; i++) { pevent->OSEventTbl[i] = 0x00; } }
4.等待超时的任务转为就绪态
void OSEventTO (OS_EVENT *pevent) { if ((pevent->OSEventTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0) { (1) pevent->OSEventGrp &= ~OSTCBCur->OSTCBBitY;
正在等待事件的任务在预先指定的时间内仍然没有 获取事件,这时需调用此函数来转换的它的状态。
12
嵌 入 式 操 作 系 统 基 础
五、空事件控制块的的组织
和任务控制块的组织结构类似:所有的事件控制 块也被组织成两个链表,当系统初始化时,通过控 制块指针OSEventPtr把所有的空时间控制块链接成 一个空事件控制块链表。
2.使一个任务进入等待状态的函数
当一个任务在请求一个事件而不能获得时,应把次任 务登记在时间的等待任务列表中,并把任务控制块中的任 务状态置为等待状态和吧任务置为非就绪任务