Nucleus Plus操作系统综述_第1页
Nucleus Plus操作系统综述_第2页
Nucleus Plus操作系统综述_第3页
Nucleus Plus操作系统综述_第4页
Nucleus Plus操作系统综述_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Chapter1、ATI公司简介■公司全称:AcceleratedTechnologyInc.■成立于1990年8月■总部在美国Alabama州的Mobile■在美国的加利佛尼亚,德克萨斯,马塞诸塞,佛罗里达以及田纳西等设有分支机构■在英国、法国和德国设有分支机构■在日本、韩国、澳大利亚、台湾、中国、意大利和俄罗斯等国设有代理商1990年推出Nucleus实时多任务操作系统■专注于RT0S的研发、销售和技术应用及技术支持1993年成为MOTOROLA推荐的四大RTOS厂商之一1994年推出全球唯一的MNT虚拟开发平台1994年推出全球唯一的VNET网络化虚拟平台1994年成功地推出Java和RTOS产品1995年成为全球第一大源代码RTOS厂商1996年选定旋极科技公司为其中国大陆及香港地区独家代理商1997年公司员工数量为82人,成为美国大型的RTOS厂商1998年NET4.2成功推出1998年成功推出机顶盒方案和OSEK汽车电子方案1999年推出WebBrowser浏览器1999年ATI公司员工数量为150人,已成为美国成长速度最快的嵌入式操作系统公司2000年NET4.4成功推出,完善了NUCLEUS的网络模块ATI,AcceleratedTechnologyInc现在是MentorGraphicsESD、NucleusPLUS的特点:

NucleusPLUS是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%代码是用ANSIC写成的,因此非常便于移植并能够支持大多数类型的处理器。从实现角度来看,NucleusPLUS是一组C函数库,应用程序代码与核心函数库连接在一起,生成一个目标代码,下载到目标板的RAM中或直接烧录到目标板的ROM中执行。在典型的目标环境中‘NucleusPLUS核心代码区一般不超过20K字节大小。NucleusPLUS采用了软件组件的方法。每个组件具有单一而明确的目的,通常由几个C及汇编语言模块构成,提供清晰的外部接口,对组件的引用就是通过这些接口完成的。除了少数一些特殊情况外,不允许从外部对组件内的全局进行访问。由于采用了软件组件的方法,NucleusPLUS各个组件非常易于替换和复用。NucleusPLUS的组件包括任务控制、内存管理、任务间通信、任务的同步与互斥、中断管理、定时器及I/O驱动等。NucleusPLUS具有如下特点:1、 提供源代码NucleusPLUS提供注释严格的C源代码给每一个用户。这样,用户能够深入地了解底层内核的运作方式,并可根据自己的特殊要求删减或改动系统软件,这对软件的规范化管理及系统软件的测试都有极大的帮助。另外,由于提供了RTOS的源代码,用户不但可以进行RTOS的学习和研究,而且产品在量产时也不必支付License,可以省去大量的费用。对于军方来说,由于提供了源代码,用户完全可以控制内核而不必担心操作系统中可能会存在异常任务导致系统崩溃。2、 性价比高NucleusPLUS由于采用了先进的微内核(Micro-kernel)技术,因而在优先级安排,任务调度,任务切换等各个方面都有相当大的优势。另外,对C++语言的全面支持又使得NucleusPLUS的Kernel成为名副其实的面向对象的实时操作系统内核。然而,其价格却比较合理。所以,容易被广大的研发单位接受。3、易学易用

