NEUCLEUS的原理和应用.ppt

上传人:s****8 文档编号:68142002 上传时间:2022-12-27 格式:PPT 页数:69 大小:534KB
返回 下载 相关 举报
NEUCLEUS的原理和应用.ppt_第1页
第1页 / 共69页
NEUCLEUS的原理和应用.ppt_第2页
第2页 / 共69页
点击查看更多>>
资源描述

《NEUCLEUS的原理和应用.ppt》由会员分享,可在线阅读,更多相关《NEUCLEUS的原理和应用.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Neusoft Co.,Ltd.BeyondTechnologyNEUCLEUSNEUCLEUS的原理和应用的原理和应用(Ver0.9)ISIS事业部事业部 孙丕宏孙丕宏Neusoft Co.,Ltd.目的与目标培训目的培训目的 通过介绍在Nucleus plus的原理和应用,使开发人员掌握Nucleus的基本原理和使用方法,以满足软件开发的需要并满足客户的要求。培训对象培训对象 培训对象主要是软件开发人员,尤其是在基于Nucleus系统下进行软件开发的人员。培训要求培训要求 培训的员工需要了解基本的C与汇编编成,尤其是需要熟悉和理解操作系统的基本概念和多任务的基本原理。Neusoft Co.

2、,Ltd.第一部分介绍Nucleus介绍特点Neusoft Co.,Ltd.Nucleus介绍美国著名RTOS厂商ATI公司(AcceleratedTechnologyIncorporated)推出的NUCLEUS+实时多任务操作系统以其微内核技术,原代码提供及广泛的CPU支持种类和易学易用等特点得到了国内众多用户的认可。Nucleus主要应用领域在:网络、路由、桥接、Hubs、数据通讯、顶置盒、数字摄像机、ISDN、调制器、数字绘图仪、GSM、蜂窝电话、PDA、打印机、GPS、无线通讯、汽车、医疗仪器、RAID、适配卡、智能卡、安全保密、工业控制、扫描仪、煤气分析仪、游戏机、多媒体、手持产品

3、、消费产品、局域网、广域网、导航设备、卫星通信、自动提款机、视频产品、条码机、过程控制等等简介篇Neusoft Co.,Ltd.Nucleus+特点1、提供源代码NUCLEUS提供注释严格的C源级代码给每一个用户。这样,用户能够深入地了解底层内核的运作方式,并可根据自己的特殊要求删减或改动系统软件,这对软件的规范化管理及系统软件的测试都有极大的帮助。另外,由于提供了RTOS的源级代码,用户不但可以进行RTOS的学习和研究,而且产品在量产时也不必支付License,可以省去大量的费用。2、性价比高NUCLEUS+由于采用了先进的微内核(Micro-kernel)技术,因而在优先级安排,任务调度,

4、任务切换等各个方面都有相当大的优势。另外,对C+语言的全面支持又使得NUCLEUS+的Kernel成为名副其实的面向对象的实时操作系统内核。然而,其价格却比较合理。所以,容易被广大的研发单位接受。3、易学易用NUCLEUS+能够结合Paradigm,SDS以及ATI自己的多任务调试器组成功能强大的集成开发环境,配合相应的编译器和动态联结库以及各类底层驱动软件,用户可以轻松地进行RTOS的开发和调试。另外,由于这些集成开发环境(IDE)为所有的开发工程师所熟悉,因而,容易学习和使用。4、功能模块丰富NUCLEUS+除提供功能强大的内核操作系统外,还提供种类丰富的功能模块。例如用于通讯系统的局域和

5、广域网络模块,支持图形应用的实时化Windows模块,支持Intnet网的WEB产品模块,工控机实时BIOS模块,图形化用户接口以及应用软件性能分析模块等。用户可以根据自己的应用来选择不同的应用模块。简介篇Neusoft Co.,Ltd.支持CPU类型x86,68xxx,68HCxx,NECV25,ColdFire,29K,i960,MIPS,SPARClite,TIDSP,ARM6/7,StrongARM,H8/300H,SH1/2/3,PowerPC,V8xx,PanasonicMN10200等。可以说NUCLEUS+是支持CPU类型最丰富的实时多任务操作系统。简介篇Neusoft Co.

