嵌入式领域有不少操作系统,大致可以三类:第一类以Wince、Linux、Android为代表的,属于大型操作系统,拥有内核任务调度、菜单界面、多媒体、网络、文件存储、外设驱动等一系列完善的功能,但这类操作系统属于非实时操作系统,往往用于办公、娱乐、人机接口等对时间要求不高的场合。此外因为功能太完善,对硬件的要求很高,最低配置CPU需要ARM9 200MHz,内存需要32MByte,支持MMU内存管理单元,标配彩屏。
第二类以VxWorks为例,属于功能丰富的嵌入式实时操作系统,功能丰富。往往用于高实时、高可靠的军工、航空航天、工业自动化领域,对硬件要求也比较高。
第三类以uC/OS-II,FreeRTOS为例,只有一个抢占式多任务实时操作系统的任务内核,此外还提供一些内核管理的函数接口及必要的扩展功能,其它的功能库如菜单界面、网络等都需要自己扩展,这类操作系统主要应用于中低端小型的项目中,成本要求高,需求多样,但一般不是很复杂,实时性有要求,但不苛刻,往往都是消费类或者一般的工业自动化设备,比如白色家电的控制系统、小型监控、传感器的测试平台、仪器仪表、小型工业自动化领域取代PLC,降低成本等等。
中低端小型项目,一般都是基于MCU51、ARM7或者现在的CortexM3、M0开发。简单的项目,软件最常用的是前后台系统,也叫裸奔,紧急响应用中断,低速处理在main大循环中执行。稍微复杂一点的在前后台系统的基础上引入了系统节拍,执行一些例行的事件,这个也叫时间片编程方式。再进一步是引入消息机制,实现消息机制编程方式。再复杂一些就引入uC/OS-II等RTOS,实现多任务编程,简化编程难度,但同时因为引入了RTOS,需要充分了解RTOS的特性,所以对编程人员的水平要求比较高。
苛刻的成本、需求的多样性,导致目前没有一套比较完善的操作系统统一这一方面的开发编程,哪怕是uC/OS-II等RTOS内核,也需要根据实际项目需求来配置、裁剪,增减不必要的软件功能。
此外,中低端小型项目,技术难度相对较低,所以嵌入式人员的入门门槛较低,这个本身是好事,然而也就是因为入门门槛太低,又没有一套统一的编程规范,导致编程的随意性很大,一个公司十个编程人员,有十套不同的编程方式,相互之间检查、维护非常困难,而小型企业的人才流动相对较大,软件负责人离开后,继任者因为编程的思维方式不同,往往看不懂前人的程序而废弃再重新设计,这样导致代码质量一直在低质量的重复循环,也极大的提高了公司的软件成本。
项目继承性这种情况在高校、研究所中尤为突出。比如一所研究所的主业是做传感器,但为了测试这款传感器必须要搭建一套嵌入式测试平台,若用WINCE、Linux等开发平台,需要一个嵌入式团队来开发,投入很高,维护很难,副业变成主业了,若是自己搭建一套完善的通用测试系统,既没有这个能力,也没有这个精力,所以一般都是针对性的设计这款传感器的测试系统。因为高校、研究所的学生经常更换,后来者看不懂前人的代码,又不得不重新设计。
中低端小型项目,需求虽然多样,虽然无法用一套操作系统去统一开发,但是我们可以把这些分为几类,比如彩屏的消费类、黑白屏的工控类、数码管显示的微控制类等等。这几年国内有一款比较出名的开源嵌入式操作系统叫RT-Thread,编程风格类似Linux,在OS的基础上集成了GUI、文件系统和网络功能,不少用户把它应用于消费类行业。而最新发展起来的一款开源嵌入式微系统叫msOS,采用微软的C#风格,侧重于平台架构,可以灵活组合,简单易用,目前整合了uC/OS-II,集成了128*64黑白屏的GUI、参数日志存储、PID算法库和步进驱动库,定位于仪器、仪表、小型工业自动化领域,msOS的中文名就叫嵌入式微系统。
文章评论(0条评论)
登录后参与讨论