Nucleus实时操作系统分析报告

合集下载

Nucleus实时操作系统分析报告

Nucleus实时操作系统分析报告

目录一、NUCLEUS的内核(KERNEL) (3)1.1 系统启动 (3)1.2 初始化线程 (4)1.3 线程调度 (4)1.3.1 任务的调度 (5)1.3.2 中断的调度 (9)1.3.3 操作系统数据结构的保护 (14)1.4 任务间通信 (16)1.4.1 消息管道(Pipes) (17)1.5 任务的同步 (21)1.6 定时器 (21)1.7 内存管理 (22)1.8 输入/输出设备驱动 (23)N UCLEUS内核总结: (23)二、NUCLEUS的开发工具 (25)2.1 N UCLEUS C++ (25)2.2 N UCLEUS MNT (25)2.3 N UCLEUS VNET (25)2.4 N UCLEUS PC+ (25)2.5 N UCLEUS FILE (25)2.6 N UCLEUS CLIB (26)2.7 N UCLEUS GRAFIX (26)2.8 N UCLEUS EDE (26)2.9 N UCLEUS UDB (27)2.10 N UCLEUS DEBUG+ (27)2.11 第三方产品的支持 (29)2.12 SDS S INGLE S TEP (29)三、NUCLEUS的网络支持 (31)3.1 I NTERNET套件 (31)Nucleus NET (31)Nucleus SNMP (31)Nucleus RMON (32)Nucleus SP AN (32)3.2 N UCLEUS W EB S ERV (32)3.3 N UCLEUS J VI (32)3.4 N UCLEUS EPILOGUE (32)Nucleus实时操作系统是Accelerater Technology公司开发的嵌入式RTOS产品,只需一次性购买Licenses,就可以获得操作系统的源码。

Nucleus购买的灵活性比较大:Kernel,Networking,File System,Web Technology,Target Debugger可以分开购买,如果我们只需要微内核的话只要购买Kernal和Debugger,当前的下位机就是这样配置的。

操作系统实验报告6

操作系统实验报告6

操作系统实验报告6一、实验目的本次操作系统实验的主要目的是深入了解和掌握操作系统中进程管理、内存管理、文件系统等核心概念和相关技术,通过实际操作和观察,增强对操作系统工作原理的理解,并提高解决实际问题的能力。

二、实验环境本次实验使用的操作系统为 Windows 10,实验工具包括 Visual Studio 2019 等。

三、实验内容(一)进程管理实验1、创建多个进程,并观察它们的运行状态和资源占用情况。

通过编写简单的C++程序,使用Windows API 函数创建多个进程。

在程序中,设置不同的进程优先级和执行时间,观察操作系统如何调度这些进程,以及它们对 CPU 使用率和内存的影响。

2、进程间通信实现了进程间的管道通信和消息传递。

通过创建管道,让两个进程能够相互交换数据。

同时,还使用了 Windows 的消息机制,使进程之间能够发送和接收特定的消息。

(二)内存管理实验1、内存分配与释放使用 C++的动态内存分配函数(如`malloc` 和`free`),在程序运行时动态申请和释放内存。

观察内存使用情况,了解内存碎片的产生和处理。

2、虚拟内存管理研究了 Windows 操作系统的虚拟内存机制,通过查看系统的性能监视器,观察虚拟内存的使用情况,包括页面文件的大小和读写次数。

(三)文件系统实验1、文件操作进行了文件的创建、读取、写入、删除等基本操作。

通过编写程序,对不同类型的文件(如文本文件、二进制文件)进行处理,了解文件系统的工作原理。

2、目录操作实现了目录的创建、删除、遍历等功能。

了解了目录结构在文件系统中的组织方式和管理方法。

四、实验步骤(一)进程管理实验步骤1、打开 Visual Studio 2019,创建一个新的 C++控制台项目。

2、在项目中编写代码,使用`CreateProcess` 函数创建多个进程,并设置它们的优先级和执行时间。

3、编译并运行程序,通过任务管理器观察进程的运行状态和资源占用情况。

嵌入式实时操作系统实验报告

嵌入式实时操作系统实验报告

嵌入式操作系统实验报告系别:班级:学号:姓名:2013.12实验一嵌入式开发环境的建立一、实验目的通过此实验系统,读者可以了解嵌入式实时操作系统uC/OS-II 的内核机制和运行原理。

本实验系统展示了uC/OS-II 各方面的管理功能,包括信号量、队列、内存、时钟等。