NucleusPLUS能够结合Paradigm,SDS以及ATI自己的多任务调试器组成功能强大的集成开发环境,配合相应的编译器和动态联结库以及各类底层驱动软件,用户可以轻松地进行RTOS的开发和调试。另外,由于这些集成开发环境(IDE)为所有的开发工程师所熟悉,所以容易学习和使用。4、功能模块丰富NucleusPLUS除提供功能强大的内核操作系统外,还提供种类丰富的功能模块。例如用于通讯系统的局域和广域网络模块,支持图形应用的实时化Windows模块,支持Internet网的WEB产品模块,工控机实时BIOS模块,图形化用户接口以及应用软件性能分析模块等。这样,用户就可以根据自己的应用来定制不同的应用模块。NucleusPLUS支持的CPU类型:NucleusPLUS的RTOS内核可支持如下类型的CPU:x86,68xxx,68HCxx,NECV25,ColdFire,29K,i960,MIPS,SPARClite,TIDSP,ARM6/7/9,StrongARM,H8/300H,SH1/2/3,PowerPC,V8xx,Tricore,Mcore,PanasonicMN10200,Tricore,Mcor等。可以说NUCLEUS+是支持CPU类型最丰富的实时多任务操作系统。针对各种嵌入式应用,NucleusPLUS还提供相应的网络协议(如TCP/IP,SNMP等),以满足用户对通讯系统的开发要求。另外,可重入的文件系统、可重入的C函数库以及图形化界面等也给开发者提供了方便。针对不同的CPU类型‘Nucleus还提供编译器、动态连接库、多任务调试器等相应的工具来配置用户的开发环境。值得提出的是ATI公司最近还发表了基于MicrosoftDevelopersStudio的嵌入式集成开发环境一NUCLEUSEDE。从而率先将嵌入式开发工具与Microsoft的强大开发环境结合起来,提供给工程师们强大的开发手段。三、源代码带来的优势众所周知,Nucleus实时多任务操作系统提供给用户源代码。这除商务上给用户带来巨大益处(免交Royalty)夕卜,还在技术方面给用户极大的方便,即无需编写和调试BSP,从而达到易学易用的目的,加速产品上市。

对RTOS有一定知识的工程师一定清楚,使用RTOS最大的障碍在于编写和调试BSP。大家知道,在调试目标系统的软件之前,必须将目标与主机连接起来并建立通讯。为此,我们可以编写一段监控程序(Monitor)。然而,如果要调试基于RTOS内核的程序,主机上的调试器(Debugger)除要与目标建立通讯外,更重要的是必须识别RTOS的任务,这样才能进行任务级调试(Task-awareDebugger)。因此,只有Monitor是不够的。如果我们选用的RTOS不提供源代码,那么,主机上的调试器(Debugger)就只有通过用户编写的BSP来了解Kernel在现有硬件平台上对各个任务进行调度的情况。显然,编写BSP必须对CPU目标系统的硬件以及应用软件等有全面而深入的了解。一般说来,对于一个有一定硬件开发经验的工程师来说,编写一个新的BSP要花的平均时间为两个月左右。这对于一个新手来说可是比较困难的。对于编写BSP的工程师来说,另外一个更大的挑战就是如何调试BSP,即如何验证所编写的BSP是否正确。通常刚刚焊接安装好的PCB板中,硬件或软件的故障(Bugs)是比较多的。甚至更常见的是CPU部分都没有运作正常。有时时序错误和总线错误都还存在。在您把写好的BSP烧入EPROM(或FLASH)中试图将目标与主机建立联系时,您几乎100%地会发现根本无法通讯,眼前一团漆黑,不知是软件有错误还是硬件不运转oBSP在正常运行吗?不得而知。在焦急和摸索中您可能发现几个月已悄然而过。对于早期的实时操作系统来说,BSP是必由之路。然而,新一代的RTOS-NucleusPLUS则避免了BSP带来的痛苦过程,因为Nucleus的调试是基于全新的动态连接库(DLL)。用户只须通过监控程序(Monitor)或者BDM调试口(或者JTAG调试口)建立目标系统(Target)与主机(Host)之间的通讯,并给主机上的Debugger初始化特性中加入Nucleus的动态连接库(DLLs),这时,调试器就能够自动地去识别运行在目标系统中的Nucleus内核和各个应用任务,从而完成任务级调试。上述的动态连接库(DLLs)是由RTOS厂商和Debugger厂商合作完成的,用户无须自行编写。因此,Nucleus的用户只需要将精力放在基于Nucleus的编程工作中。对于一个新手,往往经过一天到两天的学习和培训,就可以投入到应用程序编制工作中去,无需花大量的时间去研究CPU,特定的硬件等。另外,由于有了源程序,用户在调试程序时可以清楚地通过STEPINTO命令,追踪到RTOS

