NUCLEUS介绍
Nucleus Plus是美国源代码操作系统商ATI公司推出的新一代嵌入式操作系统,属于抢先式实时多任务操作系统内核, 95%的代码使用ANSI C编写,非常便于移植于各种处理器家族。MTK平台使用的就是Nucleus。
内核技术
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)
其中:
* IN:负责初始化Nucleus Plus 系统
* TC:负责管理Nucleus Plus的抢占式实时任务和HISR的运行
* CS:负责提供具有链接列表其它的设备Nucleus Plus 组件
* TM:负责管理所有的Nucleus Plus 定时器设备。Nucleus Plus 的基本定时单元为一个Tick,它相当于一次硬件定时器中断
* MB:负责管理所有的Nucleus Plus 信箱设备
* QM:负责管理所有的Nucleus Plus 队列设备
* PI :负责管理所有的Nucleus Plus 管道设备
* SM:负责管理所有的Nucleus Plus 信号量设备
* EV:负责管理所有的Nucleus Plus 事件组设备
* PM:负责管理所有的Nucleus Plus 分区内存
* DM:负责管理所有的Nucleus Plus 动态内存
* I/O:负责管理所有的Nucleus Plus 输入/输出
* HI:负责Nucleus Plus的历史设备管理
* ER:负责管理所有的Nucleus Plus 系统错误
* LI:负责Nucleus Plus的许可证管理
* RL:负责Nucleus Plus 的版本管理
Nucleus Plus 其它功能模块
Nucleus Plus 分三个层次的初始化,即:系统低级初始化Int-Initialize()、系统高级初始化Inc-Initialize()和应用程序初始化Application_Initialize(),初始化之后便进入Nucleus Plus 的任务调度循环。各个初始化函数任务见表1。
Int_Initialize()
Inc_Initialize()
Application_Initialize()
* 设置必要的处理器/系统控制寄存器
* 初始化中断向量表
* 设置系统堆栈寄存器
* 计算定时器HISR堆栈和优先级
* 计算系统第一个可用内存
* 将控制交给系统高级初始化例程
* 初始化Nucleus Plus 组件
* 将控制交给应用程序初始化例程
* 任务调度
* 执行用户定义的初始化,如创建内存池,创建任务、创建信号量、创建队列等