6、,Ltd.开发环境NUCLEUS+的实时多任务环境由编译器(Compiler),连接定位器(Linklocater),多任务调试器(Multi-taskDebugger),监控器(Monitor)以及相应的动态连接库组成。NUCLEUS+提供标准的接口平台以支持优秀的第三厂商软件工具。用户可以根据自己的应用和系统的要求来选择相应的工具。例如MicrosoftC/C+、BorlandC/C+、TurboC/C+、MetawareHighC、ParlapC等编译器(Compiler),Paradigm的连接定位器(Linklocater)和TurboDebugger、SSI的Linkerlocat

7、er和Debugger等都可以满足用户不同的应用要求。简介篇Neusoft Co.,Ltd.第二部分应用开发2.1应用开发综述2.2安装Nucleus+2.3应用Nucleus+2.4程序初始化2.5目标系统2.6配置选项开发篇Neusoft Co.,Ltd.应用开发综述建立一个嵌入式实时应用程序是非常直接的。驻留在主机系统上的应用程序文件可以编译/汇编成目标文件并连接。结果映像文件既可以下载到目标系统也可以放到目标系统的ROM中。针对目标系统的调试软件通常包括ICE仿真工具和TRM(目标仿真)工具。拥有ICE工具是更好的选择,因为ICE工具给我们开发人员完全控制和了解目标系统硬件状况。ICE

8、工具在校验新硬件时尤其有用。考虑到费用问题和ICE有时有局限性,许多项目采用TRM调试。TRM就是一个小型的运行在目标系统(通常为ROM)上的软件组件。TRM提供包括下载、下断点和内存入口服务。ICE和TRM都有宿主系统控制。这通常由串口来完成。源级调试允许开发人员使用真正的C源代码调试应用程序。这种性能需要宿主系统上附加的程序,该程序在C源代码和目标系统内存之间建立联系。大多数的源代码级调试使用ICE和TRM来真正控制和进入目标系统硬件。NucleusPLUS整合了大量的C源代码调试器。另外,NucleusPLUS调试器对为NucleusPLUS应用程序附加扩展的多任务调试能力有效。Neus

9、oft Co.,Ltd.安装Nucleus+NucleusPLUS的安装很简单。:1)在主机上创建名为NUCLEUS的目录;2)COPY所有文件至NUCLEUS目录(2M左右);3)通过运行批处理文件BUILDLI.BAT建立NucleusPLUS库;4)Nucleus库文件NUCLEUS.LIB必须与连接器更易接近。这可能要通过既要在应用程序开发目录中拷贝它又要在NUCLEUS目录中设置连接器以至于能找到它来完成。5)NUCLEUS.H文件必须贴近应用程序。这可能要通过既要在应用程序开发目录中拷贝它又要在NUCLEUS目录中设置编译器器以至于能找到它来完成。Neusoft Co.,Ltd.使

10、用Nucleus+使用NucleusPLUS的步骤被描述成下列通用的方式:1)如果有必要,修改低级系统初始化文件,INT.S。注:这些文件通常以汇编语言形式交货并且它的的扩展是指定的开发工具。2)定义Application_Initialize函数,NucleusPLUS启动系统时它优先运行。注意NUCLEUS.H文件必须包含以至于能被NucleusPLUS服务调用。3)定义应用程序任务。如果用到NucleusPLUS服务,文件NULCUES.H必须被包含。4)编译和/或汇编所有应用程序软件,包括低级系统初始化文件INT.s。5)用NucleusPLUS库和必要的开发工具库连接INT.a和所有

11、应用程序目标文件。6)下载应用程序映像文件到目标系统并让它跑起来!Neusoft Co.,Ltd.应用程序初始化Application_Initialize子程序负责定义初始化应用程序环境。它包含有任务、邮箱、队列、信号量、事件集、内存池和其他NucleusPLUS对象。Application_Initialize配备有指向第一个有效地内存地址的指针。之后的内存没有被编译器或NucleusPLUS使用,因此对应用程序有效。虽然Application_Initialize详细内容依靠应用程序,下面的模板依然有效:#includevoidApplication_Initialize(void*fi

12、rst_available_memory)/*NucleusPLUS对象的应用程序详细初始化,包括任务、邮箱、队列、管道、事件集、内存池的创建。*/从初始化子程序调用的服务不能被挂起,直到初始化子程序不再作为一个任务运行。也要注意至少一个任务或是中断处理器被Application_Initialize创建,并且Application_Initialize是优先级高于第一个任务运行的最后一个子程序。Neusoft Co.,Ltd.例1:Application_Initialize创建一个内存池和一个任务#include/*定义任务控制结构*/NU_TASKTask;/*定义动态内存池控制结构*/

