嵌入式软件使用POSIX接口的优缺点
转自:http://m.elecfans.com/article/578851.html
什么是嵌入式软件
嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造→嵌入式系统软件→嵌入式电子设备开发、制造。
嵌入式系统是指用于执行独立功能的专用计算机系统。它由包括微处理器、定时器、微控制器、存储器、传感器等一系列微电子芯片与器件,和嵌入在存储器中的微型操作系统、控制应用软件组成,共同实现诸如实时控制、监视、管理、移动计算、数据处理等各种自动化处理任务。嵌入式系统以应用为中心,以微电子技术、控制技术、计算机技术和通讯技术为基础,强调硬件软件的协同性与整合性,软件与硬件可剪裁,以此满足系统对功能、成本、体积和功耗等要求。
最简单的嵌入式系统仅有执行单一功能的控制能力,比如说单片机的应用,在唯一的ROM 中仅有实现单一功能控制程序,无微型操作系统。复杂的嵌入式系统,例如个人数字助理(PDA)、手持电脑(HPC)等,具有与PC几乎一样的功能。实质上与PC的区别仅仅是将微型操作系统与应用软件嵌入在ROM、RAM 和/或FLASH存储器中,而不是存贮于磁盘等载体中。很多复杂的嵌入式系统又是由若干个小型嵌入式系统组成的。
![嵌入式软件使用POSIX接口的优缺点](http://www.elecfans.com/uploads/allimg/171114/2755779-1G1140T940147.jpg)
什么是POSIX接口
POSIX,即Portable Operating System Interface,即可移植操作系统接口。是操作系统为应用程序提供的接口标准。POSIX标准同样适用于嵌入式软件,这里总结一下嵌入式软件使用POSIX接口的优缺点。
![嵌入式软件使用POSIX接口的优缺点](http://www.elecfans.com/uploads/allimg/171114/2755779-1G1140U000633.jpg)
嵌入式软件使用POSIX接口的优点
可移植性高
POSIX既然是可移植操作系统接口,那基于该接口的应用程序可移植性自然是很高的。基于POSIX接口设计的应用程序可以在不做修改或仅做极少量的修改就可以在支持POSIX的不同RTOS之间移植。如果仅使用POSIX中被广泛支持的部分,那么应用程序不需要做任何修改就可以在多个系统中编译执行。支持POSIX接口的RTOS包括eCos、VxWorks、RT-Linux、RTEMS、NuttX等。
可移植性高也就意味着开发效率高、开发成本低,这是老板们都喜欢的呀,让老板喜欢才能涨工资不是吗?
便于测试
因为嵌入式软件的开发环境和运行环境不一致,因此嵌入式软件的测试一直是个难题。解决这个难题的方案之一是将嵌入式软件在宿主机的模拟环境下执行,以便利用相对容易获得的桌面软件测试工具来对嵌入式软件进行测试。这种方案通常需要对嵌入式软件进行插桩,使用宿主机的API来模拟实现目标程序的底层API。如果嵌入式软件使用POSIX接口,那就容易多了。三大主流桌面系统Windows、Linux和Mac OS X中的Linux和Mac OS X本身就支持POSIX接口,而Windows则可以通过Cygwin等提供POSIX支持。在接口相同的情况下,目标程序不需要做任何修改就可以在宿主机上编译运行,当然还可以利用宿主机的测试工具对程序进行测试。
资料丰富
POSIX API的文档非常丰富,随便找一下就是一大堆,各国语言都有,应用的示例也很容易找到,因为人家是标准嘛,而且是应用极其广泛的标准。相对的,一些RTOS专有的API资料就相对难找了,而且基本上只有English版。
嵌入式软件使用POSIX接口的缺点
占用更多资源
多数支持POSIX的RTOS自身有一套专有的API,然后在这套专有的API上再建一层POSIX兼容层来提供POSIX支持。多一层意味着需要更多的代码空间、数据空间和执行时间。因此使用POSIX会多占用一点系统资源。然而从发展趋势看,硬件是越来越便宜的,而开发成本是越来越高的(开发人员的工资越来越高),牺牲一点执行效率来换取开发效率是值得的。Unix设计哲学中就有一条“舍高效率而取可移植性“。
总结
总而言之,使用POSIX虽然稍微会降低一点执行效率,但是可以大大提供开发效率,总体上讲是利大于弊的。