微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > C语言编程程序优化方案,如何选择一个ARM品牌核心处理器操作系统

C语言编程程序优化方案,如何选择一个ARM品牌核心处理器操作系统

时间:05-19 来源:网络整理 点击:

由Jean Labrosse先生著,邵贝贝老师翻译的《嵌入式实时操作系统μC/OS-II》先后由电力出版社(第一版)和航空航天大学出版社出版(第二版)发行了近万册,相信有数以千计的学生、老师和工程师正在使用μC/OS-II,在过去的一年中(2003),在《电子产品世界》、《电子设计应用》和《单片机和嵌入式系统应用》等杂志和各种学术会议上的有μC/OS-II相关论文就有几十余篇。全世界数百种设备已经在使用μC/OS-II,包括如手机、路由器、不间断电源、飞行器、医疗设备和工业控制设备,在中国也已经有包括香港权智,首科希电,安控科技在内的10余家公司购买了产品授权。

  μC/OS-II已经有ARM7TDMI、ARM9和Strong ARM等各种ARM CPU的移植,支持包含Atmel、Hynix、Intel、Motorola、Philips、Samsung、Sharp等公司的ARM核的CPU。μC/OS-II的移植也相当容易,与CPU相关的代码包装在三个文件中,os_cpu.h,os_cpu_a.asm,os_cpu_c.c,而且Jean Labrosse先生的应用笔记AN-1011和AN-1012对ARM7、AN-1337对ARM9的移植过程都做了详细的说明。

  μC/OS-II有60余个系统调用,覆盖任务、定时器、信号量、事件标志、邮箱、队列和内存管理,已经包含了传统嵌入式操作系统内核(如PSOS,VRTX)的功能,还支持互斥型信号量(Mutual Exclusion Semaphone),这是90年代的嵌入式操作系统内核,如Vxworks和VRTXsa才有的技术。

  μC/OS-II因为是可抢占的实时内核,所以μC/OS-II与商业嵌入式实时内核在性能上没有什么差异,μC/OS-II没有用户态和内核态,任务(线程)或中断和任务切换的响应可以很快,主要是和不同的ARM CPU相关的。最新的2.7x版本还增加了算法以避免在移植中修改OSINTCEXSW()中的堆栈指针。这样可以保证μC/OS-II在不同的CPU上运行更稳定,移植更方便。

  总之,μC/OS-II是一个非常容易学习(有一本很好的讲解很清楚的书),结构简单,功能完备和实时性很强的嵌入式操作系统内核,适合于各种嵌入式应用以及大专院校教学和科研。

  μC/OS-II目前除了内核外还有商业化文件系统μC/FS,图形系统μC/GUI以及任务调试工具μC KA和μC View,但是μC/OS-II自己目前还没有TCP/IP(有计划)如果需要,可以购买商用的TCP/IP,如InterNiche (www.iniche.com),但价格还是很贵,免费的TCP/IP项目如LWIP (http://www.sics.se/~adam/lwip/),但无论在功能还是稳定性与商业代码无法比拟,这可能也是目前μC/OS-II的弱点。

  最后需要说明,μC/OS-II不是免费软件,任何人学习使用μC/OS-II需要购买《嵌入式实时操作系统μC/OS-II》一书,使用了μC/OS-II的产品需要购买产品生产授权,购买了此授权的还可以得到开发期间的技术支持和升级服务。

  μCLinux操作系统

  μCLinux是Linux小型化后,适合于没有MMU的微处理器芯片而裁剪成的小型化Linux操作系统,在ARM CPU系列中,ARM7 TDMI,ARM940T等ARM核的CPU产品,如果希望使用Linux操作系统,只能用μCLinux,当然,μCLinux也支持Motorola Dragonball, Coldfire等其它中低端嵌入式处理器。

  μCLinux保持了传统Linux操作系统的主要特性,包括稳定、强大的网络和文件系统的支持,μCLinux裁剪了大量的Linux内核以缩小尺寸,适合象512k RAM,1M Flash这样小容量,低成本的嵌入式系统。

  μCLinux的项目是由Linux 2.0.38内核开始的,第一个项目是Motorola 68EZ328,目前已经有2.4 Linux支持的一些移植的版本,如S3C2500, 44B0等ARM芯片,这些,你可以在μCLinux的官方网站www.uclinux.org上找到,μCLinux近期主要是在发展各种2.4.x版本的移植,以期跟上Linux社会主流的发展趋势(因为今年Linux 2.6将开始成为主流的内核)。

  μCLinux系统小型化的另一个重要原因是采用了μCLib库替代Linux的Glib库,使用μCLib可以大大减少应用程序的代码尺寸,对于中小型嵌入式应用,μCLib功能可以满足需要,所以目前即使是某些采用Linux 2.4内核的嵌入式LINUX系统也采用μCLib库的做法。μCLinux中,由于没有内存保护机制,应用代码一般采用静态连接的方式,而且在μCLinux中采用Flat文件执行格式(Linux是Coff或Elf格式), μCLinux和应用代码都可以支持固化,存储在Flash存储介质中,不需象Linux需要经过一次Flash到RAM的拷贝。所有这些,使得μCLinux更象传统意义上的嵌入式操作系统。

μCLinux主要是针对没有MMU的嵌入式处理器开发设计,那么

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top