13、NU_MEMORY_POOLMemory_Pool;VoidApplication_Initialize(void*first_available_memeory)void*stack_ptr;/*创建一个4000字节开始于起始地址的动态内存池*/NU_Create_Memory_Pool(&Memory_Pool,”SYSTEM”,first_available_memory,4000,50,NU_FIFO);/*从系统内存池创建一个任务堆栈*/NU_Allocate_Memory(&MemoryPool,&stack_ptr,500,NU_NO_SUSPEND);/*创建一个以功能函数ab

14、c(0,NU_NULL)为入口点的应用任务*/NU_Create_Task(&Task,ABC_TASK,abc,0,NU_NULL,stack_ptr,500,10,NU_PREEMPT,NU_START);Neusoft Co.,Ltd.配置选项NucleusPLUS应用程序有一个有条件的编辑选项。在命令行编译应用程序源文件通过定义NU_NO_ERROR_CHECKING变量,所有NucleusPLUS服务错误检测逻辑被忽略(Bypassed)。这可以提升NucleusPLUS服务运行性能。当建立NucleusPLUS库时,有几个有条件的编辑选项被有效应用。这些选项可以加到MAKELIB.

15、BAT文件的编译命令里。这些文件驻留在NUCLEUS主文件夹里,包含所有建立Nucleus库所必须的命令。下面是对有条件的有效编译符号和他们对应的含义的定义:编译符号含义NU_ENABLE_HISTROY每个服务调用历史条目结果。这个符号可以被加到所有*C.C文件的编译命令当中NU_ENABLE_STACK_CHECK使能堆栈检测。这个符号可以被加到所有*C.C文件的编译命令当中NU_ERROR_STRING如果有致命系统错误发生建立一个ASCII错误信息。本选型只用于编译ERD.C,ERI.C和ERC.C时。NU_NO_ERROR_CHECKING忽略错误检测,和任何用户的应用程序代码Neu

16、soft Co.,Ltd.第三部分功能的描述3.1初始化3.2任务3.3任务通信3.4任务同步3.5定时器3.6内存管理3.7中断3.8输入/输出驱动器3.9系统诊断Neusoft Co.,Ltd.3.1初始化INT_Initialize子程序在NucleusPLUS系统中是最先运行的。对大多数的目标环境,硬件复位向量必须包含在INT_Initialize地址中。INT_Initialize负责所有与目标硬件相关的初始化。与目标硬件相关的初始化通常包括设置不同种类的处理器控制寄存器,中断向量表,全局的C数据元素,一些NucleusPLUS变量,和系统堆栈指针。当INT_Initialize完成

17、,控制转移到高级NucleusPLUS初始化子程序INC_Initialize上。注意控制不会返回INT_Initialize。INC_Initialize调用每个NucleusPLUS组件的初始化子程序。在所有NucleusPLUS初始化完成之后,INC_Initialize调用用户供应的初始化子程序Application_Initialize。Application_Initialize子程序负责定义初始化应用环境。初始化应用任务,邮箱,队列,管道,信号量,事件集,内存池和其他NucleusPLUS对象都在子程序中被定义,这个子程序的格式在开始章节描述。在Application_Initi

18、alize返回后,INC_Initialize开始初始化任务调度表。具体过程如图所示。Neusoft Co.,Ltd.INT_Initialize:初始化下类处理器控制器寄存器中断向量表全局C数据元素一些NucleusPLUS变量系统堆栈指针INC_Initialize调用每个NuleusPLUS组件的初始化应用子程序用户提供的初始化子程Application_Initialize:初始化应用任务,邮箱,队列,管道,信号量,事件集,内存池和其他NucleusPLUS对象初始化任务调度表图:NucleusPLUS初始化流程Neusoft Co.,Ltd.3.2任务任务就是目的明确的半独立程序段。

