版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于ARM的嵌入式系统概述,哈尔滨工程大学计算机学院 硬件教学实验室,目 录,第1章 嵌入式系统综述 1.1嵌入式系统定义 1.2嵌入式系统结构及特征 1.3嵌入式系统应用 1.4嵌入式系统的发展趋势 第2章嵌入式微处理器 1.1嵌入式微处理器简介,目 录,2.2ARM微处理器体系结构 2.3S3C44B0X芯片简介 第3章 嵌入式操作系统综述 3.1嵌入式操作系统定义 3.2嵌入式操作系统的特点 3.3常用的嵌入式操作系统 3.4 RTOS选择原则 3.5 EOS的体系结构举例,目 录,3.6嵌入式操作系统的配置 3.7内核和应用程序的编译,加载执行 3.8驱动程序的开发和配置 第4章 基于
2、ARM的嵌入式应用系统开发 4.1嵌入式系统开发方法 4.2嵌入式系统开发的一般步骤 4.3基于ARM的嵌入式系统的设计要点,目 录,第5章 C/OS-II 5.1 C/OS-II简介 5.2C/OS-内核结构 5.3C/OS-任务管理、时间管理与任务通信与同步 第6章 实验内容 6.1 嵌入式系统硬件开发环境 6.2 嵌入式系统软件开发环境 6.3 键盘及LED驱动 6.4 电机转动控制 6.5 D/A接口 6.6 中断实验 6.7 选做实验,一、 嵌入式系统综述,什么是嵌入式系统?,IEEE(国际电气和电子工程师协会)定义Embedded System如下: Devices used to
3、 control, monitor, or assist the operation of equipment, machinery or plants”(用于控制、监视或者辅助操作机器和设备的装置),国内普遍认同的定义,“以应用为中心、以计算机技术为基础、软件硬件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。”,嵌入式系统的整体结构,嵌入式系统的几个重要特征,(1)系统内核小 由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小得多。 比如ENEA公司的OSE分布式系统,内核只有5K,而Windows的内核则要大得多。,(2)专用性强
4、嵌入式系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。 即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。 同时针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念。,(3)系统精简 嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。 (4)高实时性OS 这是嵌入式软件的基本要求,而且软件要求固态存储,以提高速度。软件代码要求高质量和高可靠性、实时性。,(5)嵌入式软件开发走向标准化
5、嵌入式系统的应用程序可以没有操作系统直接在芯片上运行。 为了合理地调度多任务、利用系统资源、系统函数以及和专家库函数接口,用户必须自行选配RTOS(RealTime Operating System)开发平台,这样才能保证程序执行的实时性、可靠性,并减少开发时间,保障软件质量。,嵌入式系统一般是专用系统,而PC是通用计算平台 嵌入式系统的资源比PC少得多 嵌入式系统软件故障带来的后果比PC机大得多 嵌入式系统一般采用实时操作系统 嵌入式系统大都有成本、功耗的要求 嵌入式系统得到多种微处理体系的支持 嵌入式系统需要专用的开发工具,嵌入式系统与PC之间的区别,典型嵌入式系统基本组成硬件,典型嵌入式
6、系统基本组成软件,嵌入式系统的体系结构举例,嵌入式系统主要应用领域,军事国防领域 民用电子装备及机电一体化设备 家用电器 消费类电子 移动计算设备 网络设备,嵌入式系统主要应用领域,嵌入式系统应用举例,嵌入式系统应用举例,嵌入式系统的发展趋势,功能更加复杂化 更加微型化(普遍化) 更加智能化 网络化,二、嵌入式微处理器 (ARM),主要内容,嵌入式微处理器简介 ARM微处理器体系结构 S3C44B0X芯片简介,(一)嵌入式微处理器简介,嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般就具备以下几个特点: 1)对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代
7、码和实时内核心的执行时间减少到最低限度。 2)具有功能很强的存储区保护功能。这是由于嵌入式系统的软件结构已模块化,而为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,同时也有利于软件诊断。 3)可扩展的处理器结构,以能最迅速地开展出满足应用的最高性能的嵌入式微处理器。 4)嵌入式微处理器必须功耗很。如需要功耗只有mW 甚至W级。,嵌入式微处理器的特点,ARM的由来,ARMAdvanced RISC Machines ARM32位RISC结构IP核提供商 ARM7TDMI (试验平台中的S3C44B0 x属于此类体系结构的微处理器) T:支持16为压缩指令集Thumb; D
8、:支持片上Debug; M:内嵌硬件乘法器(Multiplier) I: 嵌入式ICE,支持片上断点和调试点,ARM处理器系列,ARM处理器目前包括以下几个系列: ARM7系列 ARM9系列 ARM9E系列 ARM10E系列 ARM11系列 Intel的Xscale,ARM微处理器的应用选型,ARM微处理器内核的选择 系统的工作频率 芯片内存储器的容量 片内外围电路的选择,(二) ARM微处理器体系结构,主要内容,ARM编程模型 ARM指令系统,1、ARM的编程模型,ARM指令结构,跳转指令-1,跳转指令用于实现程序流程的跳转,在ARM 程序中有两种方法可以实现程序流程的跳转 使用专门的跳转指
9、令 直接向程序计数器PC 写入跳转地址值 通过向程序计数器PC 写入跳转地址值,可以实现在4GB 的地址空间中的任意跳转,在跳转之前结合使用 MOV LR,PC; 等类似指令,可以保存将来的返回地址值,从而实现在4GB 连续的线性地址空间的子程序调用 ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB 的地址空间的跳转,跳转指令-2,包括以下四类指令: B 条件 目标地址 BL 条件 目标地址 跳转之前,会在寄存器R14 中保存PC 的当前内容,因此,可以通过将R14 的内容重新加载到PC 中,来返回到跳转指令之后的那个指令处执行。该指令是实现子程序调用的一个基本但常用的手段 BL
10、X 条件 目标地址 可用于在ARM态和Thumb态之间切换 BX 条件 目标地址 注:各类指令的详细说明可参考实验指导书的附录2,乘法指令与乘加指令-1,ARM 微处理器支持的乘法指令与乘加指令共有6 条,可分为运算结果为32 位和运算结果为64 位两类 与前面的数据处理指令不同,指令中的所有操作数、目的寄存器必须为通用寄存器,不能对操作数使用立即数或被移位的寄存器,同时,目的寄存器和操作数1 必须是不同的寄存器。,乘法指令与乘加指令-2,一共有6条: MUL条件S 目的寄存器,操作数1,操作数2 MLA条件S 目的寄存器,操作数1,操作数2,操作数3 SMULL条件S 目的寄存器Low,目的
11、寄存器低High,操作数1,操作数2 SMLAL条件S 目的寄存器Low,目的寄存器低High,操作数1,操作数2 UMULL条件S 目的寄存器Low,目的寄存器低High,操作数1,操作数2 UMLAL条件S 目的寄存器Low,目的寄存器低High,操作数1,操作数2,程序状态寄存器访问指令,一共两条指令: MRS条件 通用寄存器,程序状态寄存器(CPSR 或SPSR) MSR条件 程序状态寄存器(CPSR 或SPSR)_,操作数,加载/存储指令 -1,ARM 微处理器支持加载/存储指令用于在寄存器和存储器之间传送数据 加载指令用于将存储器中的数据传送到寄存器,存储指令则完成相反的操作,加载
12、/存储指令 -2,常用的加载与存储指令有以下6条: LDR条件 目的寄存器, LDR条件B 目的寄存器, LDR条件H 目的寄存器, STR条件 源寄存器, STR条件B 源寄存器, STR条件H 源寄存器,,批量数据加载/存储指令 -1,ARM 微处理器所支持批量数据加载/存储指令可以一次在一片连续的存储器单元和多个寄存器之间传送数据 批量加载指令用于将一片连续的存储器中的数据传送到多个寄存器,批量数据存储指令则完成相反的操作,批量数据加载/存储指令 -2,常用的有两条指令: LDM 条件类型 基址寄存器!,寄存器列表 STM 条件类型 基址寄存器!,寄存器列表。其中类型包括: IA: 每次
13、传送后地址加1 IB 每次传送前地址加1 DA 每次传送后地址减1 DB 每次传送前地址减1 FD 满递减堆栈; ED 空递减堆栈; FA 满递增堆栈; EA 空递增堆栈;,数据交换指令,有两条指令: SWP条件 目的寄存器,源寄存器1,源寄存器2 SWP条件B 目的寄存器,源寄存器1,源寄存器2,移位指令,共有5条移位指令: 通用寄存器,LSL(或ASL) 操作数 通用寄存器,LSR 操作数 通用寄存器,ASR 操作数 通用寄存器,ROR 操作数 通用寄存器,RRX 操作数,协处理器指令,共有5条指令: CDP条件 协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理器
14、操作码2 LDC条件L 协处理器编码,目的寄存器,源寄存器 STC条件L 协处理器编码,源寄存器,目的寄存器 MCR条件 协处理器编码,协处理器操作码1,源寄存器,目的寄存器1,目的寄存器2,协处理器操作码2 MRC条件 协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理器操作码2,异常产生指令,共有两条指令: SWI条件 24 位的立即数 BKPT 16 位的立即数,ARM汇编器支持的伪指令,符号定义(Symbol Definition)伪指令 数据定义(Data Definition)伪指令 汇编控制(Assembly Control)伪指令 其他常用的伪指令 注:
15、详细指令说明请参考实验指导书附录2,AREA HelloW,CODE,READONLY ;声明代码区 SWI_WriteC EQU 读取下一字节 CMP r0,#0 ;检查文本终点 SWINE SWI_WriteC ;若非终点,则打印 BNE LOOP ;并返回LOOP SWI SWI_Exit ;执行结束 TEXT = “Hello World”,编译源文件 $gcc o hello.o ;声称目标代码 对整个软件系统编译也可使用GCC编译器,可通过编写makefile文件来实现简洁的软件系统编译过程,并使用Make命令来实现软件系统的编译,内核和应用程序的编译-3uClinux,makef
16、ile文件的功能是告诉编译器编译的规则,如,如何编译源文件*.c与*.v,如何由*.c, *.v或其他目标代码生成目标代码*.o,如何生成可执行文件 最终编译整个系统需要依次执行以下命令: 1. make dep ;寻找依赖关系 2. make clean ;清除中间的临时文件 3. make lib_only ;编译库文件 4. make user_only ; 编译用户应用程序文件 5. make romfs ; 生成romfs文件系统 6. make image ;生成映像文件的目标文件 7. make ;生成最终的可执行映像文件,内核的加载执行,将生成的可执行映像文件下载到目标板上,需
17、要烧写到ROM或者Flash中 reset目标板运行即可运行烧进去的程序,并验证功能的正确性,UP-NETARM3000应用系统的编译与执行,编译使用SDT或者ADS即可生成可执行文件 通过USB口,可像访问U盘的方式一样,把可执行的文件拷贝到flash中,reset目标板执行即可 注意:需要把生成的可执行文件名称设成开发环境配置中指定的名称,如system.bin(.bin为二进制文件),驱动程序的开发和配置嵌入式Linux,驱动程序的编写主要是通过对相应设备的控制寄存器进行控制,从而实现设备数据寄存器的读写,达到数据传输和设备控制的目的,一般的驱动程序开发过程可总结为以下几个步骤: 1、编
18、写字符设备驱动程序,如leddrv.c 2、将设备驱动程序拷贝到/drivers/char下 3、修改当前目录下的makefile文件,在合适的位置添加: obj -$(CONFIG_LEDDRV) +=leddrv.o 4、修改当前目录下的Config.in文件,在合适的位置添加: bool Support LED Driver CONFIG_LEDDRV 5、在Vendors/Samsung/44B0X/Makefile文件的Devices里添加: leddrv,c,254,0 6、在make menuconfig 选择该项 7、编译内核,在/romfs下可以看到新的设备驱动程序 8、下载
19、内核到目标板,在/dev下可以看到新的设备驱动程序,四、基于ARM的嵌入式应用系统开发,嵌入式系统开发方法-1,嵌入式系统的开发一般是在一个交叉编译的环境下实现(参见下页图) 软件的编写与编译工作在一台PC机(宿主机)上进行 调试需要联机进行,即通过JTAG和开发环境的调试工具将目标程序下载到目标板(目标机)上运行将运行和调试的结果返回到PC机来观测运行的结果是否正确(如通过Windows系统的超级终端) ,是否满足性能上的要求等 调试结束了再将编译生成的可执行目标程序下载到目标板上运行,并进一步进行测试,嵌入式系统开发方法-2,next ,嵌入式系统开发的一般步骤-1,(1)系统需求分析:确
20、定设计任务和设计目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准。系统的需求一般分功能性需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能需求包括系统性能、成本、功耗、体积、重量等因素。 (2)体系结构设计:描述系统如何实现所述的功能和非功能需求,包括对硬件、软件和执行装置的功能划分以及系统的软件、硬件选型等。一个好的体系结构是设计成功与否的关键。,嵌入式系统开发的一般步骤-2,(3)硬件/软件协同设计:基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。应该说,嵌入式系统设计的工作大部分都集中在软件设计上,采用
21、面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方法。 (4)系统集成:把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。 (5)系统测试:对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。,嵌入式系统开发的一般步骤-3,我们所进行的实验是基于博创公司的ARM3000实验台,所以只需要进行功能实现的软件设计,不需要设计硬件系统,另外,操作系统已经针对硬件环境作了相应的修改,所以只要求编写应用软件实现需求分析中应实现的功能。相应的软件设计流程参见下页图,嵌入式系统开发的一般步骤-4,next ,基于ARM的嵌入式系统的设计要点系统初始化
22、过程-1,基于ARM微处理器的系统一般为复杂的片上系统(SoC),这种复杂系统的多数硬件模块都是可配置的,需要软件设置为特定的工作状态,因此在用户的应用程序之前,需要有一些专门的代码完成对系统的初始化 由于这类代码直接面对ARM微处理器内核和硬件控制器,一般都使用汇编语言完成,初始化代码所完成的操作与具体的硬件平台相关,但一般包括如下内容: 初始化异常向量表(中断向量表) 初始化存储器系统 初始化堆栈 初始化有特殊要求的端口、设备 初始化应用程序的运行环境 改变处理器的运行模式 调用主应用程序,基于ARM的嵌入式系统的设计要点系统初始化过程-2,初始化异常向量表(中断向量表)-1,ARM微处理
23、器架构要求中断向量表必须放置在从0 x0地址开始的连续84字节的空间内。每当一个中断(异常)发生以后,ARM微处理器便强制把PC置为对应的中断向量。 由于每个中断只占用向量表中1个字(4字节)的存储空间,只能放一条ARM指令,所以通常为跳转指令,使程序从向量表跳转到存储器的其他位置,执行真正的中断处理。,程序的具体实现举例: AREA Init, CODE, READONLY ENTRY B Reset_Handler ;复位异常 B Undef_Handler ;未定义指令异常 B SWI_Handler ;软件中断 B PreAbort_Handler ;指令预取中止 B DataAbor
24、t_Handler ;数据中止 B . ;系统保留 BIRQ_Handler ;普通外部中断 BFIQ_Handler ;快速外部中断 Reset_Handler .,初始化异常向量表(中断向量表)-2,初始化存储器系统-1,初始化存储器系统主要是对系统存储器控制器的初始化。由于存储器控制器并不是ARM架构的一部分,不同芯片的实现方式各不相同。 由于运算能力和寻址能力的强大,基于ARM微处理器的系统一般都需要外扩各种类型的存储器。 对于存储器系统的初始化一般包括如下几个方面: 存储器类型、时序和总线宽度的配置 存储器地址的配置,存储器类型:基于ARM微处理器系统的存储器一般有如下几类:SRAM
25、、DRAM、Flash,同时,即使同类存储器也有访问速度上的不同。其中,SRAM和Flash属于静态存储器,可以共用存储器端口,而DRAM有动态刷新和地址复用等特征,需要专门的存储器端口。 时序:存储器端口的接口时序优化对系统性能的影响非常大,因为系统运行的速度瓶颈一般都存在于存储器的访问,因此希望存储器的访问尽可能快,但又要考虑由此带来的系统稳定性问题。 总线宽度:ARM微处理器架构支持8/16/32位的数据总线宽度访问存储器和外设,对于特定的存储器来说,需要设定数据总线的宽度。,初始化存储器系统-2,存储器地址的配置:ARM微处理器架构理论上可支持4GB的地址空间,而对于一个实际的系统来说
26、,配置的物理存储器远没有这么多,因此,如何配置存储器的地址,也是一个重要的问题 存储器地址重映射(Memery Remap):存储器地址重映射就是可以通过软件配置来改变一块存储器物理地址的方法,是当前许多先进控制器所具有的功能。 进行存储器地址重映射的原因:提高系统的运行效率。 进行存储器地址重映射应注意的问题:保证程序流程的连续性 不具备存储器地址重映射功能的系统:有的ARM微处理器不具有地址重映射的功能,可以采用代码搬移加跳转的方式完成上述功能,初始化存储器系统-3,初始化堆栈-1,由于ARM微处理器有7 种运行状态,每一种状态的堆栈指针(SP)都是独立的(其中System和User模式使
27、用相同的SP)。因此,需要对每一种模式的SP进行初始化 采用的方法是:改变当前程序状态寄存器(CPSR)内的状态位,使处理器切换到不同的状态,然后初始化SP。 对User模式下SP的初始化应该放在最后,因为ARM微处理器进入User模式后就无法在切换到其他模式了。 设置堆栈应注意的问题:堆栈的大小根据需要确定,要尽可能给堆栈分配高速存储器(如片内SRAM)。 堆栈性能的提高对提高系统整体性能的影响非常显著。,堆栈初试化代码示例: MRS R0,CPSR ;CPSR-R0 BIC R0,R0,#MODEMASK;MODEMASK=0 x1F,清除R0的低5位(模式位) ORR R1,R0,#IR
28、QMODE ;IRQMODE =0 x12 MSR CPSR_c,R1 ;切换到IRQ模式 LDR SP,=IRQStack ;IRQStack对应具体存储空间。 BIC R0,R0,#MODEMASK;MODEMASK=0 x1F,清 除R0的低5位(模式位) ORR R1,R0,#FIQMODE ;IRQMODE =0 x11 MSR CPSR_c,R1 ;切换到IRQ模式 LDR SP,=FIQStack ;FIQStack对应具体存储空间 .,初始化堆栈-2,初始化有特殊要求的端口、设备及应用程序的运行环境,该部分的初始化由具体的系统和用户需求决定,一般的外设初始化可放在系统初始化以后
29、进行。 比较典型的应用是驱动一些简单的输出设备,如LED等,用来指示系统启动的进程和状态。 初始化应用程序的运行环境,就是完成必要的从ROM到RAM的数据传输。,各处理器模式的初始化,微处理器支持7 种: User、FIQ、IRQ、Supervisor、Abort、Undef、System,调用主应用程序,当完成所有的系统初始化工作之后,就需要把程序流程转入主应用程序。最常见的操作是: IMPORT C_Entry B C_Entry,异常处理程序的设计-1,异常(中断)是用户程序的一种基本执行流程,ARM微处理器架构共支持7种类型的异常,按优先级由高到低排列如下: Reset ;0 x0 D
30、ata Abort;0 x10 FIQ;0 x1C IRQ;0 x18 PreAbort;0 x0C SWI;0 x08 Undef;0 x04,其中,FIQ和IRQ与我们通常所说的中断相似,但对于一个特定的系统来说,中断源可能有很多,以此,在多数情况下需要用软件来处理异常分支。 当异常发生时,ARM内核完成如下动作: 拷贝CPSR到SPSR_ 设置适当的CPSR位(ARM状态位、相应的模式位、禁止中断使能位) 更新LR_ 设置PC为相应的异常向量,异常处理程序的设计-2,进入异常后软件的任务: 保护现场 清除对应的中断状态标识,表明该中断请求已得到响应。 根据中断源标识,分别进行处理 IRQ
31、中断处理程序结构示例 IRQ_Handler: switch(int_sourse) case 1: case 2: ,异常处理程序的设计-3,从异常返回: 恢复现场 恢复状态寄存器 恢复PC指针 程序示例: IRQ_Handler STMFDSP!,R0-R12,LR;保护现场 BLIrqHandler;进入处理函数 LDMFDSP!,R0-R12,LR;恢复现场 SUBSPC,LR,#4;中断返回,异常处理程序的设计-4,五、 C/OS-II,主要内容, C/OS-II简介 C/OS-内核结构 C/OS-任务管理、时间管理与任务通信与同步,(一) C/OS-II简介,C/OS的由来,1、C
32、/OSMicro Controller O S,微控制器操作系统 2、 C/OS简介 美国人Jean Labrosse 1992年完成 应用面覆盖了诸多领域,如照相机、医疗器械、音响设备、发动机控制、高速公路电话系统、自动提款机等 1998年C/OS-II,目前的版本C/OS -II V2.61 2000年,得到美国航空管理局(FAA)的认证,可以用于飞行器中 网站www.ucos-II.com(),C/OS-II的特点-1,源代码公开,且清晰易读:uC/OSII V2.0的源代码约为5500行,完全公开、且结构协调,清晰易读,注释详尽。 可移植性(Portable):uC/OSII 源代码绝
33、大部分用移植性很强的ANSI C写成,与微处理器硬件相关的汇编代码已压缩到最低程度以便uC/OSII 在其他微处理器上的移植。uC/OSII 可以在绝大多数8位、16位、32位以至64位微处理器、微控制器及DSP上运行。 可固化、可裁减(ROMable、Scalable):uC/OSII 源代码可编译成二进制代码固化到系统的ROM中运行,同时,用户可以只使用所需要的服务。可裁减靠条件编译实现。,C/OS-II的特点-2,可剥夺性(Preemptive):uC/OSII 是完全可剥夺型的实时内核,即uC/OSII总是运行就绪条件下优先级最高的任务。 多任务(Multi-task):uC/OSII
34、可以支持64个任务的运行,但系统保留8个,因此,用户应用程序最多可以有56个任务,且赋予每个任务的优先级应各不相同。uC/OSII不支持时间片轮转调度(Round-robin scheduling),该调度法适合于优先级平等的任务。 稳定性和可靠性:uC/OSII 源代码稳定性和可靠性,已经过数百个商业应用证明。同时,FAA的认证表明,uC/OSII具有足够的安全性和可靠性。,C/OS-II提供的系统服务,信号量 带互斥机制的信号量 减少优先级倒置的问题 事件标志 消息信箱 消息队列 内存管理 时钟管理 任务管理,(二)C/OS-内核结构,C/OS-II的文件结构,内核(core) 任务管理(
35、task) 时间管理(time) 任务之间通信与同步(消息队列Q、邮箱MBOX与信号量SEM) 内存管理(Mem) C/OSII的移植相关的模块(CPU) 注:对C/OSII有兴趣的同学,可找老师拷贝邵贝贝翻译的电子版C/OSII译著,C/OS-II的内核结构,任务task,典型的任务一个无限循环。 void mytask(void *pdata) for (;) do something; waiting; do something; C/OS II 2.5版本支持64个任务,每个任务一个特定的优先级。优先级越高,数字越小。 系统占用了8个任务,保留优先级为0、1、2、3、OS_LOWEST
36、_PRIO-3、 OS_LOWEST_PRIO-2、 OS_LOWEST_PRIO-1、 OS_LOWEST_PRIO-0。,空闲任务OSTaskIdle(),任务状态,任务控制块(TCB),任务控制块 OS_TCB是一个数据结构,保存该任务的相关参数,包括任务堆栈指针,状态,优先级,任务表位置,任务链表指针等。 所有的任务控制块分为两条链表,空闲链表和使用链表。,任务级的任务调度-OSSched,C/OS是占先式实时多任务内核,优先级最高的任务一旦准备就绪,则拥有CPU的所有权开始投入运行。 C/OS中不支持时间片轮转法,每个任务的优先级要求不一样且是唯一的,所以任务调度的工作就是:查找准备就绪的最高优先级的任务并进行上下文切换。 C/OS任务调度所花的时间为常数,与应用程序中建立的任务数无关。,C/OS-II中的中断,中断:由于某种事件的发生,而导致程序流程的改变。产生中断的事件称为中断源。 CPU响应中断的条件: 至少有一个中断源向CPU发出中断信号; 系统允许中断,且对此中断信号未予屏蔽 中断类型: 硬件中断 外部中断 陷井中断 现场控制量的中断,C/OS-II初始化,首先调用系统初始化函数OSIint()。OSIint()初始化C/OS-所有的变量和数据结构(见OS_CORE.C)。 OSInit()建立空闲任
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大庆职业学院单招职业倾向性测试题库参考答案详解
- 2026年宁波城市职业技术学院单招职业技能考试题库及参考答案详解
- 2026年武汉海事职业学院单招职业适应性考试题库及完整答案详解1套
- 2026年上海财经大学浙江学院单招职业技能测试题库参考答案详解
- 2026年郑州工商学院单招综合素质考试题库附答案详解
- 2026年南京铁道职业技术学院单招职业适应性测试题库带答案详解
- 2026年广东环境保护工程职业学院单招综合素质考试题库及参考答案详解一套
- 2026年安徽机电职业技术学院单招职业倾向性考试题库带答案详解
- 2026年天津电子信息职业技术学院单招职业倾向性考试题库及参考答案详解
- 王维《使至塞上》课件
- 2025年全国矿山安全生产事故情况
- 船舶安全奖惩管理制度
- 印刷ctp制版管理制度
- T-CWAN 0063-2023 焊接数值模拟热弹塑性有限元方法
- 2024鄂尔多斯市东胜国有资产投资控股集团有限公司招聘26人笔试参考题库附带答案详解
- 外研版(三起)(2024)三年级下册英语Unit 5 单元测试卷(含答案)
- 幼儿园防食物中毒安全主题
- 我的家乡四川南充
- 市场拓展与销售渠道拓展方案
- 工地大门施工协议书
- 文史哲与艺术中的数学智慧树知到期末考试答案章节答案2024年吉林师范大学
评论
0/150
提交评论