Nucleus Plus内核技术
ATI 公司使用一种叫做软件组件的方法。所谓软件组件,就是具有明确目的或用途的由1个或数个C语言/汇编源文件的一段非独立执行应用程序,且每个组件都提供一 个定义好的外部接口,必须通过外部接口来使用组件。访问组件内的全局数据结构是被禁止的。使用了组件方法, 软件组件既易于更新也易于重用。Nucleus Plus软件组件通常由定义数据类型、常量以及外部接口的INCLUDE 头文件和一个或多个C语言/汇编源文件组成。Nucleus Plus 提供如下组件:任务控制管理、内存管理、定时器管理、中断、系统诊断、I/O驱动管理等共16个组件如下,
Nucleus Plus Kernel:
Common Service Component(CS)
Initialization Component(IN)
Tread Control Component(TC)
Timer Component(TI)
Mailbox Component(MB)
Pipe Component(PI)
Semaphore Component(SM)
Event Flag Component(EV)
Partition Component(PM)
Queue Component(QM)
Dynamic Memory Component(DM)
I/O Component(I/O)
History Component(HI)
Error Component(ER)
License Component (LI)
Release Component(RL)
Nucleus Plus 除了其功能强大的内核外,还提供了面向INTERNET、TCP/IP、WEB浏览器、图形以及文件系统的软件包。
Nucleus Plus 开发
1.Nucleus Plus 定制
Nucleus Plus 也能根据目标板的需要进行裁剪和定制,生成适合目标系统的操作系统,尽量少占系统内存。OS定制完成后,将其链接到目标应用程序,成为目标应用程序的一部 分。在典型的CISC体系结构的目标板上,它占用约20K 左右的空间,而在RISC体系结构的目标板上占用约40K左右的空间。一般地,Nucleus Plus 足以满足绝大多数的嵌入式应用。ATI公司提供了一个名为BUILD_LI.BAT或PLUS.BAT的批处理文件,用户可以删剪其中的模块,更改相关的 选项或开关,执行该文件生成与目标相关的操作系统,也就是根据系统需要生成定制的操作系统。需要注意的是,该批处理文件的内容与开发工具有关。
2.开发方案
Nucleus Plus可以结合Paradigm、SDS以及ATI的多任务调试器组成功能强大的集成开发环境,配合相应的编译器(Borland c/c++ 编译器、Turbo c/c++ 编译器或者Microsoft c/c++编译器)和动态链接库以及各类底层驱动软件就可以满足嵌入式应用的开发。
3.开发流程
用Nucleus Plus 开发嵌入式应用程序,一般遵循如下步骤:
* 如果有必要,应对低级系统初始化文件.INT进行修改,使之符合目标板的需要。如中断向量、I/O地址、时钟频率等。
* 定义Application _Initialize()函数。该函数在启动系统之前先执行。注意的是要把NUCLEUS.H头文件包括在目标应用程序中,以便利用Nucleus Plus 的服务。
* 定义应用程序的任务。如果调用Nucleus Plus 的服务,要把NUCLEUS.H包含进去。
* 编译/汇编所有的应用程序软件,并且包含系统低级初始化文件.INT。
* 链接.INT和所有的应用程序目标文件、Nucleus Plus库文件以及相关的开发工具库。
* 把生成的最终目标代码下载或烧到目标板上执行。
4.Nucleus Plus 初始化
Nucleus Plus 分三个层次的初始化,即:系统低级 初始化Int-Initialize()、系统高级初始化Inc-Initialize()和应用程序初始化 Application_Initialize(),初始化之后便进入Nucleus Plus 的任务调度循环。各个初始化函数任务见表1。
表1:Nucleus Plus 初始化表
Int_Initialize() |
Inc_Initialize() |
Application_Initialize() |
*设置必要的处理器/系统控制寄存器 |
*初始化Nucleus Plus组件 |
*执行用户定义的初始化,如创建内存池,创建任务、创建信号量、创建队列等 |
5.Nucleus MNT
Nucleus MNT是为软件开发者设计的,在WIN95/NT下构筑Nucleus Plus嵌入式应用的原型(Prototyping)环境。它通过两个库来实现,即针对目标环境的库和针对Win95/NT开发环境的库。开发时,应用程 序代码可以不变,仅仅替换掉MNT库,使用交叉开发工具包重构目标环境下的可执行目标代码,请看图2。
6.开发注意事项
嵌入式开发在内存需求、任务管理等方面存在着特殊性,因此,开发中对以下方面要额外加以注意。
* 任务饥荒
任务优先级的分配要合理,否则会导致系统中的一些任务一直不断地在运行而另一些任务永远得不到运行,引起饥荒。
* 死锁
系统资源的分配要合理,否则会引起两个或多个任务为竞争某一系统资源而处于无限挂起现象。
* 内存
* 内存泄露
内存分配过程中要尽量避免碎片并且要注意及时回收。
* 内存节约
* 默认情况下,Nucleus Plus, 在高级初始化函数Inc_Initialize()中。调用其它函数初始化它所提供的所有特征的数据结构中,有些特征用户目标应用程序可能用不到,为此,要去掉不必要的函数调用。
* 改变Nucleus.H中NU_MAX_LISRS的大小,它定义的是目标处理器的最大中断向量数。
* 改变TC_DEFS.H中TC_PRIORITIES的大小。它定义了任务的优先级数。Nucleus Plus 能支持256个优先级。
* HISR栈共享。
* TCD.C中禁止查询表TCD_LOWEST_SET_BIT的RAM拷贝。
* 使用一个更小的INT选项。
结束语
由于Nucleus Plus 的模块化、可靠、重用、开放、易用以及安全等特性使得它成为嵌入式应用开发的理想平台,尤其是关系到国计民生的领域,如航空/航天、军队、国防等方面。
NUCLEUS+ 实时多任务操作系统开发环境配置
美国著名RTOS 厂商 ATI 公司(Accelerated Technology Incorporated ) 推出的 NUCLEUS+实时多任务操作系统以其微内核技术,原代码提供及广泛的CPU支持种类和易学易用等特点得到了国内众多用户的认可。目前,NUCLEUS+ 实时多任务操作系统在国内的通讯,医疗,控制及数据处理等领域得到了大量的应用。为了使广大的嵌入式应用工程师对NUCLEUS RTOS的开发环境及其配置有一个更全面的了解,我们在此以应用较多的x86系列及68K系列CPU的开发环境为例,对NUCLEUS RTOS 作一个较全面的介绍。
NUCLEUS+的特点:
1、提供源代码
NUCLEUS+提供注释严格的C源级代码给每一个用户。这样,用户能够深入地了解底层内核的运作方式,并可根据自己的特殊要求删减或改动系统软件,这对软件的规范化管理及系统软件的测试都有极大的帮助。另外,由于提供了RTOS的源级代码,用户不但可以进行RTOS 的学习和研究,而且产品在量产时也不必支付License,可以省去大量的费用。
2、性价比高
NUCLEUS+由于采用了先进的微内核 ( Micro-kernel ) 技术,因而在优先级安排,任务调度,任务切换等各个方面都有相当大的优势。另外,对C++语言的全面支持又使得NUCLEUS+的Kernel成为名副其实的面向对象的实时操作系统内核。然而,其价格却比较合理。所以,容易被广大的研发单位接受。
3、易学易用
NUCLEUS+能够结合Paradigm,SDS以及ATI自己的多任务调试器组成功能强大的集成开发环境,配合相应的编译器和动态联结库以及各类底层驱动软件,用户可以轻松地进行RTOS的开发和调试。另外,由于这些集成开发环境 ( IDE ) 为所有的开发工程师所熟悉,因而,容易学习和使用。
4、功能模块丰富
NUCLEUS+除提供功能强大的内核操作系统外,还提供种类丰富的功能模块。例如用于通讯系统的局域和广域网络模块,支持 图形应用的实时化Windows模块,支持Intnet网的WEB产品模块,工控机实时BIOS模块,图形化用户接口以及应用软件性能分析模块等。用户可以根据自己的应用来选择不同的应用模块。
NUCLEUS+支持的CPU类型:
NUCLEUS+ 的 RTOS内核可支持如下类型的CPU:x86,68xxx,68HCxx,NEC V25, ColdFire, 29K,i960, MIPS, SPARClite, TI DSP, ARM6/7, StrongARM, H8/300H, SH1/2/3, PowerPC, V8xx, Panasonic MN10200 等。可以说NUCLEUS+是支持CPU类型最丰富的实时多任务操作系统。
针对各种嵌入式应用,NUCLEUS+ 还提供相应的网络协议(如TCP/IP,SNMP等),以满足用户对通讯系统的开发要求。另外,可重入的文件系统、可重入的C函数库以及图形化界面等也给开发者提供了方便。
针对不同的CPU类型,NUCLEUS 还提供编译器、动态连接库、多任务调试器等相应的工具来配置用户的开发环境。值得提出的是ATI公司最近还发表了基于Microsoft Developers Studio的嵌入式集成开发环境-POWERplant EDE。从而率先将嵌入式开发工具与Microsoft的强大开发环境结合起来,提供给工程师们强大的开发手段。
NUCLEUS+ 对 x86 系列 CPU 的开发环境:
NUCLEUS+的实时多任务环境由编译器 ( Compiler ) ,连接定位器 ( Linklocater ) ,多任务调试器 ( Multi-task Debugger ) ,监控器 ( Monitor ) 以及相应的动态连接库组成。 NUCLEUS+提供标准的接口平台以支持优秀的第三厂商软件工具。用户可以根据自己的应用和系统的要求来选择相应的工具。例如 Microsoft C/C++、Borland C/C++、Turbo C/C++、Metaware High C、Parlap C 等编译器 (Compiler) ,Paradigm 的 连接定位器 (Linklocater) 和Turbo Debugger、SSI 的 Linkerlocater 和 Debugger 等都可以满足用户不同的应用要求。
一般说来,用户在设计x86嵌入式系统时可能用到 x86 CPU 的实模式或者保护模式。对于这两种模式,用户的开发环境将会不同。
首先,对于所有的 80C186/188 用户以及大多数的 386DX/SX/EX用户来说,由于所设计的系统比较简单,程序量相对不大,因而只用到x86的实模式。在开发和调试这样的系统时,可选择常用的 MC、BC、TC 等编译器。而连接定位器和调试器要用 Paradigm 的工具。配合相应的动态连接库 Paradigm/DLL,便可以组成 NUCLEUS+的实模式开发环境。
对于一些系统较复杂的386用户来说,由于所需的寻址空间太大,因而要使用其保护模式。这时,只能选择 SSI 的连接定位器和调试器。配合相应的动态连接库 SSI/DLL,组成NUCLEUS+的开发环境。
无论是 Paradigm 调试器还是SSI的多任务调试器,用户都可以在这个环境中方便的进行任务级调试。
NUCLEUS+对68K 系列CPU的开发环境:
对于整个 Motorola 系列CPU来说,目前国际上最为流行的是SDS公司的 SingleSTEP集成开发 软件。从编辑、编译、连接定位、调试和模拟等,SDS工具展示了当今嵌入式领域最先进的调试技术。通过动态连接库 SDS/DLL,NUCLEUS+可以全面的结合到 SDS 的开发环境中,用户可以充分地体验实时多任务环境带来的极大的方便性。
SDS 的编译器可以编译 68K 系列 CPU 中的任何一种。用户只须在菜单中选择所须的 CPU项,然后进行编译和连接。生成的代码可立即在这个环境中进行调试,例如单步执行,设置断点,全速运行等。配合相应的多任务工具,用户还可以进行任务之间的切换和调试。
在 Motorola 较新的芯片中,例如 683xx,PPC860等,片内均带有BDM(背景调试模式) 接口。用户在开发此类芯片时,可用 SDS 的 On-Chip Debugger。利用 RS232 口将目标板与PC机(或工作站)相接,用户可直接在调试器上看到源级代码,任务队列,并完全控制目标板的执行。
对于68000/010/020/030/040等没有BDM接口的CPU,用户必须在目标板上生成相应的监控程序,完成目标板与主机之间的通讯。然后利用RS232串行口来进行调试。
无论目标系统采用的是68K系列中的哪一块芯片,SDS的SinglSTEP都将给NUCLEUS+提供强大的开发环境,为用户带来灵活方便的调试手段。
NUCLEUS+对RISC的支持
以Intel公司的i960系列、Motorola公司的PPC860、AMD公司的29K等为代表的RISC芯片为较复杂的嵌入式应用带来了极大的方便。目前,国内基于i960系列及PPC860的系统在日益增多,对相应的RTOS及开发工具的需求也应运而生。
NUCLEUS+对于这类RISC芯片提供了相应的UBD(通用调试器)来组成其开发平台。用户选用相应的编译器和监控器,便可配置出所需的开发环境。