19、大多数现代实时应用都要求多任务。另外,这些任务的重要等级经常变化。管理这些竞争、实时任务的运行是NucleusPLUS的主要目的。任务状态每个任务都有五种状态:运行、就绪、挂起、中止、完成。下列列表描述了每个任务的状态:表一任务状态列表状态含义运行任务正在运行就绪任务就绪,但其他任务正在运行挂起等待服务请求完成之前任务休眠状态。当响应结束,任务转入等待状态中止任务被禁止。一旦进入这种状态,任务直到复位之前不能运行。完成任务完成并返回到初始入口子程序。一旦进入这种状态,任务直到复位前都不能运行优先级用户分配,范围0255,用来定义NulceusPLUS任务的重要性,数字越小优先级越高备注:给任务

20、分配优先级时必须小心。如果一不小心,优先级可能导致任务饿死和系统超负荷。Neusoft Co.,Ltd.3.3任务通信Nucleus PLUS 为通信目的提供:邮箱(mailbox)队列(queues)管道(pipes)。邮箱,队列,管道是独立的公共设备。任务之间和其他系统设备之间的联系由应用程序确定。这些通信设备之间主要的差别是数据通信的类型。Neusoft Co.,Ltd.3.3.1邮箱邮箱为传输简单数据提供低消耗方案。每个邮箱可以保持4个32位字大小的单一消息。消息以(数)值方式发送和接受。一个发送消息要求拷贝消息到邮箱,一个接受消息要求从邮箱中把消息拷贝出来。u消息尺寸一列消息包括一个

21、或多个32位字。固定的和长度可变的消息都支持。消息类型的格式在队列创建的时候定义。长度可变的消息队列需要为队列中的每个消息消耗一个附加的32位字。u挂起发送和接收邮箱服务为非条件的挂起、时间间隙挂起和无挂起提供配置广播:邮箱的消息可以被广播。这种服务类似于发送请求,除了所有从邮箱等待消息的任务改成了等待广播消息。(类同与同报Event)u动态创建NucleusPLUS邮箱可以动态创建和删除。一个应用程序在邮箱数量上没有预先限制。每个邮箱需要一个控制块。控制块的内存由应用程序提供u结论发送和接受邮箱消息的处理时间请求为常量。然而,按优先级顺序挂起任务所需的处理时间受当前在邮箱上挂起的任务数影响。

22、邮箱信息应用程序任务可以获得活动邮箱的列表。每个邮箱的详细信息也也可以获得。这些信息包括邮箱名、挂起类型、信息是否出现、第一个任务等待。Neusoft Co.,Ltd.3.3.2队列队列提供了传输多个消息的机制。消息以数值形式发送接受。一个发送消息要求拷贝消息到队列,一个接收消息要求从队列上拷贝消息。消息可以放在对列的前端或队列的后端。消息尺寸:一列消息包括一个或多个32位字。固定的和长度可变的消息都支持。消息类型的格式在队列创建的时候定义。长度可变的消息队列需要为队列中的每个消息消耗一个附加的32位字。另外,接收消息要求在长度可变消息队列指定最大消息尺寸,在固定长度消息队列指定合适的消息尺寸

23、上有同样的要求。发送和接收队列服务为非条件的挂起非条件的挂起、时间间隙挂起时间间隙挂起和无挂起无挂起提供配置。挂起广播队列的消息可以被广播。这种服务类似于发送请求,除了所有从队列等待消息的任务改成了等待广播消息。动态创建NucleusPLUS队列可以动态创建和删除。一个应用程序在队列数量上没有预先限制。每个队列需要一个控制块。控制块的内存由应用程序提供。结论发送和接受队列消息请求的基本处理时间为常量。然而,按优先级顺序挂起任务所需的处理时间受当前在队列上挂起的任务数影响。队列信息应用程序任务可以获得活动队列的列表。每个队列的详细信息也也可以获得。这些信息包括队列名、消息类型、挂起类型、消息出现

24、的次数、第一个任务等待。Neusoft Co.,Ltd.3.3.3管道u管道提供了传输多个消息的机制。消息以数值形式发送接受。一个发送消息要求拷贝消息到管道,一个接收消息要求从管道上拷贝消息。消息可以放在管道的前端或队列的后端。u消息尺寸一列管道消息包括一个或多个32位字。固定的和长度可变的消息都支持。消息类型的格式在管道创建的时候定义。长度可变的消息管道需要为管道中的每个消息消耗一个附加的32位。u挂起发送和接收管道服务为非条件的挂起、时间间隙挂起和无挂起提供配置u广播管道消息可以被广播。这种服务类似于发送请求,只是所有从队列等待消息的任务改成了等待广播消息。u动态创建NucleusPLUS

