Embedded 版 (精华区)

发信人: twoday (影子), 信区: Embedded_system
标  题: Nucleus Plus在嵌入式系统应用
发信站: 哈工大紫丁香 (2002年07月13日22:00:11 星期六), 站内信件

发信站: 武汉白云黄鹤站 (2001年04月25日17:50:31 星期三), 站内信件

作者:海军计算技术研究所(北京100841)丁宜栋      来源:《电子产品世界》


    Nucleus Plus在嵌入式系统应用

------------------------------------------------------------------------
----
----
    Nucleus Plus是美国源代码操作系统商ATI公司推出的新一代嵌入式操作系统
,属于
抢先式实时多任务操作系统内核, 95%的代码使用ANSI C编写,非常便于移植于各
种处
理器家族。从实现的角度讲,不同于传统嵌入式开发,Nucleus Plus是以函数库的
形式
链接到目标应用程序中,形成可执行目标代码,下载到目标板上或烧到
ROM/FLASH ROM 
中去执行。Nucleus Plus内核在典型的CISC体系结构上占据大约20k空间,而在典
型的R
ISC体系结构上占据空间为40k左右,其内核数据结构占据1.5k字节的空间。
Nucleus Pl
us以其实时响应、抢先、多任务以及源代码开放特性获得在通讯、国防、工业控制
、航
空/航天、铁路、网络、POS、自动化控制、智能家电等领域的广泛应用。
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浏
览器、图形以及文件系统的软件包,参阅图1。
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++ 编译器或者
Micr
osoft 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()
*设置必要的处理器/系统控制寄存器
*初始化中断向量表
*设置系统堆栈寄存器
*计算定时器HISR堆栈和优先级
*计算系统第国个可用内存
*将控制交给系统高级初始化例程 *初始化Nucleus Plus组件
*将控制交给应用程序初始化例程
任务调度
 *执行用户定义的初始化,如创建内存池,创建任务、创建信号量、创建队列等
     5.Nucleus MNT
    Nucleus MNT是为软件开发者设计的,在WIN95/NT下构筑Nucleus Plus嵌入式
应用的
原型(Prototyping)环境。它通过两个库来实现,即针对目标环境的库和针对
Win95/N
T开发环境的库。开发时,应用程序代码可以不变,仅仅替换掉MNT库,使用交叉开
发工
具包重构目标环境下的可执行目标代码,请看图2。
    6.开发注意事项
    嵌入式开发在内存需求、任务管理等方面存在着特殊性,因此,开发中对以下
方面
要额外加以注意。
    * 任务饥荒
    任务优先级的分配要合理,否则会导致系统中的一些任务一直不断地在运行而
另一
些任务永远得不到运行,引起饥荒。
    * 死锁
    系统资源的分配要合理,否则会引起两个或多个任务为竞争某一系统资源而处
于无
限挂起现象。
    * 内存
    * 内存泄露
    内存分配过程中要尽量避免碎片并且要注意及时回收。
    * 内存节约
    * 默认情况下,Nucleus Plus, 在高级初始化函数Inc_Initialize()中。
调用其
它函数初始化它所提供的所有特征的数据结构中,有些特征用户目标应用程序可能
用不
到,为此,要去掉不必要的函数调用。
    * 改变Nucleus.H中NU_MAX_LISRS的大小,它定义的是目标处理器的最大中断
向量
数。
    * 改变TC_DEFS.H中TC_PRIORITIES的大小。它定义了任务的优先级数。
Nucleus P
lus 能支持256个优先级。
    * HISR栈共享。
    * TCD.C中禁止查询表TCD_LOWEST_SET_BIT的RAM拷贝。
    * 使用一个更小的INT选项。
结束语
    由于Nucleus Plus 的模块化、可靠、重用、开放、易用以及安全等特性使得
它成为
嵌入式应用开发的理想平台,尤其是关系到国计民生的领域,如航空/航天、军队
、国防
等方面。

--
※ 来源:·武汉白云黄鹤站 bbs.whnet.edu.cn·[FROM: 202.114.10.253]

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 61.185.239.36]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.477毫秒