的内层中去,观看和学习Kernel对任务的管理和调度机制。对于有志研究RTOS深层技术的工程师来说极为方便。对于Motorola68K和PowerPC,用户可以利用GreenHill公司的Mutil调试器或TRACE-ICD来完成NucleusPLUS的调试;对于ARM和StrongARM,用户可以利用ARM公司的SDT251调试器或TRACE-ICD来完成NucleusPLUS的调试;对于Intelx86实模式,用户可以利用Paradigm公司的调试器及其DLL来进行任务级调试;对于Intelx86保护模式则可以利用SSI公司Softprobe调试器和SSIDLL来调试;对于i960,SH3/4,ARM6/7,MIPS等芯片,则可以使用ATI公司自己的UDB调试器来进行任务的调试。结论:动态连接库(DLL)是在RTOS工具中新出现的应用趋势,通过这种方式,用户可以免去BSP带来的麻烦,灵活方便地进行开发和调试,大大加速开发进度。Nucleus实时操作系统提供源代码,支持丰富的CPU种类,配合各类DLL动态连接库,为使用和研究RTOS技术的工程带来极大的利益。四、Nucleus的应用领域和国内外用户Nucleus主要应用领域在:网络、路由、桥接、Hubs、数据通讯、顶置盒、数字摄像机、ISDN、调制器、数字绘图仪、GSM、蜂窝电话、PDA、打印机、GPS、无线通讯、汽车、医疗仪器、RAID、适配卡、智能卡、安全保密、工业控制、扫描仪、煤气分析仪、游戏机、多媒体、手持产品、消费产品、局域网、广域网、导航设备、卫星通信、自动提款机、视频产品、条码机、过程控制等等Nucleus部分典型的用户名单:AT&T/Lucemt,Blaupunkt,CompaqComputer,Canon,ChryslerTechnologies,DassaultSA,DOD,DraperLabs,EastmanKodak,FordMotorCompany,GeneralMotors.GeneralElectric,GEMedical,GoddardSpaceFlightSystems,Fujitsu,HarrisDigitalPhone,HewlettPackard,IBM,IGTInterfaceSystems,KenwoodCorporation,Lucent,MannesmannTallyCorp,M.I.T.,Motorola,NASA,NEC,NetworkPeripherals,Nippon

