欢迎来到天天文库
浏览记录
ID:41092003
大小:30.00 KB
页数:8页
时间:2019-08-16
《Nucleus操作系统-实时内核介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Nucleus操作系统-实时内核介绍第二章NucleusPLUS内核介绍 2.1NucleusPLUS应用开发综述 2.1.1开发调试环境 嵌入式实时应用程序的开发基于宿主机系统。IBMPC和UNIX工作站都是典型的宿主机系统。一般来说,应用程序都是运行在分离的计算机系统上被目标系统调用。然而,IBMPC系统并不遵循上述规则,因为它既可以作为NucleusPLUS应用程序的主机,也可为目标机为其服务。运行在IBMPC系统上的应用程序以EXE文件的形式存在。 针对目标系统的调试软件通常包括
2、ICE仿真工具和TRM(目标仿真)工具。ICE仿真工具给工程师提供了完全控制和了解目标系统硬件状况的工具,特别是在校验新硬件时尤为有用。但是,考虑到开发工具成本问题和ICE时有的使用局限性,许多项目采用TRM调试。TRM就是一个运行在目标系统(通常为ROM)上的小型的软件组件。TRM提供包括下载、下断点和内存入口服务。ICE和TRM都有宿主系统控制。这通常由串口来完成。 2.1.2使用NucleusPLUS NucleusPLUS被设计成C库的形式使用。使用内部应用程序软件的服务从Nucle
3、usPLUS库文件取出并且组合成应用程序目标文件来生成最终的映像文件。此映像文件可以下载到目标系统或是存放到目标系统ROM中。 使用NucleusPLUS的步骤被描述成下列通用的方式: 1)如果有必要,修改低级系统初始化文件,INT.S。注:这些文件通常以汇编语言形式交货并且它的的扩展是指定的开发工具。 2)定义Application_Initialize函数,NucleusPLUS启动系统时它优先运行。注意NUCLEUS.H文件必须包含以至于能被NucleusPLUS服务调用。 3
4、)定义应用程序任务。如果用到NucleusPLUS服务,文件NULCUES.H必须被包含。 4)编译所有应用程序软件,包括低级系统初始化文件INT.s。 5)用NucleusPLUS库和必要的开发工具库连接INT.a和所有应用程序目标文件。 6)下载应用程序映像文件到目标系统并运行。 2.1.3初始化 INT_Initialize程序在NucleusPLUS内核中是最先运行的程序。对大多数的目标环境而言,硬件复位向量必须包含在INT_Initialize地址中。INT_In
5、itialize程序主要负责所有与目标硬件相关的初始化,通常包括设置不同种类处理器的控制寄存器、中断向量表、全局C数据元素、NucleusPLUS的一些变量以及系统的堆栈指针。当INT_Initialize程序执行完成后,控制权交给到NucleusPLUS上一层初始化程序INC_Initialize,并且控制权不会再返回给INT_Initialize程序。INC_Initialize调用每一个NucleusPLUS组件的初始化程序进行初始化操作,在所有NucleusPLUS初始化完成之后,它还调用用
6、户提供的初始化程序Application_Initialize。 Application_Initialize程序负责定义初始化应用环境,包括初始化应用任务、邮箱、队列、管道、信号量、事件集、内存池和其他NucleusPLUS对象。在Application_Initialize返回后,INC_Initialize程序开始初始化任务调度表。 2.2实现约定 AcceleratedTechnology(ATI)使用软件组件方法学。组件具有简单、清晰的优点,一个软件组件往往只包括几个C程序和汇编
7、程序。并且,每一个软件组件都有特定的目的和提供给其他组件的外部接口,使得可以通过外部接口来方便的使用组件。在组件方法中,除了很少的特例外,一般不允许在组件外访问组件的全局数据结构。由于采用了组件方法学,NucleusPLUS具有代码清晰、模块化、可靠、可复用和易于维护的特点。 2.2.1组件的组成 一个软件组件通常包含头文件、一个或多个C程序文件,有的还包括汇编程序文件。包含的文件的文件名满足如下的约定:文件含义XX_DEF.H定义组件的常量和数据类型XX_EXTR.H定义组件的外部接
8、口,以函数原型的形式定义XXD.C定义组件的静态和全局变量,除很少的特例外,一个组件的数据结构只能被本组件访问XXI.C定义组件的初始化函数XXF.C提供被组件管理的对象的信息XXC.C提供组件的核心函数XXS.C提供组件核心函数的错误处理外壳函数XXS.C组件的补充定义函数XXSE.C提供组件补充定义函数的错误处理外壳函数 2.2.2命名规则 1、组件命名组件名字一般限于两个字符。组件名字作为构造组件的每个文件名的首两个字符。例如:动态内存管理组件(Dyna
此文档下载收益归作者所有