25、管道可以动态创建和删除。一个应用程序在管道数量上没有预先限制。每个管道需要一个控制块和一个管道数据区。每个内存由应用程序提供。u结论发送和接受管道消息请求的基本处理时间为常量。然而,拷贝消息所需的时间与消息尺寸有关联。另外,按优先级顺序挂起任务所需的处理时间受当前在管道上挂起的任务数影响u队列信息应用程序任务可以获得活动管道的列表。每个管道的详细信息也可以获得。这些信息包括管道名、消息格式、挂起类型、消息出现的次数、第一个任务等待Neusoft Co.,Ltd.3.4任务同步NucleusPLUS提供:信号量(semaphores),事件集(eventgroups)信号(signals)解决信

26、号同步问题。信号量和事件集都是独立的,公用的设备。任务和其他系统设备的联系由应用程序决定。信号(signals),换一种说法,与指定任务关联。Neusoft Co.,Ltd.3.4.1信号量(semaphores)信号量提供了控制应用程序临界区运行的机制。NucleusPLUS提供了范围从04294967294的计算信号量。信号量两个基本操作是获得获得和释放释放。获得信号量请求消耗信号量,释放信号量请求增加了信号量。信号量最普通的应用是资源配置。另外,带初始值信号量的创建可以用来指示事件。挂起获得信号量服务为无条件挂起、时间间隙挂起、无挂起提供配置。死锁两个任务或多个任务永远挂起试图获得两个或

27、更多个信号量,死锁就涉及到这种状况预防是处理死锁的最佳措施。这项技术把规则强加到应用程序使用的变量。例如,如果任务不允许一次占用超过一个信号量,死锁被保护。作为选择,如果任务在同一个次序获得多个信号量死锁可以被保护。获得信号量挂起时可选的空闲时间(Timeout)可以用来从死锁状态恢复优先级倒置优先级倒置在高优先级任务请求低优先级任务使用的信号量引起挂起时发生。如果不同优先级任务共享相同的受保护的资源,这种情况不可避免。在这种情况下,在优先级倒置里,有限和可预料的时间量可接受。动态创建NucleusPLUS信号量可以动态被创建和删除。应用程序可能拥有的信号量数没有预先限定。每个信号量需要一个控

28、制块。控制块的内存由应用程序提供。信号量在创建时赋初值结论获得和释放信号量要求的运行时间为常量。然而,以优先级顺序挂起一个任务所需的运行时间受当前在信号量上挂起的任务数影响。信号量信息应用程序任务可以获得激活的信号量列表。每个信号量的详细信息也可以得到。这些信息包括:信号量名、当前值、挂起类型、任务等待数、第一个等待任务Neusoft Co.,Ltd.3.4.2事件集事件集提供一个机制来描述一个指定系统事件的发生。事件由事件集中单个位来描述。这位叫事件标志。每个事件集有32个事件标志。事件标志可以通过逻辑AND/OR组合被设置和清除。事件标志也可以以逻辑AND/OR组合接收。另外,事件标志可以

29、在接收完后自动复位。挂起接收事件标志请求为无条件挂起、时间间隙挂起、无挂起提供选项动态创建Nucleus PLUS 事件集可以动态创建和删除。应用程序可能拥有的事件集数没有预先限定。每个事件集需要一个控制块。控制块的内存由应用程序提供。结论获得和释放信号量要求的运行时间为常量。然而,在事件集中置位事件标志所需的时间受事件集上挂起的任务数影响。事件集信息应用程序任务可以获得激活的事件集列表。每个事件集的详细信息也可以得到。这些信息包括:事件集名、当前事件标志、任务等待数、第一个等待任务。Neusoft Co.,Ltd.3.4.信号信号在某种程度上讲很相似。然而,他们在操作上有几个非常重要的差别。

30、事件标志的用法天生就是同步的。直到指定的服务请求完成,任务不承认事件标志出现。信号以异步的方式运行。当信号出现,任务中断并且任务提前指定的信号处理子程序运行。每个任务可以处理32个信号。每个信号对应一个描述位。信号处理子程序任务信号处理子程序必须在任何信号运行之前被提供。使能信号子程序任务缺省可以在所有信号禁止的情况下创建。个别信号可以被每个任务动态使能或禁止清除信号当信号处理被调用信号自动清除。另外,当请求接收信号的恳求完成时信号被清除。注:在请求接收信号恳求时,任务不能挂起。多信号一旦信号处理子程序开始运行,任务的信号被清除。信号处理子程序不能被新信号中断。任何新信号的处理在当前信号处理完