在各个实验中具体介绍了uC/OS-II 的相关函数。

读者在做实验的同时能够结合理论知识加以分析,了解各个函数的作用和嵌入式应用程序的设计方法,最终对整个uC/OS-II 和嵌入式操作系统的应用有较为清楚的认识。

二、实验步骤1. 安装集成开发环境LambdaEDU集成开发环境LambdaEDU 的安装文件夹为 LambdaEDU ,其中有一个名为“Setup.exe”的文件,直接双击该文件便可启动安装过程。

具体的安装指导请看“LambdaEDU 安装手册.doc”文件。

当 LambdaEDU 安装完毕之后,我们看到的是一个空的界面,现在就开始一步一步地将我们的实验项目建立并运行起来。

2. 建立项目为了我们的实验运行起来,需要建立1 个项目基于x86 虚拟机的标准应用项目。

通过点击“文件”、“新建”、“项目”开始根据向导创建一个项目。

在随后出现的对话框中选择“Tool/标准应用项目”,点击下一步,开始创建一个标准的可执行的应用程序项目。

在随后出现的对话框中填入项目名称“ucos_x86_demo”。

点击“下一步”。

选择“pc386 uC/OS-II 应用(x86)”作为该项目的应用框架。

点击“下一步”选择“pc386_elf_tra_debug”作为该项目的基本配置。

点击“完成”。

新创建的项目“ucos_x86_demo”将会被添加到项目列表。

src 文件夹下保存了该项目中包含的源文件。

ucos2 文件夹中包含了移植到x86 虚拟机的全部代码。

init.c 文件是基于ucos2和本虚拟机的一个应用程序。

在进行ucos2 内核实验中,只需要替换init.c 文件,即可。

Linux操作系统实验总结分析报告

Linux操作系统实验总结分析报告

Linux操作系统实验总结分析报告从系统的⾓度分析影响程序执⾏性能的因素1.Linux系统概念模型从全局的⾓度来看,Linux系统分为内核空间和⽤户空间,但毫⽆疑问内核空间是Linux系统的核⼼,因为内核负责管理整个系统的进程、内存、设备驱动程序、⽂件,决定着系统的性能和稳定性。

于是从这个⾓度我构建的Linux系统的概念模型如下图所⽰:此模型将Linux系统主要划分为四个模块:内存管理、进程管理、设备驱动程序、⽂件系统。

这四个部分也是⼀个操作系统最基本也是最重要的功能。

2.概念模型解析2.1 内存管理Linux系统采⽤虚拟内存管理技术,使得每个进程都有各⾃互不⼲涉的进程地址空间。

该空间是块⼤⼩为4G的线性虚拟空间,⽤户所看到和接触到的都是该虚拟地址,⽆法看到实际的物理内存地址。

利⽤这种虚拟地址不但能起到保护操作系统的效果(⽤户不能直接访问物理内存),⽽且更重要的是,⽤户程序可使⽤⽐实际物理内存更⼤的地址空间。

内存管理主要有分为如下⼏个功能:地址映射、虚拟地址管理、物理内存管理、内核空间管理、页⾯换⼊换出策略和⽤户空间内存管理,这些模块的架构图如下所⽰:2.2 进程管理进程管理是Linux系统⾮常重要的⼀部分,进程管理虽然不像内存管理、⽂件系统等模块那样复杂,但是它与其他⼏个模块的联系是⾮常紧密的。

进程管理主要包括进程的创建、切换、撤销和进程调度。

2.2.1 进程的创建、切换、撤销进程的创建:在Linux编程中,⼀般采⽤fork()函数来创建新的进程,当然,那是在⽤户空间的函数,它会调⽤内核中的clone()系统调⽤,由clone()函数继续调⽤do_fork()完成进程的创建。

整个进程创建过程可能涉及到如下函数:fork()/vfork()/_clone----------->clone()--------->do_fork()---------->copy_process()进程的切换:进程切换⼜称为任务切换、上下⽂切换。

嵌入式实时操作系统内核分析

嵌入式实时操作系统内核分析

关于对μC/OS-Ⅱ嵌入式实时操作系统内核分析一、μC/OS-Ⅱ概述1、μC/OS-Ⅱ的基本概念μC/OS是源码公开的实时嵌入式操作系统,具有源代码开放、内核小、实时性好的突出优点,能够被移植到各种微处理器和微控制器上。

