3 嵌入式系统
ARM处理器开发嵌入式系统时,选择合适的开发工具可以加快开发进度,节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库的集成开发环境一般来说是必不可少的,至于嵌入式实时操作系统、评估板等其他开发工具则可以根据应用软件规模和开发计划选用。
3.1 μC/OS-II
μC/OS-II是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息、队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无误执行,使实时应用程序的设计和扩展变得容易,使应用程序的设计过程大为减化。
3.2 pSOS
pSOSystem是美国系统集成公司(IntegratedSystems,Inc.简称ISI公司,现已与美国WindRiver系统公司合并)根据几十年从事嵌入式实时系统理论研究与实践活动而设计开发的实时嵌入式操作系统。pSOSystem集成了一整套嵌入式软件模块、工具和服务。作为嵌入式系统微内核设计的先驱者之一,ISI公司将pSOSystem构造成适于嵌入式应用系统开发、在嵌入式实时领域具有领导地位的实时操作系统。pSOSystem从ISI公司和许多第三厂家得到大量的支持。
3.3 各种操作系统的对比及选用linux的原因
嵌入式操作系统是ARMCPU重要的软件基础从8位/16位单片机发展到以ARMCPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序,成为重要的基础组件。
第一是应用如果你想开发的嵌入式设备是一个和网络应用密切相关或者就是一个网络设备,那么你应该选择用嵌入式Linux或者μCLinux,而不是μC/OS-II,因为Linux不仅为你集成了TCP/IP协议,还有很丰富的其它网络协议,如DHCPServer,PPPoe,webserver等等。
第二是实时性没有一个绝对的数字可以告诉你什么是硬实时,什么是软实时,它们之间的界限也是十分模糊的,这与你选择什么样的ARMCPU,它的主频,内存等参数有一定的关系,象IntelXscale这样的处理器,即使配合普通Linux的内核,内核的抢占延时最坏情况也只有1.743毫秒,而99.9%的情况是1.42毫秒,而如果你使用加入实时补丁等技术的嵌入式Linux如MontaVistaLinux(2.4.17版本内核),最坏的情况只有436微秒,而99.9%的情况是195微秒,上面的数字以及考虑到最新的Linux在实时性方面的改进(如低延时O(1)调试器,微秒级的高分辨率POSIX定时器),嵌入式Linux可以适合于90~95%的各种嵌入式系统应用。当然,你如果希望更高数量级的实时响应,如高速的A/D转换需要几个微秒以内的中断延时,要求一个毫秒级没有DMA方式的异步串行实时处理器等类似的应用,可能是采用μC/OS-II是合适的。当然,你采用象Vxworks这样传统的嵌入式操作系统也可以满足这样的强实时性要求。
第三是开发工具坦言说,目前μC/OS-II、μCLinux和嵌入式Linux的开发工具与商业嵌入式操作系统工具还有一些差距,目前在ARMCPU上广泛流行和使用的是ARM公司SDT/ADS工具链,产品无论在功能、稳定性和众多的第三方厂商支持方面,都很好,唯一不足的是缺少对嵌入式操作系统的支持,SDT/ADS的升级产品RealView计划支持GCC和嵌入式Linux,但目前还没有看到,μC/OS-II可以使用ARMSDT/ADS,但没有OS调试功能。如果希望支持OS调试,可以使用IAR或Nohan调试器,μCLinux的调试除GDB外还有第三方调试器,并配合Cygwin形成Windows环境下μCLinux开发环境,象Aiji的Spider和Micetek的Hitool。第四是你所选择的ARMCPU和参考板,象ARM7TDMI和ARM940T(如S3C2500/2510)核是不能使用嵌入式Linux(MMU),如果你想用Linux,只能用μCLinux,如果你想用Vxworks,你需要了解一下提供评估板的公司是否有BSP(板支持包),Vxworks自己只有少数ARM公司评估板的支持。