31、成后进行。在第一个信号被验证之前发送的同样的信号被放弃。结论至少在最坏的情况下,发送和接收信号要求的运行时间是常量。当然运行信号处理子程序所需的时间由应用程序指定。Neusoft Co.,Ltd.3.5定时器大多数实时应用需要在按周期性的时间间隔运行。每个NucleusPLUS任务都有一个内建定时器。这个定时器用来提供任务休眠和服务调用的时间节拍节拍是所有NucleusPlUS定时器设备时间的基本单元。每一拍对应单个硬件定时器中断。实际的时钟节拍值是用户可编程的。错误空白大约一拍左右可以满足一个定时器请求。这是因为在定时器请求之后一节拍可以立即发生。因此,定时器请求的第一拍表示的是从零到硬件定

32、时器中断率范围的真实时间。例如,在实际时间n和nl拍之间一个N拍的下降请求实际时间值中止。硬件请求NucleusPLUS定时器服务需要硬件提供的周期性的定时器中断。没有中断,定时器设备不运行。然而,其他的NucleusPLUS设备在没有定时器设备时不会激活。Neusoft Co.,Ltd.p连续时钟Nucleus PLUS 维持一个连续的技术节拍时钟。这个时钟的最大值为4294967294。时钟在到达节拍大值后自动复位。这个连续时钟为应用程序的使用专门保留。它可以在若任何时间由应用程序读出或写入。p任务时钟每个任务都有一个内建定时器。这个定时器为任务休眠请求和挂起时间间隙请求而准备。p应用时钟

33、NucleusPLUS为应用程序提供可编程定时器。这些定时器在他们到时时运行指定的用户提供子程序。用户提供时间到子程序作为一个高级中断服务子程序运行。因此,自挂起请求被禁止。另外,运行必须保持最小化。Neusoft Co.,Ltd.定时器重新置初值当一个定时器定时时间到时,指定的定时时间到时子程序开始运行。在运行结束之后,定时器既是静止的又可以重新置初始值。如果定时器置初始值为零,在初始化到时后还是禁止的。然而,如果定时器置初始值为非零,在时间间隔结束后重新置初值。使能/禁止应用程序定时器在创建期间可以被自动使能。另外,定时器可以被动态使能和禁止。复位初始化一个定时器的节拍、重新置初值的比率和

34、一个定时器到时子程序可以被应用程序动态复位。动态创建NucleusPLUS应用程序定时器可以动态创建和删除。应用程序拥有的定时器数的没有预先限定。每个定时器请求一个控制块。控制快的内存由应用程序提供。结论创建、使能、禁止和修改应用程序定时器所需的处理时间是不变的。然而,运行用户提供的定时子程序所需的处理时间由定时子程序自身和同时结束的定时器数决定。定时器信息应用程序可以获得激活的定时器列表。每个定时器的详细信息也可以获得。这些信息包括定时器名称、状态、初始化节拍、重置值、保持节拍和到时计数。Neusoft Co.,Ltd.3.6内存管理Nucleus PLUS 提供分区和动态内存管理设备。分区

35、内存管理是确定性的但不是非常灵活。动态内存管理非常灵活但是有不确定性。大多数应用程序对两种类型的内存管理设备都有需要。分区内存池一个分区内存池包含一个指定固定尺寸的内存分区数。池的内存位置、池的字节数和在每个分区中的字节数都由应用程序决定。单个的分区从分区内存池中分配和收回。动态内存池一个动态内存池包含一个用户指定的字节数。内存在池中的位置由应用程序决定。NucleusPLUS为动态内存池提供可变长度的分配和释放服务。分配以最适合的方式(first_fit_manner)运行。例如,满足要求的第一个有效内存被分配。如果分配的块比要求的大的多,没有使用的内存返回到动态内存池。先前释放的块在分配搜

