C语言编程程序优化方案,如何选择一个ARM品牌核心处理器操作系统
口和设备驱动程序,使用商业嵌入式Linux,可以得到一定时间(一般是1年)的技术支持,升级和培训(这很重要,因为Linux是每天都在变化的)。
商业嵌入式Linux目前除国内的产品外,价格还是很昂贵的,根据配置和服务时间,大约从几千到几万美圆,多数国内用户从资金和心理上还很难承受,商业嵌入式Linux开发工具相对于Microsoft和象Tornado/VXWORK的开发工具,在易于使用和丰富性方面还待于提高和改进。
同作为Linux操作系统,我是推荐使用带有MMU 的 Linux ,而不是μCLinux,因为绝大多数新的ARM CPU 都是AMR9核,他们都带有MMU 了,无论是开放源码的LINUX 社区还是商业的嵌入式LINUX 公司的支持和维护都比μCLinux,要好,快和丰富的多。
结束语
前面我们对三种在ARM CPU上较为流行的嵌入式操作系统作了详细的分析,在进入一个总结之前,我还想提到几个在国际上很有名气的嵌入式操作系统,它们是Windriver公司的Vxworks、ATI的Nucleus、日本人的iTron和WinCE。
Windriver的Vxworks在两三年前曾经是最具影响力的嵌入式操作系统,几乎主要的通信设备制造商都是采用PowerPC+Vxworks这种组合,但是在ARM CPU上,Vxworks的应用并不多见;ATI的Nucleus(现在已经是Mentor的嵌入式部门)曾经作为最有名气的源代码、没有版税的嵌入式操作系统而在北美和亚洲台湾流行,最成功的设计范例是各种GSM移动电话,Nucleus只是一个实时内核,用户需要再购买它的TCP/IP,GUI,文件系统和设备驱动才能形成一个功能完整的嵌入式系统,这使它在近些年失去了优势;日本人的iTron是在日本几乎家喻户晓的嵌入式内核,标准的编程接口、低廉的价格(1~3千美圆)、没有版税、支持几乎所有的CPU(尤其是支持很多日本的CPU),但在除日本之外,iTron好象毫无建树;微软的WinCE,几乎所有高端PDA都是采用它,它们使用的是 Xscale或ARM9这样的CPU,但微软只是关心有产量象PC一样巨大的嵌入式设备制造商,所以他并没有把自己的WinCE象Linux一样易于移植到不同的CPU和增加设备驱动程序,微软更愿意象Windows一样自己把所有事情做好,你只是拿去用好了,如果你没有相当的级别,很难获得它的个性化定制服务。
最后我们归纳一下选择一个合适的ARM CPU的嵌入式操作系统的几个重要因素。
第一是应用。如果你想开发的嵌入式设备是一个和网络应用密切相关或者就是一个网络设备,那么你应该选择用嵌入式Linux或者μCLinux,而不是μC/OS-II,因为Linux不仅为你集成了TCP/IP协议,还有很丰富的其它网络协议,如DHCP Server,PPPoe,webserver等等。
第二是实时性。没有一个绝对的数字可以告诉你什么是硬实时,什么是软实时,它们之间的界限也是十分模糊的,这与你选择什么样的ARM CPU,它的主频,内存等参数有一定的关系,象Intel Xscale这样的处理器,即使配合普通Linux的内核,内核的抢占延时最坏情况也只有1.743毫秒,而99.9%的情况是1.42毫秒,而如果你使用加入实时补丁等技术的嵌入式Linux如MontaVista Linux(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的开发工具与商业嵌入式操作系统工具还有一些差距,目前在ARM CPU上广泛流行和使用的是ARM公司SDT/ADS工具链,产品无论在功能、稳定性和众多的第三方厂商支持方面,都很好,唯一不足的是缺少对嵌入式操作系统的支持,SDT/ADS的升级产品RealView计划支持GCC和嵌入式Linux,但目前还没有看到,μC/OS-II可以使用ARM SDT/ADS,但没有OS调试功能。如果希望支持OS调试,可以使用IAR或Nohan调试器,μCLinux的调试除GDB外还有第三方调试器,并配合Cygwin形成Windows环境下μCLinux开发环境,象Aiji的 Spider和Micetek 的Hitool。
第四是你所选择的ARM CPU和参考板,象ARM7TDMI和ARM940T(如S3C2500/2510)核是不能使用嵌入式Linux(MMU),如果你想用Linux,只能用μCLinux,如果你想用Vxworks,你
- 工控机在IC卡加油工程中的应用(05-13)
- 联网汽车为什么选择Linux开源平台?(07-10)
- 多网络和Linux代理的Android无线远程控制系统(02-02)
- 基于嵌入式Linux的家居监控系统设计(02-22)
- 基于嵌入式Linux系统的导航软件设计思路(03-17)
- 新型嵌入式机器视觉系统的设计研究(04-21)