我们今天所分析的μC/OS-Ⅱ实时操作系统内核正是建立在μC/OS的基础之上的。

μC/OS-Ⅱ是典型的微内核实时操作系统。

它提供了任务调度、任务管理、时间管理和任务间的通信等基本功能。

与一般通用的操作系统相比,嵌入式实时操作系统既具有通用操作系统的基本特点,又具有系统实时性、硬件的相关依赖性、软件固态化以及应用的专用性等特点。

嵌入式实时操作系统通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。

评价嵌入式操作系统的重要指标有实时性、可裁剪性、可扩展性。

2、μC/OS-Ⅱ的基本性能特点公开源代码、可移植性好、可固化、可裁剪、抢占式实时内核、多任务管理、函数调用和系统服务的执行时间是确定的、每个任务有自己单独的栈、提供多系统服务和中断请求可使正执行任务暂时挂起等多个优点。

二、任务管理1、任务的工作状态任务是μC/OS-Ⅱ中最重要的概念之一。

它也被称作为一个线程为一个简单的程序,该程序可以认为CPU完全只属于该程序。

每个任务都被赋予一定的优先级,有着自己的一套CPU寄存器和栈空间。

如下图:一个任务通常是一个无限的循环。

TASK()任务初始化任务代码μC/OS-Ⅱ可以管理多达64个任务,但由于其两个任务被系统占用,并保留了优先级为0、1、2、3、OS_LOWEST_PRIO-3、OS_LOWEST_PRIO-2、OS_LOWEST_PRIO-1以及OS_LOWEST_PRIO这八个任务供将来使用。

因此用户可以使用的有56个应用任务。

每个任务都有不同的优先级,一般来说,任务的优先级号越低,任务的优先级越高。

μC/OS-Ⅱ总是先运行进入就绪态的优先级最高的任务。

Nucleus嵌入式实时操作系统

Nucleus嵌入式实时操作系统

目录一、M entor Graphics ESD公司简介二、N ucleus操作系统的特点三、源代码操作系统的优势四、Nucleus操作系统开发环境的配置五、Nucleus的网络浏览器(WebBrowse)介绍六、Nucleus操作系统的应用领域及在国内外的用户七、Nucleus操作系统的成功案例1、Nucleus操作系统在通讯设备上的应用●以Nucleus操作系统为核心的路由器方案2、Nucleus操作系统在消费类电子产品上的应用●Nucleus操作系统和MPC860平台开发机顶盒●N ucleus操作系统与ARM7构成POS系统●N ucleus操作系统与ARM7构成PDA3、Nucleus操作系统在医疗仪器上的应用4、Nucleus操作系统在电力系统上的应用5、Nucleus操作系统在美国军方的应用举例一、Mentor Graphics ESD公司简介●公司全称:Mentor Graphics Embedded Software Division●Mentor Graphics Group成立于1981年,全球雇员超过4000人,为全球领先的EDA工具提供商;ESD是Mentor Graphics公司内专注于嵌入式开发工具的部门,产品包括:Nucleus RTOS, CodeBench IDE, Inflexion UI Design Tools等,全球雇员超过200人;●ESD总部美国Alabama州的Mobile●在美国的加利佛尼亚,德克萨斯,马塞诸塞,佛罗里达以及田纳西等设有分支机构●在英国、法国和德国设有分支机构●在日本、韩国、澳大利亚、台湾、中国、意大利和俄罗斯等国设有代理商●1990年推出Nucleus实时多任务操作系统●1993年成为MOTOROLA推荐的四大RTOS厂商之一●1994年推出全球唯一的MNT虚拟开发平台●1994年推出全球唯一的VNET网络化虚拟平台●1994年成功地推出Java和RTOS产品●1995年成为全球第一大源代码RTOS厂商●1996年选定旋极科技公司为其中国大陆及香港地区独家代理商二、Nucleus PLUS的特点:Nucleus PLUS 是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSIC写成的,因此非常便于移植并能够支持大多数类型的处理器。

实时操作系统Nucleus的中断处理机制研究

实时操作系统Nucleus的中断处理机制研究
0 引 言 .