36、索期间又从新合并了。内存池内存分区内存分区内存分区内存分区Neusoft Co.,Ltd.3.7中断中断是为外部和内部事件提供立即响应的机制。当中断发生时,处理器挂起当前运行的程序,并且转移控制权到适当的中断服务子程序(ISR)。中断的强制运行是固有的、处理器指定的保护关中断来保护数据结构不是个好办法。NucleusPLUS通过把应用程序的ISRs区分为低级到高级组件来处理保护问题。低级中断低级中断服务子程序(LISR)和正常的ISR一样运行,包括使用当前堆栈高级中断:高级中断支持动态创建和删除。每个HISR由它自己的堆栈空间和控制块。每个的内存由应用程序提供。当然,HISR必须在LISR激活

37、之前被创建。HISR 信息应用程序任务可以获得激活HISRs的列表。每个HISR的详细信息也可以获得。这些信息包括HISR名、总预定计数、优先级和堆栈参数。中断潜伏期中断潜伏期是描述每个中断关闭时间值的术语。一旦NucleusPLUS不依赖于关中断保护禁止同步ISR访问,中断潜伏期是很短和恒定的。事实上,在一些NucleusPLUS端口,中断关闭只能超过几个指令周期。应用程序中断锁定应用程序提供禁止和使能中断的能力。一个中断通过应用程序关闭保持到应用程序解锁。直接向量访问NucleusPLUS提供直接设置中断向量的能力。ISRs直接下载到向量表被允许用来存储和恢复使用的寄存器Neusoft C

38、o.,Ltd.3.8输入/输出驱动器大多数的实时应用程序需要不同外围设备的输入输出。这些输入输出的管理通常由一个I/O器件驱动器来完成通用接口NucleusPLUS为初始化、赋值、释放、输入、输出、状态和中止请求提供一个标准的I/O驱动器接口。驱动器内容一个I/O驱动器通常处理初始化、分配、释放、输入、输出、状态和中止请求过程。如果I/O驱动器由中断驱动,中断处理子程序也是必须的。保护除了大多数NucleusPLUS服务的可用性之外,I/O驱动器也提供服务保护内部数据结构不被同步高优先级ISR访问。低优先级ISR同步访问的保护通过禁止适当的中断来保护。挂起I/O驱动器可以被系统中不同的线程调用

39、动态创建NucleusPlUSI/O驱动器可以动态创建和删除驱动器信息应用程序任务可以获得激活的I/O驱动器的列表。指定的驱动器的详细信息也可获得。Neusoft Co.,Ltd.3.9系统诊断NucleusPLUS提供给应用程序任务几种提高系统故障的诊断能力的设备错误管理如果一个致命的系统错误出现,处理转到通用错误处理子程序。默认情况下,这个程序准备一个ASCII错误消息并暂停系统。然而,附加的错误处理可以由应用程序开发人员加入。系统历史NucleusPLUS为各种系统活动提供一个环形的事件日志。应用程序任务和HISR可以进入这些日志。NucleusPLUS服务有一个有条件的编辑选项,用来使

40、能每次服务请求发生时进入历史日志。历史日志的每次进入包含有关服务和调用的信息。版本信息RLD_Release_String是一个全局C字符串,包含当前NucleusPLUS软件版本和版权信息。这个字符串在目标系统中的检查提供对在下面的NucleusPLUS快速鉴定。许可信息LID_License_String是一个全局C字符串,包含用户许可信息,包括用户的序列号。Neusoft Co.,Ltd.第四章NucleusPLUS服务4.1 任务控制服务4.2 任务通信服务4.3 任务同步服务4.4 定时器服务4.5 内存服务4.6 中断服务4.7 I/O 驱动器服务4.8 开发服务4.9 服务定义N

41、eusoft Co.,Ltd.4.1任务控制服务任务控制服务用来控制应用程序任务的运行。下列服务运行任务控制函数:NU_Create_TaskNU_Delete_TaskNU_Resume_TaskNU_Suspend_TaskNU_Terminate_Task NU_Reset_TaskNU_Change_Time_SliceNU_Change_PriorityNU_Change_PreemptionNU_SleepNU_RelinquishNU_Check_StackNU_Current_Task_PointerNU_Established_TasksNU_Task_PointersNU_

42、Task_InformationNeusoft Co.,Ltd.Neusoft Co.,Ltd.4.2任务通信服务任务通信服务提供对NucleusPLUS邮箱、队列、管道的访问。下面的服务适合任务通信:NU_Broadcast_To_MailboxNU_Create_MailboxNU_Delete_MailboxNU_Established_MailboxsNU_Mailbox_InformationNU_Mailbox_PointersNU_Receive_From_MailboxNU_Reset_MailboxNU_Send_To_MailboxNU_Broadcast_To_Queue