Denso,MSABaseline,OrbitelMobileComm,PsiPrinterGmbH,PhilipsSemiconductor,RockwellInternational,SagemSA,SamsungElectronics,Siemens,SonyCorp,StorageTechnology,TexasInstruments.TakasagoCorp,Toyota,VideoLottery,VideoGuide,VLSI,Westinghouse,Xircom,Zitel■国内部分用户:航天部204所,邮电部数据所,北京卡斯特,航空咅614所,中科院沈阳自动化所,北京千网数据公司,北京凌云公司,清华大学,长沙国防科技大学,复旦大学,华北电力大学,郑州信息工程学院,烟台东方电子集团,深圳桑达,上海博达,深圳迈瑞,深圳天地通讯,铁道部大连内燃机车研究所,总参机要局,南京南瑞总公司,航天第二设计院,西安仪表,郎讯(中国)有限公司,海军计算所,恒基伟业,广州金鹏集团,杭州东方集团,福州新大陆,深圳康佳,西安东强,北京华大集成电路设计中心,广东信利集团,香港IDT,香港讯研,太原中航仪表集团,新科电子,上海中兴,上海广电,石家庄54所,总参56所,武汉邮科院,上海德理,上海贝尔,斯高柏(C-Cube)、航天部503所等等开发信息:开发平台WindowsNT,支持处理器x86,68k,PPC,MCORE,NationalSemiconductorNSCR16A/16B/32A,29K,TMS320Cxx,MIPS,H8,i960(rx,hx,ix,kx,sx),Coldfire,MN10200,8xx,PowerPC403/505/601/821/823/860,SH支持实验板NucleusPLUS:Intel8086/80186,Intel80386/80486,Motorola680x0/683xx,68HC11,ARM,NationalSemiconductor80486,IDT30xx/4600/4640Chapter21NucleusPLUS应用开发综述1.1开发调试环境嵌入式实时应用程序的开发基于宿主机系统。IBMPC和UNIX工作站都是典型的宿主机系统。一般来说,应用程序都是运行在分离的计算机系统上被目标系统调用。然而,IBMPC系统并不遵循上述规则,因为它既可以作为NucleusPLUS应用程序的主机,也可为目标机为其服务。运行在IBMPC系统上的应用程序以EXE文件的形式存在。针对目标系统的调试软件通常包括ICE仿真工具和TRM(目标仿真)工具。ICE仿真工具给工程师提供了完全控制和了解目标系统硬件状况的工具,特别是在校验新硬件时尤为有用。但是,考虑到开发工具成本问题和ICE时有的使用局限性,许多项目采用TRM调试。TRM就是一个运行在目标系统(通常为ROM)上的小型的软件组件。TRM提供包括下载、下断点和内存入口服务。ICE和TRM都有宿主系统控制。这通常由串口来完成。2.1.2使用NucleusPLUSNucleusPLUS被设计成C库的形式使用。使用内部应用程序软件的服务从NucleusPLUS库文件取出并且组合成应用程序目标文件来生成最终的映像文件。此映像文件可以下载到目标系统或是存放到目标系统ROM中。使用NucleusPLUS的步骤被描述成下列通用的方式:1) 如果有必要,修改低级系统初始化文件,INT.S。注:这些文件通常以汇编语言形式交货并且它的的扩展是指定的开发工具。2) 定义Application_Initialize函数,NucleusPLUS启动系统时它优先运行。注意NUCLEUS.H文件必须包含以至于能被NucleusPLUS服务调用。3) 定义应用程序任务。如果用到NucleusPLUS服务,文件NULCUES.H必须被包含。4) 编译所有应用程序软件,包括低级系统初始化文件INT.s。5) 用NucleusPLUS库和必要的开发工具库连接INT.a和所有应用程序目标文件。6)下载应用程序映像文件到目标系统并运行。2.1.3初始化INT_Initialize程序在NucleusPLUS内核中是最先运行的程序。对大多数的目标环境而言,硬件复位向量必须包含在INT_Initialize地址中。INT_Initialize程序主要负责所有与目标硬件相关的初始化,通常包括设置不同种类处理器的控制寄存器、中断向量表、全局C数据元素、NucleusPLUS的一些变量以及系统的堆栈指针。当INT_Initialize程序执行完成后,控制权交给到NucleusPLUS上一层初始化程序INC_Initialize,并且控制权不会再返回给INT_Initialize程序。INC_Initialize调用每一个NucleusPLUS组件的初始化程序进行初始化操作,在所有NucleusPLUS初始化完成之后,它还调用用户提供的初始化程序Application_Initialize。Application_Initialize程序负责定义初始化应用环境,包括初始化应用任务、邮箱、队列、管道、信号量、事件集、内存池和其他NucleusPLUS对象。在Application_Initialize返回后,INC_Initialize程序开始初始化任务调度表。2.2实现约定AcceleratedTechnology(ATI)使用软件组件方法学。组件具有简单、清晰的优点,一个软件组件往往只包括几个C程序和汇编程序。并且,每一个软件组件都有特定的目的和提供给其他组件的外部接口,使得可以通过外部接口来方便的使用组件。在组件方法中,除了很少的特例外,一般不允许在组件外访问组件的全局数据结构。由于采用了组件方法学,NucleusPLUS具有代码清晰、模块化、可靠、可复用和易于维护的特点。2.2.1组件的组成一个软件组件通常包含头文件、一个或多个C程序文件,有的还包括汇编程序文件。包含的文件的文件名满足如下的约定:文件含义XX_DEF.H定义组件的常量和数据类型XX_EXTR.H定义组件的外部接口,以函数原型的形式定义XXD.C定义组件的静态和全局变量,除很少的特例外,一个组件的数据结构只能被本组件访问XXI.C定义组件的初始化函数XXF.C提供被组件管理的对象的信息XXC.C提供组件的核心函数XXS.C提供组件核心函数的错误处理外壳函数XXS.C组件的补充定义函数XXSE.C提供组件补充定义函数的错误处理外壳函数2.2.2命名规则1、组件命名组件名字一般限于两个字符。组件名字作为构造组件的每个文件名的首两个字符。例如:动态内存管理组件(DynamicMemoryManagementComponent)名字:DM,构成DM的文件:DM_DEFS.HDM_EXTR.HDMC. CDMCE.CDMI.CDMF.CDMD. C2、宏定义名字宏名由下划线、大写字母和数字字符构成。最大支持长度为31个字符。此外一个宏定义首3个字符是CC_,其中“CC”与定义该宏的文件名的首2个字符相同。例如:对于EX_DEFS.H文件)#defineEX_MY_CONSTANT103、 结构体名字结构体名字由下划线、大写字母和数字字符构成。最大支持长度为31个字符。此外,一个结构体名的首3个字符是CC_,其中“CC”与定义该结构体的文件名的首2个字符相同。例如:(对于EX_DEFS.H)structEX_MY_STRUCT{intex_member_a;intex_member_b;intex_member_c;};4、 typedef名字typedef定义新结构体名字由下划线、大写字母和数字字符构成。最大支持长度为31个字符。此外,一个由typedef定义新结构体名字的首3个字符是CC_,其中“CC”与定义由typedef命名结构体的文件名的首2个字符相同。例如:(对于EX_DEFS.H文件)typedefstructEX_MY_STRUCT{intex_member_a;intex_member_b;intex_member_c;}EX_MY_TYPEDEF;5、 结构体成员名字结构体成员名字由下划线、大写字母和数字字符构成,最大支持长度为31个字符。此外,一个结构体成员名字的首3个字符是CC_,其中“cc”与包含该结构体定义的文件'cc_defs”的首2个字符相同。例如:(对于EX_DEFS.H文件)structEX_MY_STRUCT{intex_member_a;intex_member_b;intex_member_c;};6、 全局变量名字NucleusPLUS全局变量名由下划线以及紧跟着每个下划线的一个大写字母、小写字母、数字字符组成,最大支持长度为31个字符。此外,一个全局变量名字的首3个字符是CCC,其中“CCC”与包含实际变量描述的文件“ccc.C”的首3个字符相同。例如:(对于EXD.C文件)intEXD_Global_Integer;7、 局部变量命名局部变量名由小写字母、有可能是下划线或数字字符组成,最大支持长度为31个字符。局部变量名字没有要求包含定义它们的文件的首3个字符。例如:(对于EXD.C文件)/*Assumethefollowingdeclarationisinsideafunction.*/intI;8、函数名字Nucleus函数名字由下划线以及紧跟在下划线的一个大写字母、小写字母、数字组成,最大支持长度为31个字符。此外,一个函数名的首3个字符与包含该函数定义的文件名相同。例如:(对于EXD.C文件)voidEXD_My_Function(unsignedinti){3软件概述2.3.1基本用法NucleusPLUS通常是以C语言库的形式实现的。实时NucleusPLUS应用程序和NucleusPLUS库链接在一起生成的目标文件可以被下载到目标板或者固化到ROM中。NUCLEUS.LIB是典型的NucleusPLUS库文件名。它由批处理文件PLUS.BAT运行产生,而且PLUS.BAT文件的内容依赖于所使用的开发工具。1、 运行模式在处理器结构中有管理模式和用户模式之分。由于NucleusPLUS应用任务需要直接地调用需要调用特权指令的系统服务程序,所以NucleusPLUS应用任务通常是在管理模式下运行。这样的实现方法减少了系统服务调用的开销而且便于实现。2、 应用初始化用户有责任提供自己的初始化程序Application_Initialize,该程序应创建任务、队列和其他系统初始化时需要的系统对象。如果应用程序不在系统运行时动态创建和删除系统对象,那么所有的系统对象都应该在Application_Initialize中被创建。用户的Application_Initialize程序一旦返回,多任务立即开始执行。在一些目标环境中,底层的系统初始化文件INT.S、INT.ASM或INT.SRC文件可能需要修改。这些文件初始化系统的定时中断、可用存储空间以及处理器或目标板的其他实体。3、 头文件所有的用户代码在调用NucleusPLUS服务或数据类型时,都必须包含NUCLEUS.H文件。该文件包含数据类型定义、常量定义和所有NucleusPLUS服务函数的原型。不同的NucleusPLUS移植系统,该文件是不同的。2.3.2数据类型NucleusPLUS在NUCLEUS.H文件中定义了标准的数据类型。这些数据类型保证了NucleusPLUS能以相同的风格在不同的目标环境中运行。NucleusPLUS定义的数据类型如下:数据类型含义UNSIGNED32位无符号整数,常被定义为无符号长整型(unsignedlong)的C数据类型SIGNED32位有符号整数,常被定义为有符号长整型(long)的C数据类型IPTION容易操作的最小的数据类型,常被定义为无符号字符型(unsignedchar)的C数据类型DATA_ELEMENT和OPTION数据类型相同UNSIGNEDCHAR8位无符号字符CHAR8位有符号字符STATUS等价于目标C编译器的有符号整数(int)INT整数数据类型,具有word大小VOID等价于目标C编译器的void数据类型(void)UNSIGNED_PTR指向UNSIGNED数据类型的指针BYTE_PTR指向UNSIGNED_CHAR数据类型的指针2.3.3系统服务映射关系1、错误检查NucleusPLUS的主包含文件NUCLEUS.H包含了和《NucleusPLUSReferenceManual》里面定义的函数相匹配的函数的原型。然而,这些NU_*函数并不真是存在。对于绝大多数NucleusPLUS函数,都有一个真正操作的函数,也有一个在调用真正执行操作函数前对用户调用进行错误检查的外壳函数。错误检查条件定义宏NU_ERROR_CHECKING定义和不定义时的具体的系统服务映射关系请参见附录(表格形式,NucleusPLUSInternals文档中的表格)。2、条件编译NucleusPLUS源码有一定的条件编译选项。有一些是在应用程序编译时用到,而绝大多数时在NucleusPLUS系统库编译时可用。Nucleus系统库条件编译标识往往是在一个编译批处理文件中使用。这些条件编译选项控制各种NucleusPLUS系统库特征。这些条件编译选项如下:条件编译选项含义NU_ENABLE_HISTORY运行在特定文件中保存历史记录。注意:仅形如**C.C的文件受该选项影响NU_ENABLE_STACK_CHECK运行在特定文件中的每个函数开始检查堆栈。注意:仅形如**C.C的文件受该选项影响NU_ERROR_STRING允许在一个致命系统错误发生时生成一个ASCII错误字符串。该标记适用ERD.C、ERI.C和ERC.C三个文件NU_NO_ERROR_CHECKINChapter3NucleusPlus在嵌入式系统应用适合于航空/航天、军队、国防等重要应用的可靠的嵌入式操作系统NucleusPlus.NucleusPlus是美国源代码操作系统商ATI公司(现为MentorGraphicsESD)推出的新一代嵌入式操作系统,属于抢先式实时多任务操作系统内核,95%的代码使用ANSIC编写,非常便于移植于各种处理器家族。从实现的角度讲,不同于传统嵌入式开发‘NucleusPlus是以函数库的形式链接到目标应用程序中,形成可执行目标代码,下载到目标板上或烧到ROM/FLASHROM中去执行。NucleusPlus内核在典型的CISC体系结构上占据大约20k空间,而在典型的RISC体系结构上占据空间为40k左右,其内核数据结构占据1.5k字节的空间。NucleusPlus以其实时响应、抢先、多任务以及源代码开放特性获得在通讯、国防、工业控制、航空/航天、铁路、网络、POS、自动化控制、智能家电等领域的广泛应用。NucleusPlus内核技术ATI公司使用一种叫做软件组件的方法。所谓软件组件,就是具有明确目的或用途的由1个或数个C语言/汇编源文件的一段非独立执行应用程序,且每个组件都提供一个定义好的外部接口,必须通过外部接口来使用组件。访问组件内的全局数据结构是被禁止的。使用了组件方法,软件组件既易于更新也易于重用。NucleusPlus软件组件通常由定义数据类型、常量以及外部接口的INCLUDE头文件和一个或多个C语言/汇编源文件组成oNucleusPlus提供如下组件:任务控制管理、内存管理、定时器管理、中断、系统诊断、I/O驱动管理等共16个组件如下,NucleusPlusKernel:CommonServiceComponent(CS)InitializationComponent(IN)TreadControlComponent(TC)TimerComponent(TI)MailboxComponent(MB)PipeComponent(PI)SemaphoreComponent(SM)EventFlagComponent(EV)PartitionComponent(PM)QueueComponent(QM)DynamicMemoryComponent(DM)I/OComponent(I/O)HistoryComponent(HI)ErrorComponent(ER)LicenseComponent(LI)ReleaseComponent(RL)其中:IN:负责初始化NucleusPlus系统TC:负责管理NucleusPlus的抢占式实时任务和HISR的运行CS:负责提供具有链接列表其它的设备NucleusPlus组件TM:负责管理所有的NucleusPlus定时器设备。NucleusPlus的基本定时单元为一个Tick,它相当于一次硬件定时器中断MB:负责管理所有的NucleusPlus信箱设备QM:负责管理所有的NucleusPlus队列设备PI:负责管理所有的NucleusPlus管道设备SM:负责管理所有的NucleusPlus信号量设备EV:负责管理所有的NucleusPlus事件组设备PM:负责管理所有的NucleusPlus分区内存DM:负责管理所有的NucleusPlus动态内存I/O:负责管理所有的NucleusPlus输入/输出*HI:负责NucleusPlus的历史设备管理ER:负责管理所有的NucleusPlus系统错误LI:负责NucleusPlus的许可证管理RL:负责NucleusPlus的版本管理NucleusPlus其它功能模块NucleusPlus除了其功能强大的内核外,还提供了面向INTERNET、TCP/IP、WEB浏览器、图形以及文件系统的软件包,参阅图1。图1:NucleusPlus功能模块图NucleusPlus开发1,NucleusPlus定制NucleusPlus也能根据目标板的需要进行裁剪和定制,生成适合目标系统的操作系统,尽量少占系统内存。OS定制完成后,将其链接到目标应用程序,成为目标应用程序的一部分。在典型的CISC体系结构的目标板上,它占用约20K左右的空间,而在RISC体系结构的目标板上占用约40K左右的空间。一般地,NucleusPlus足以满足绝大多数的嵌入式应用。ATI公司提供了一个名为BUILD_LI.BAT或PLUS.BAT的批处理文件,用户可以删剪其中的模块,更改相关的选项或开关,执行该文件生成与目标相关的操作系统,也就是根据系统需要生成定制的操作系统。需要注意的是,该批处理文件的内容与开发工具有关。开发方案NucleusPlus可以结合Paradigm、SDS以及ATI的多任务调试器组成功能强大的集成开发环境,配合相应的编译器(Borlandc/c++编译器>Turboc/c++编译器或者Microsoftc/c++编译器)和动态链接库以及各类底层驱动软件就可以满足嵌入式应用的开发。开发流程用NucleusPlus开发嵌入式应用程序,一般遵循如下步骤:*如果有必要,应对低级系统初始化文件.INT进行修改,使之符合目标板的需要。如中断向量、I/O地址、时钟频率等。*定义Application_Initialize()函数。该函数在启动系统之前先执行。注意的是要把NUCLEUS.H头文件包括在目标应用程序中,以便利用NucleusPlus的服务。*定义应用程序的任务。如果调用NucleusPlus的服务,要把NUCLEUS.H包含进去。*编译/汇编所有的应用程序软件,并且包含系统低级初始化文件.INT。*链接.INT和所有的应用程序目标文件、NucleusPlus库文件以及相关的开发工具库。*把生成的最终目标代码下载或烧到目标板上执行。4,NucleusPlus初始化NucleusPlus分三个层次的初始化,即:系统低级初始化IntTnitialize()、系统高级初始化Inc-Initialize()和应用程序初始化Application_Initialize(),初始化之后便进入NucleusPlus的任务调度循环。各个初始化函数任务见表1。Int_Initialize()Inc_Initialize()Application_Initialize()*设置必要的处理器/系统控制寄存器*初始化中断向量表*设置系统堆栈寄存器*计算定时器HISR堆栈和优先级*计算系统第一个可用内存*将控制交给系统高级初始化例程*初始化NucleusPlus组件*将控制交给应用程序初始化例程*任务调度*执行用户定义的初始化,如创建内存池,创建任务、创建信号量、创建队列等表1:NucleusPlus初始化表5,NucleusMNTNucleusMNT是为软件开发者设计的,在WIN95/NT下构筑NucleusPlus嵌入式应用的原型(Prototyping)环境。它通过两个库来实现,即针对目标环境的库和针对Win95/NT开发环境的库。开发时,应用程序代码可以不变,仅仅替换掉MNT库,使用交叉开发工具包重构目标环境下的可执行目标代码,请看图2。PROTOTYPINGTARGET图2:NucleusMNT6,开发注意事项嵌入式开发在内存需求、任务管理等方面存在着特殊性,因此,开发中对以下方面要额外加以注意,*任务饥荒任务优先级的分配要合理,否则会导致系统中的一些任务一直不断地在运行而另一些任务永远得不到运行,引起饥荒。*死锁系统资源的分配要合理,否则会引起两个或多个任务为竞争某一系统资源而处于无限挂起现象。*内存*内存泄露内存分配过程中要尽量避免碎片并且要注意及时回收。*内存节约*默认情况下,NucleusPlus,在高级初始化函数Inc_Initialize()中。调用其它函数初始化它所提供的所有特征的数据结构中,有些特征用户目标应用程序可能用不到,为此,要去掉不必要的函数调用。*改变Nucleus.H中NU_MAX_LISRS的大小,它定义的是目标处理器的最大中断向量数。*改变TC_DEFS.H中TC_PRIORITIES的大小。它定义了任务的优先级数。NucleusPlus能支持256个优先级。HISR栈共享。TCD.C中禁止查询表TCD_LOWEST_SET_BIT的RAM拷贝。*使用一个更小的INT选项。结束语由于NucleusPlus的模块化、可靠、重用、开放、易用以及安全等特性使得它成为嵌入式应用开发的理想平台,尤其是关系到国计民生的领域,如航空/航天、军队、国防等方面。Chapter4嵌入式操作系统Nucleus触摸屏驱动的开发本文详细分析在Nucleus下触摸屏驱动程序的开发,针对触摸屏控制芯片ADS7846,分析其配置、工作原理,以及如何加载到操作系统中。这些方法为手机,PDA触摸屏驱动的开发有一定的借鉴意义.Nucleus是一款优秀的嵌入式实时操作系统(RTOS),具有抢占式和时间片轮转任务调度方式,主要用在时间苛刻的嵌入式应用当中。大约95%的Nucleus用ANSIC写成,作为一个库加载到应用代码当中。目前手机行业有很多使用Nucleus0触摸屏控制电路的硬件结构触摸屏控制电路主要有一下四部分组成:进行数据处理、控制功能的MCU,—个四线电阻式触摸屏和控制芯片ADS7846,以及显示触摸点坐标的显示部分。在这里主要对触摸屏的硬件电路和驱动设计做一个较详细的介绍ADS7846是美国TI公司推出的一款四线制电阻式触摸屏控制器,通过机械式触摸,可以迅速得到触摸点位置信号。它是一种典型的带有连续逼近型寄存器的A/D转换器,内部自带2.5V参考电压,一个和微处理器相连的SPI接口,同时具有测量温度、触摸压力和电池电压的功能,有可编程的8位或12位的分辨率。在2.7V电压和125kHz的转换速率下,功耗仅为7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论