没有合适的资源?快使用搜索试试~ 我知道了~
Nucleus实时操作系统分析报告.pdf
需积分: 0 6 下载量 82 浏览量
2010-05-22
18:15:53
上传
评论
收藏 326KB PDF 举报
温馨提示
试读
35页
Nucleus实时操作系统分析报告,讲解nucleus的结构,启动过程及nucleus上开发的语言
资源详情
资源评论
资源推荐
Nucleus 分析报告
Nucleus 实时操作系统分析报告
目 录
一、 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
SINGLESTEP.......................................................................................................................31
三、 NUCLEUS 的网络支持...............................................................................................................33
3.1 I
NTERNET 套件 ..........................................................................................................................33
Nucleus NET..........................................................................................................................................33
Nucleus SNMP.......................................................................................................................................33
Nucleus RMON......................................................................................................................................34
Nucleus SPAN ........................................................................................................................................34
3.2 N
UCLEUS WEBSERV ..................................................................................................................34
3.3 N
UCLEUS JVI..............................................................................................................................34
3.4 N
UCLEUS EPILOGUE...............................................................................................................34
1
Nucleus 分析报告
Nucleus 实时操作系统分析报告
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、D
ebugger 是不同的(要另外购买),而且编译预处理的过
程也是不一样的,这就要投入一部分力量去进行操作系统的移植。当然,这也是 Nucleus 的一个
优点,VxWorks 和 pSOS 都没有源码,换一个系列的 CPU 操作系统又要重新购买,实际上他们
OS 开发的工作量并没有多少,但却造成了用户的重复性投资。
2
Nucleus 分析报告
一、 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
3
Nucleus 分析报告
的启动函数,标号 START 是系统的入口点。START 标号在文件 start.s 中,用汇编及 CrossCode C
的宏指令写的。主要完成 68360 中断向量表指针 VBR 和寄存器基址 MBAR 的初始化,以及外
部 RAM 各分区的初始化,这些分区包括:ram,data,malloc,init,sys_memory 等。
系统低级初始化完成后,控制就交给初始化线程 INT_Initialize。
1.2 初始化线程
初始化线程是系统开始执行的第一个线程,线程的入口是 INT_Initialize,同时也是系统的
主函数,具有另外的标号名 ma
in。
系统初始化首先完成硬件寄存器的配置,包括:存储器片选(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_Execut
e_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 的线程有两种类型的堆栈帧:
线程入口
PC
值
SR
保留
A6~A0
D7~D0
堆栈类型为
1
线程入口
PC
值
A6~A2
D6~D2
堆栈类型为
0
Interrupt
堆栈类型
Solicited
堆栈类型
//ben:有什么区别呢?
4
Nucleus 分析报告
任务创建时,要建立一个初始堆栈帧,线程入口是 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。
TCD_Highest_Priority:当前就绪任务的最高优先级,并不表示当前正在运行任务的优先级,
如果该任务不能抢占。
TCD_Execute_Task:当前正在执行的任务指针。
TCD_Current_Thread:当前正在执行的线程指针(TASK or HISR)。
Nucleus 的任务具有五种状态:executing,ready, suspended,finished,terminated。
Executing:任务正在执行,但是其任务控制块 TCB 中的状态 tc_status 仍为 NU_READY,
只是该任务的指针等于当前线程 TCD_Current_Thread。
Ready:任务已就绪,但是有其它任务在运行。
Suspended:任务在等待请求服务完成的过程中被挂起,一旦请求服务完成,任务就会迁移
至 ready 状态。
Finished:该任务的处理已经完成(在 TCC_Task_Shell 调度中返回)。一旦任务处于这种状
态就不能再执行了,除非任务被复位。
Terminated:任务被 Killed。一旦任务处于这种状态就不能再执行了,除非任务被复位。
Nucleus 的每个任务都具有一个 0~255 的优先级,0 表示最高优先级,255 表示最低优先级,
对于相同优先级的任务分时间片运行,不同优先级的任务则可以发生抢占。
任务的调度涉及到:创建任务、删除任务、复位任务、终止任务、恢复任务、挂起任务等。
①、创建任务(TCC_Create_Task)
任务的创建一般是在 Application_Initialize 中进行,当然也可以在其它任务中动态地创建和
删除任务。任务创建的流程如下:
5
剩余34页未读,继续阅读
第五无邪
- 粉丝: 3
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0