换 时 问三 个 方面 来进 行 确 定性 是 指 每个 系 统调 用 在 处 理分 为低 级 和高级 两部 分来 解决 这个矛 盾 。 最 差情 况 下 的执 行 时间都 是 可 以计算 的 :中断延 迟是 低 级 中断 ( w lvl e c o t e L S ) 为 正 常 1 e s ̄ierui . IR 作 o e n 指 从 中断 信号 产 生 到 中断服 务 程 序 执行 ( tr p e 的 中断处 理 服务 程 序 . 用 当前 的任 务 堆栈 。N c u i er t 卜 n u s 采 ul s e vc o t e S 1 i rui , R 的时 问 : 务 切 换 时 问是 指 任 务 问切 在 调 用 LS 之 前 将 系 统 寄 存 器 人 栈 保 护 现 场 .IR e nI 任 IR LS 换所 需 的时 间 返 回之后 负 责恢 复现 场 。 因此 。IR可 以用 C来 编 写 , LS
中 断控 制 指 针 入 栈
J R S
J MP

恢 复指 针 T s_ Pr 向的 任 务 + ak 0 t指 ,
_
;将 帧 接 收 高 级
NU
_
R smeT s(ak l Pr eu akT s— . t; o 】
关 闭 中断 . 而 。 然 能否 快 速 响应 中断是 实 时操作 系统 的 项基 本性 能 : 因此 . 关 闭中 断来保 护 内部数 据结 构 用 评 价 一 个 实 时 操 作 系 统 的性 能 可 以有 许 多 项 指 标 , 总 的 来 说 我们 可 以从 确定 性 . 但 中断 延迟 。 务 切 不 是最 佳 的办法 。 ulu 任 N ce s的管理 型 中断通过 将 IR 的 S

一文详解实时操作系统RTOS

一文详解实时操作系统RTOS

根据实时性要求设计任务调度策略,如基 于优先级的调度算法。
设计任务通信机制
设计内存管理方案
确定任务间的通信方式,如信号量、消息 队列等。
根据系统资源需求设计内存管理方案,确保 实时任务的顺利执行。
编码实现阶段
编写实时操作系统内核
实现任务调度、任务通信、内存管理等核心功能。
编写实时任务代码
根据功能需求编写实时任务代码,确保满足实时性要求。
特点
高性能、可裁剪、微内核实时操作系统,支 持多任务处理和优先级调度。
优缺点
功能强大、稳定性好,但价格较高,且源代 码不开放。
μC/OS-II
开发者
Micrium
特点
基于优先级调度的抢占式实时内核, 可移植性好,源代码开放。
应用领域
嵌入式系统、智能仪表、医疗设备等 。
优缺点
结构简洁、易于理解和学习,但在某 些复杂应用场景下可能显得功能不足 。
3
随着物联网和嵌入式系统的发展,RTOS的应用 领域将一步扩大。
本文目的和结构
本文旨在详细介绍实时操作系 统(RTOS)的基本概念、特点
、应用领域和发展趋势。
文章将首先介绍RTOS的基本概 念和特点,然后分析RTOS的应
用领域和市场需求。
接着,文章将探讨RTOS的设计 原则和实现方法,包括任务调 度、内存管理、中断处理等方 面。
需求分析阶段
明确系统实时性要求
确定系统对实时性的具体需求,包括任务响应时间、任务执行时 间等。
分析系统功能需求
对系统需要实现的功能进行详细分析,划分功能模块。
评估系统资源需求
根据功能需求评估系统所需的硬件资源,如处理器、内存等。
系统设计阶段
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录一、NUCLEUS的内核(KERNEL) (3)1.1 系统启动 (3)1.2 初始化线程 (4)1.3 线程调度 (4)1.3.1 任务的调度 (5)1.3.2 中断的调度 (10)1.3.3 操作系统数据结构的保护 (15)1.4 任务间通信 (17)1.4.1 消息管道(Pipes) (18)1.5 任务的同步 (23)1.6 定时器 (24)1.7 内存管理 (24)1.8 输入/输出设备驱动 (25)N UCLEUS内核总结: (25)二、NUCLEUS的开发工具 (27)2.1 N UCLEUS C++ (27)2.2 N UCLEUS MNT (27)2.3 N UCLEUS VNET (27)2.4 N UCLEUS PC+ (27)2.5 N UCLEUS FILE (27)2.6 N UCLEUS CLIB (28)2.7 N UCLEUS GRAFIX (28)2.8 N UCLEUS EDE (28)2.9 N UCLEUS UDB (29)2.10 N UCLEUS DEBUG+ (29)2.11 第三方产品的支持 (31)2.12 SDS S INGLE S TEP (31)三、NUCLEUS的网络支持 (33)3.1 I NTERNET套件 (33)Nucleus NET (33)Nucleus SNMP (33)Nucleus RMON (34)Nucleus SP AN (34)3.2 N UCLEUS W EB S ERV (34)3.3 N UCLEUS J VI (34)3.4 N UCLEUS EPILOGUE (34)Nucleus实时操作系统是Accelerated Technology公司开发的嵌入式RTOS产品,只需一次性购买Licenses,就可以获得操作系统的源码。

Nucleus购买的灵活性比较大:Kernel,Networking,File System,Web Technology,Target Debugger可以分开购买,如果我们只需要微内核的话只要购买Kernal和Debugger,当前的下位机就是这样配置的。

但是,如果以后我们要开发接入服务器和IP Phone的话就必须购买一堆网络协议;上位机要用的话还要购买文件系统。

Nucleus的另一大好处是程序员不用写板支持软件包(BSP),因为操作系统已经开放给程序员,不同的目标板在操作系统BOOT时可以通过修改源码进行不同的配置。

对于程序员来说,写BSP是一项比较繁琐的任务,有了OS的源码这项工作就简单多了,同时调试时也可以跟踪到中断、寄存器那一级,简化了硬件的调试。

VxWorks和pSOS都必须购买标准的BSP模板工具来写板支持软件包,开发工作量就比较大了。

Nucleus对CPU的支持能力比较强,支持当前流行的大多数RISC、CISC、DSP处理器,比如:80x86(实时、保护模式)、68xxx、PowerPC、i960、MIPS、SH、ARM、ColdFire。

Nucleus 系统对于不同的处理器,操作系统的源码大部分是相同的,只有5%的源码是用汇编写的跟CPU 有关。

如果使用另外的CPU,则只用修改5、6个汇编程序就可以进行移植,但是对于不同系列的处理器,它们的Compiler、Linker、Debugger是不同的(要另外购买),而且编译预处理的过程也是不一样的,这就要投入一部分力量去进行操作系统的移植。

当然,这也是Nucleus的一个优点,VxWorks和pSOS都没有源码,换一个系列的CPU操作系统又要重新购买,实际上他们OS开发的工作量并没有多少,但却造成了用户的重复性投资。

一、Nucleus的内核(Kernel)Nucleus的核心是一个实时的多任务内核——Nucleus PLUS,具有以下特性(Accelerated Technology公司宣称的):可移植性:Nucleus PLUS可用于大多数流行的处理器。

因为Nucleus PLUS主要是用标准C写的,移植到新的处理器系列相对很直接。

这也就意味着用Nucleus PLUS开发的应用程序也具有很高的可移植性。

可用性:不像其他的商业内核,Nucleus PLUS的系统调用名直接表明了它的功能。

比如,你可以通过Nu_Create_Task系统调用来创建一个任务。

Nucleus PLUS的系统调用都设计成具有类似的入口参数和返回值类型。

Nucleus PLUS的对象都不隐式地和别的对象相关。

比如,邮箱和任务之间是不相关的。

因此,用户可以利用多个Nucleus PLUS对象之间的结合形成混合系统调用。

配置:Nucleus PLUS最终是以C库的形式提供给用户,你可以选择所需要的部分链入到你的应用程序中。

特性:①、快速响应时间:对临界资源的检测时间不依赖于占有该临界资源的线程执行时间的长短,一旦低优先级线程释放掉临界资源(不管其是否执行完),高优先级线程就会抢占运行。

②、每个任务的执行时间和其他任务的处理时间无关。

③、较高吞吐量:随着任务数目的增多,任务的调度时间为常数。

④、可扩展性:利用现有系统调用的结合可得到新的系统调用。

Nucleus PLUS提供其他实时内核都具有的系统服务,比如:任务控制、任务通信、任务同步、内存管理、可编程的定时器、标准的输入/输出设备接口等。

对任务的调度依赖优先级、时间片的方法,可以选择挂起一个任务按照先入先出(FIFO)的顺序或按照优先级的顺序。

所有的操作系统对象(任务、邮箱、队列、管道等)都可以动态地创建和删除。

创建一个对象时,要指定指定其控制块的内存区域和其它的数据要求(堆栈空间等)。

Nucleus在任务调度时,首先查看任务是否可以抢占,如果不能抢占,则一直执行到任务完成或任务放弃时间片;否则,依靠优先级进行调度,先调入优先级最高的任务,对于优先级相同的任务则分享时间片、轮流调度。

//ben:请问这里的时间片是系统节拍还是由多个节拍组成的时间片,猜测应该就是时间节拍若每个任务分配一些时间片,怎样保证实时?//错了,1.1系统启动对于68K系列的CPU,如果采用CrossCode C编译器的话,Nucleus使用的是CrossCode C的启动函数,标号START 是系统的入口点。

START 标号在文件start.s 中,用汇编及CrossCode C 的宏指令写的。

主要完成68360中断向量表指针VBR 和寄存器基址MBAR 的初始化,以及外部RAM 各分区的初始化,这些分区包括:ram ,data ,malloc ,init ,sys_memory 等。

系统低级初始化完成后,控制就交给初始化线程INT_Initialize 。

1.2 初始化线程初始化线程是系统开始执行的第一个线程,线程的入口是INT_Initialize ,同时也是系统的主函数,具有另外的标号名main 。

系统初始化首先完成硬件寄存器的配置,包括:存储器片选(CS0~CS7),软件看门狗SWT ,系统周期定时器PIT ,A 口、B 口、C 口引脚功能设定,串行通信控制器的初步配置等。

这些硬件的配置跟目标板有关,需要用户自己用汇编来写。

其次,将系统堆栈指针TCD_System_Stack 初始化为堆栈区stack 的顶部,同时在系统内存区sys_memory 中拿出TMD_HISR_Stack_Size 大小的一片内存用作高级中断服务程序的堆栈HISR_STACK 。

然后,控制交给INC_Initialize 。

INC_Initialize 首先完成操作系统数据结构的初始化,包括:线程控制、邮箱、队列、管道、信号量、事件、分区内存、动态内存、定时器、I/O Driver 等。

其次,调用Application_Initialize ,这一函数由用户编写,完成任务、消息队列等的创建、中断的注册以及应用程序的初始化。

当所有的初始化都完成后,INC_Initialize 调用TCT_Schedule 开始线程的调度。

1.3 线程调度TCT_Schedule 是线程调度的入口,负责将控制权交给具有最高优先级的高级中断服务程序HISR (TCD_Execute_HISR )或处于就绪状态的最高优先级任务(TCD_Execute_Task )。

当没有任务或HISR 执行时,线程调度就在TCT_Schedule 中做死循环,等待TASK 或HISR 就绪。

HISR 的优先权比任务高,一旦有HISR 就绪,则当前调度的任务将会被挂起,优先调度HISR 。

一旦有TASK 或HISR 就绪,控制就会交给TCT_Control_To_Thread ,在这里将TCD_Execute_HISR 或TCD_Execute_Task 设置为当前线程TCD_Current_Thread ,启动任务时间片定时器,根据线程的不同堆栈类型恢复堆栈,然后执行RTS 或RTE 指令,将控制权交给线程。

Nucleus 的线程有两种类型的堆栈帧://ben :有什么区别呢?Interrupt 堆栈类型Solicited 堆栈类型任务创建时,要建立一个初始堆栈帧,线程入口是TCC_Task_Shell,该Shell执行任务的入口程序,通常任务的执行是一个死循环,不停地在等待消息或事件,如果没有消息或事件任务就会挂起,否则往下执行。

如果,任务在Shell调度中返回,则表示该任务已执行完毕,将任务终止,其状态置为NU_FINISHED。

HISR创建时,也要建立一个初始堆栈帧,线程入口是TCC_HISR_Shell。

HISR_Shell调度的是当前具有最高优先级的HISR,直至TCD_Execute_HISR的激活计数器tc_activation_count 为0,才调度同一优先级或低优先级的其它HISR。

HISR_Shell对HISR调度就是执行HISR的入口程序,然后根据激活计数器循环调度,HISR是不能被挂起的。

1.3.1 任务的调度任务的调度需要用到以下比较重要的数据结构:TCD_Created_Tasks_List:已创建任务链表的头指针。

TCD_Priority_List[256]:任务控制块TCB的指针数组,每个元素是优先级0~255就绪任务链表的头指针。

TCD_Priority_Groups:按位来定义的长字,对应32组优先级,每bit是一组,负责8个优先级,如果其中任意一个优先级有任务就绪,则该bit置1。

TCD_Sub_Priority_Groups[32]:子优先级组的位映像图,每一元素对应一组优先级。

比如TCD_Sub_Priority_Groups[0]对应优先级0~7,bit0~bit7分别表示优先级0~7。

相关文档
最新文档