读过与非网推出的《嵌入式操作系统史话》,通过何老师的讲述,我们应该对嵌入式操作系统的门派、历史、演进以及未来发展趋势有了较全面和深入的认识。
其中,几乎所有嵌入式操作系统革新性的技术节点都始于欧美国家,国内产业者始终扮演追随者的角色。
但我们也要看到,国内的开发者们一直没有放弃努力,虽然一个个先驱成为先烈,如红旗Linux、都江堰等,仍挡不住一批批后继者涌入,如凯思昊鹏的HOPEN、开源的RT-thread和μTenux以及饱受争议的COS等。
在此,与非网推出《嵌入式微系统msOS成型记》系列,我们邀请与非网资深网友--王绍伟(凤舞天),介绍一款基于开源概念,此前在国内几为空白的,从实际需求出发的嵌入式操作系统--msOS,自诞生到完善成熟的成长故事,让大家看到国内这样一批务实的开发者们在做什么。
何为嵌入式微系统
嵌入式微系统,顾名思义就是嵌入式微型操作系统,然而操作系统一词在嵌入式行业里往往专指uC/OS之类的带任务切换的系统,所以为了有别于这个专用名词,往往用开发平台一词来代替,所以嵌入式微系统更准确的名字为嵌入式微型开发平台。
大家肯定会问,uC/OS这样的嵌入式操作系统跟嵌入式微系统到底有什么区别,那么我们就要从项目需求开始说起。
某个公司需要在嵌入式芯片(MCU51或者STM32)上开发一个控制项目,涉及LCD界面、多种不同接口速度的外设、多种不同速度的业务逻辑控制,下图为常见的一种工业自动化项目需求。
作为项目负责人,首先要分析清晰项目需求,假设这个项目有点复杂,涉及多路采样及多路PWM输出,所以选择STM32之类的高性能处理器,之后再考虑软件设计。
这个项目设计到多路输入传感器及多路输出,有高速的业务逻辑控制,也有低速的菜单界面,为了把低速的菜单界面与高速的业务逻辑分开独立编程,所以引入嵌入式操作系统,比如uC/OS,会方便程序设计。
uC/OS除了任务切换功能等有限的功能外,没有别的,所以其它的东西还是需要我们自己添加,菜单界面就是一个。界面编程里面,简单的界面用状态机还比较容易编程,但若涉及到稍微复杂一点的界面,传统的状态机编程思想就完全不适合了,代码很难维护修改,为了提高可维护性,需要引入一个标准的菜单界面编程库(GUI),虽然现在网上也有不少,但适合自己的却很难找,往往需要自己编写一套菜单界面库,这个工作量很大,难度也很难,最后往往退回到传统状态机菜单编程方式。
其它的硬件相关的设备驱动库,都需要自己来完成,比如按键、串口、步进驱动等等。若这个项目需要多人协同开发、长期维护,则还需要制定架构标准,一些接口规范,命名标准,而这么多的要求,对于大部分的小、微型企业的嵌入式项目负责人来说,要求太高了。所以最后这个项目负责人,往往自己一个人埋头苦干,什么标准什么规范都没有,经过较长的一段时间开发加上后期的修修补补,项目勉强的交差了。然而当这个负责人离职的时候,面临着无人接手的窘境。
我们再看消费类电子产品的开发模式,以MTK6225功能手机为例,RTOS采用Nucleus,菜单界面软件库采用PlutoMMI,此外还需要多媒体、文件系统,电话本、短消息等中间件,之后是各种硬件设备驱动,整个软件架构类似ARM公司提倡的CMSIS架构。
MTK提供了整套硬件参考设计、PCB设计、生产流程、测试流程,软件开发标准。客户通过不长的时间培训即可掌握手机的开发设计,一般10来人的手机设计公司,在具有一定的手机设计经验的基础上,只需要2、3个月就可以设计出一款MTK提供的参考手机,之后公司基于这个参考手机做硬件上的机型改进及软件上的界面调整即可。到了Android时代更是简单了,因为Android软件属于通用软件,所以软件更是不需要培训了。
其他消费类电子,比如以前的VCD、DVD、MP3、MP4等等,都采用类似的方式,只有采用这种方式,源头厂家才可以快速的切入市场,并且可以同时管理、维护很多下游客户,比如MTK的下游山寨手机公司上千家,大的手机厂家也有近百家之多。因为采用了标准的设计模版,应用开发、客户维护人员都不是很多,尤其是维护人员,大大降低,获得高额的利润。而因为采用标准通用的软件架构平台,迅速的培养了大量的通用手机软件人员,而这些软件人员都可以在各个手机公司立即干活,不存在更换一个公司之后还需要培训的问题,这样下游厂家也不需要担心人才流动引起的工作交接问题。
从以上例子可以看到,通用标准化的开发设计,带来的好处是巨大的:提高了开发效率、缩短了开发周期、便于产品长期维护,容纳更多的下游客户。