43、NU_Create_QueueNU_Established_QueuesNU_Delete_QueueNU_Queue_PointersNU_Queue_InformationNU_Reset_QueueNU_Receive_From_QueueNU_Send_To_QueueNU_Send_To_Front_of_QueueNU_Create_PipeNU_Broadcast_To_PipeNU_Established_PipesNU_Delete_PipeNU_Pipe_PointersNU_Pipe_InformationNU_Reset_PipeNU_Receive_From_Pipe

44、NU_Send_To_PipeNU_Send_To_Front_of_PipeNeusoft Co.,Ltd.4.3任务同步服务任务同步服务提供访问NucleusPLUS信号量、事件标志、信号。下列服务适合任务同步:NU_Create_SemaphoreNU_Delete_SemaphoreNU_Established_SemaphoresNU_Obtain_SemaphoreNU_Release_SemaphoreNU_Reset_SemaphoreNU_Semaphore_InformationNu_Semaphore_PointersNU_Create_Event_GroupNU_Del

45、ete_Event_GroupNU_Established_Event_GroupsNU_Retrieve_EventsNU_Event_Group_PointersNU_Receive_SignalsNU_Event_Group_InformationNU_Send_SignalsNU_Register_Signal_HandlerNU_Set_EventsNU_Control_SignalsNeusoft Co.,Ltd.4.4定时器服务定时器服务提供访问NucleusPLUS定时器资源的接口。下列服务适合定时器资源:NU_Control_TimerNU_Create_TimerNU_De

46、lete_TimerNU_Established_TimersNU_Reset_TimerNU_Retrieve_ClockNU_Set_ClockNU_Timer_InformationNU_Timer_PointersNeusoft Co.,Ltd.4.5内存服务内存服务提供访问NucleusPLUS固定和可变长短内存管理设备接口。下列服务适合内存管理:NU_Allocate_PartitionNU_Create_Partition_PoolNU_Deallocate_PartitionNU_Delete_Partition_PoolNU_Established_Partition_Poo

47、lsNU_Partition_Pool_InformationNU_Partition_Pool_PointersNU_Create_Memory_PoolNU_Allocate_MemoryNU_Delete_Memory_PoolNU_Deallocate_MemoryNU_Memory_Pool_InformationNU_Established_Memory_PoolsNU_Memory_Pool_PointersNeusoft Co.,Ltd.4.6中断服务中断服务提供访问NucleusPLUS中断管理资源的入口。下列服务适合中断设备:NU_Activate_HISRNU_Contr

48、ol_InterruptsNU_Local_Control_InterruptsNU_Create_HISRNU_Current_HISR_PointerNU_Delete_HISRNU_Established_HISRsNU_HISR_InformationNU_HISR_PointersNU_ProtectNU_Register_LISRNU_Setup_VectorNU_UnprotectNeusoft Co.,Ltd.4.7I/O驱动器服务驱动器服务提供访问NucleusPLUS设备驱动器的标准接口。下列服务适合I/O驱动器:NU_Create_DriverNU_Delete_Driv

49、erNU_Driver_PointersNU_Established_DriversNU_Request_DriverNU_Resume_DriverNU_Suspend_DriverNeusoft Co.,Ltd.4.8开发服务开发服务提供访问NucleusPLUS开发支持设备的接口。下列服务适合开发支持:NU_Disable_History_SavingNU_Enable_History_SavingNU_License_InformationNU_Make_History_EntryNU_Release_InformationNU_Retrieve_History_EntryNeusof

50、t Co.,Ltd.4.9服务定义每个NucleusPLUS服务作为本章的保留部分进行描述。服务的描述按字母排序。包含文件(Inclde File)为了使用NucleusPLUS服务,NUCLEUS.H文件必须被包含。编辑选项默认情况下,检查提供给NucleusPLUS服务的参数是否有错。错误检查可以在应用程序C文件中编辑期间通过定义变量NU_NO_ERROR为CHECKING来禁止。看目标编译器文档来决定如何在编辑期间定义变量。标准数据类型NucleusPLUS定义几个标准的数据类型。抛开平台,这些数据类型在尺寸和性能上保持不变。因此,NucleusPLUS服务可以以同样的方式在所有的目标环

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

当前位置:首页 > 生活休闲 > 生活常识

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

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