本帖最后由 一朝成名 于 2009-8-9 21:41 编辑
作者介绍:陈渝,清华大学老师,他也是skyEye的开发者,他的书《源代码开放的嵌入式软件分析与实践--基于SkyEye和ARM开发平台》也不错,值得看看。
红色的标注是我写的一些简单的见解
很高兴有机会跟大家一起交流一下关于嵌入式领域的开源软件,先自我介绍一下,我叫陈渝,目前在清华大学计算机系当老师(博士后呵呵,人家不愿意说,还是我来说吧),主要是从事操作系统和嵌入式系统的一些教学和科研工作。其实当时何老师给我这个题目时,我觉得确实有点大,虽然有两个限制,限制在嵌入式领域,限制在开源,即使加上这些限制,其实范围也是相当大。所以我按照目前我了解的一些情况给大家做个介绍。不能包含到题目的方方面面,只能是个人的一些粗浅的认识。开源软件确实是从我开始接触,就是90年代中初期,到现在也有10多年了。但是也很难说对开源软件了解到很透,因为确实发展日新月异,这是我了解到的情况。首先我跟大家介绍一下当前在嵌入式领域内的一些应用,这个可以看出来我们软件有些什么样的特点;接下来会就嵌入式系统中的软件架构层次上介绍一下各层次在面向嵌入式相关的一些软件;最后还有时间的话,给大家介绍一下目前在嵌入式领域做的教学科研工作,和大家分享一下。
前面已经有很多老师提到嵌入式系统的应用领域,比如说在国防、工控、消费电子等等,其实还有一个很重要的趋势是跟网络结合,这些事我们认为当前嵌入式领域最主要的应用,但是由于领域的差异性很大,也导致了一些软件的区别是很大的。在早期,在军控、航空航天里面,嵌入式系统是相当的广泛,举个简单的例子,在我们国内,像航空航天,我们跟航空航天的一些机构有些联系,我们知道在他们的系统里面,无论是登月,还是载人飞船,还有自己的大飞机,嵌入式软件的身影是无处不在的;另一方面呢,在我们的日常生活中,比如现在比较流行的电子书,这其实也是嵌入新型的软件在里面,还有在家庭方面,我们早期的家庭方面,可能没有关注到太多嵌入式软件的身影,但是现在的一些PSP、手机里面,还包括摄像机等等,软件的作用越来越大,特别是跟Internet互联,这一块已经成为现在嵌入式系统里面重点关注的、软件需要重点去支持的一个方向。说到视频服务器,我跟大家简单介绍一下,不知道大家有没有体会,现在出门基本可以看到到处都有摄像头,摄像头就是通过类似这样一个架构来把摄像头所看到的场景给记录下来,便于事后进行分析,可以这样说目前北京摄像头的比例在世界上都可以排到前三位的。那么怎么能够更好地支持一些视频的处理?这一块也是嵌入式系统比较关注的一个领域。家庭这一块,这个其实是目前在研究方面也是做的比较多的,整个家庭场景里面,实现一个设备级的互联互通,刚才周立功老师也讲到他们企业中设备的互联互通,他的那个场景可能更多在工控里面,在智能家居这个领域,目前也是竞争相当激烈,也有很多的研究成果,后面会给大家介绍一下。这个嵌入式Internet代表了这几年会比较大的发展趋势,怎么能够把嵌入式软件、嵌入式应用和Internet连接起来,跟后端的两个所谓余计算等等结合起来,更方便更有效地服务,这个其实是我们前端和后端越来越紧密地连在一起了。这个不仅是嵌入式软件的问题,还要考虑嵌入式软件和后端服务器软件之间更有效的互联互通,我们上了3G以后,这一块的重要性也越来越突显出来了。这个数字机顶盒,我就跳过去了,其实前几年已经有的概念,目前来说发展的还不是特别快。汽车电子这一块是个很重要的问题,大家都知道,我们开这个会很多都提到“核高基”,其实“核高基”在嵌入式领域重点支持两个,一个就是汽车电子,一个是移动网络。在这两个里面怎么能够发挥软件的作用,使得它的功能可以更大化,更充分体现出来,这一块其实国家也是相当重视,我们的企业在这方面也是做了很多工作。智能玩具和机器人,这个我给大家简单介绍一下为什么这个也很重要,不知道大家关注没有,微软目前专门面向机器人领域提出了它的所谓的集成开发环境,希望把将来robot的发展方向能够控制住,通过它的IDE、编程语言,通过它提供的一系列库等等,这个领域现在看不出很大的前景,但其实,在国外这个方面已经有很热的研究了。包括我们每年在学校都会组织一些国内国外都有机器人比赛,机器人足球赛等等,这都是嵌入式软件在智能机器人领域里的发展。工控这个领域,其实大家很多企业都涉及到这一块,我就不做详细讲解了。但是有一个需要注意的地方,现在的工控领域已经不是一个单独的体系,它需要跟Internet互联,这一点像微软虽然它不做开源,但是它还是支持一些开放的标准,甚至包括开放一些源代码,我觉得也不能一提到开源,就把微软作为一个靶子来打。在学校来讲,对微软还算是一个中立的立场上来说话的。微软还和其他一些企业做DPWS协议,就是希望能在工控领域使得工控设备能够更有效地进行互联互通,这个就类似于早期的UPnP,UPnP协议可能更侧重于家电,嵌入式设备等,但目前还希望能推到设备上去。军事侦察这个领域,大家在一些场合都看到了,在我们国家,无论是在航空航天,其实周立功老师他们更有经验,在我们国内已经承担了一些项目,还有朱明远老师他在航空领域、飞机领域也有他们软件产品的体现。可能由于国内安全或保密的要求,他们公布的信息不多。这是一个日本做的机器人,是个例子,还有火星探路者等等。
前面给大家简单介绍了当前嵌入式系统应用的领域,我们可以看出有几个特点,嵌入式应用场景是千差万别的,但是也确实朝着互联互通Internet的这么一个方向发展,基于这个趋势,我们来看看现在的一些开源软件。这里面资源确实有限,我也很难进行展开介绍,这是把我了解到的部分内容和大家做个简单的交流。从这个软件架构上来说,它确实从硬件上涉及到一系列的软件,包括协议等等。在硬件这一层通过协议和网络这一层的互联互通,除了TCP/IP协议外,还有一些使用比较广泛的协议,比如ZigBee,Bluetooth等等,这些协议都有相应的软件协议在支持,有了最底层的协议栈支持后,上层的这些软件就可以互联互通了。在这之上,会有一系列的操作系统和更高层的协议,操作系统也是涉及到开源和嵌入式领域内的,有Ecos、RTEMS等,协议有UPnP、Jini、DPWS、IGRS等,那么重点提一下IGRS是我们国内设备级互联互通的协议标准,目前它的基础协议层已经成为国际标准,目前在进行推广,其他的如UPnP、Jini、DPWS是国外一些大的企业自己的标准。再往上是middleware这一层,middleware本身是个比较广义的软件范畴,这里面会提到CORBA、OSGi、DLNA等等,它主要面向工业界和消费电子界服务层或软件层的互联互通。再往上是一些middlewareservice,包括GUI,还有Database、IDE等等,在底层这些支撑软件的支持上才会产生各种各样的应用。那么现在的应用,我觉得主要有两个趋势,一个是跟那个所谓的被控系统绑定,第二个是跟Internet绑定,这两个趋势会导致一些新的厂商、新的应用、新的技术。
我再简单介绍一下相关的OS,由于是开源软件,那么在嵌入式操作系统里面,开源软件也是相当多的。但是做的能够给产业去用的开源操作系统并不是很多,刚才邵老师已经介绍了有μC/OS等,但是要注意的是开放源代码并不就是开源,它还和license相关,刚才邵老师也介绍了有关license的情况,如果用于商业里面,也是需要付费的。(呵呵其中的意思大家体会一下)但是这里的一些OS即使用于商业里面,也可能不需要付费的。这个层面的OS也有一些,也达到了一定的数量。第一个就是ECos,它一开始是自己独立的一个小公司,然后被RedHat给购买了,购买后,嵌入式这一块由于推广不力,Ecos又自己出去了成立一个新的公司,目前也还在发展,但总的来说,发展的力度并不是特别强(感觉最近发展的还可以吧,09年4月发布的3.0版本,我最近项目拿来开发的感觉还可以,抽时间我独体的介绍一下)。第二个是RTEMS,RTEMS主要是应用在航空航天领域,这就有点类似于Vxworks,但是它是一个不需要缴纳版税的嵌入式操作系统,是由美国的一个公司在维护。根据我的理解,当前在航天领域,有些系统是用RTEMS在做一些应用,我们跟他们有些技术上的交流与合作。开源的特点是很多人来维护,但是缺乏一个很强的商业支持,从商业上的支持维护来看,维护的热情和做操作系统商业还是有点差距的(性能非常不错的RT os,性能不错跟Vxworks比过犹不及,应该关注一下)。这两个操作系统,我理解是目前开源、无版税、有一定市场潜力的操作系统。至于Linux大家已经讲了很多了,我不会展开去讲,但是Linux它的发展点是不一样的,Linux它本来的目标是面向服务器和桌面的操作系统,但是它会有很多分支,特别是在RT-Linux会对实时有很多支持,目前它的RT能力,根据我了解到的一些资料,因为Linux还有一个很大的特点是它支持VM,虚存管理,它和windriver有虚存管理的Vxworks的性能相比,差别并不是很大,这是RT-Linux最新的发展;第二种Linux发展就是面向没有虚存管理的CPU,更低端的CPU,有一个分支叫μCLinux,这个也在很多的嵌入式设备里面有很多体现,大家可能看不到,因为操作系统在最底下,比如说我们现在看到市场上的摄像机,就是嵌入式μCLinux,还有一些照相机等等。Linux应该是很大的一类,由于大家了解比较多,就给大家简单介绍到这。另外还要介绍一些OS,这些OS是用在更不常用的领域,我们称之为无限传感器网络,可以看到无限传感器网络这个小片子,它和一个硬币的大小差不多,日本有的企业做出来的甚至比硬币还要小很多。这些小一点的嵌入式设备,它通过ZigBee可以实现一定程度的互联互通,在这个小设备上,也有一些OS在应用。有美国做的TinyOS,还有欧洲做的Contiki操作系统,它支持了小型或微小型深度嵌入式设备的互联互通,这一块目前在研究阶段还是多一些,但是我们认为在将来会有一个好的应用前景,它意味着我们的嵌入式设备真是无处不在的且互联互通。
前面讲的都是面向特定领域的OS,比如工控、航空航天领域的OS,还有一类是面向我们消费电子类的OS,我这里做了个总结,差不多都是基于Linux,可以称之为Linux系统的一个解决方案,当前有两大类,国际上有大的公司在后面做着推动,第一个就是Intel在推动的叫做Moblin,它联合一些软件企业,一直想将来在以它的嵌入式CPU为核心的嵌入式设备上提供一整套软件的解决方案。这个Moblin架构用到了QT的3D显示,还有将来的3G网等等,wifi,与互联网会有很好的沟通,形成一整套的架构体系,那么这个体系由Intel还有几个Linux厂商一起来推进,这是一个值得关注的一点,我记得Moblin也是Intel收购windriver后重点要做的事情。另一个是大家可能听的更多的Google推动的Android操作系统,其实也是一个解决方案,底层也是Linux,也提出它自己类似Java的一套系统,可以来支持它最主要的目标是手机,或者说是移动终端,希望通过控制终端的方式使得终端能够更好地采用它后端的这些服务,刚才提到一个观点,嵌入式终端其实将来要通过后端的服务来给人呈现一个更好的交互的手段,终端毕竟能力有限,只要有了高速的网络,后端的服务就可以很好地呈现在我们前端了。所以说这里面也存在一个将来的趋势,可以看出软件将会变成一种服务,将来可能不是卖软件,而是卖服务。(做底层硬件的可能不喜欢这些话,但是是事实)这一点大家也是有很多体会了。Google就是一个典型的例子,它没有卖软件,它卖的全是服务。这个我就简单介绍看下它的类和Linux2.6内核,这是它的运行环境,包括很丰富的交互处理,上层还用了很好的开发环境,这里面做的系统都是开放源代码的,从底层到上层都是开放源代码的。
在middleware这一层,除了早期的CORBA,还有个很重要的趋势,OSGi成立1999年,但是由于OSGi它推Felix集成开发环境,引起了大家的注意,当前主流的中间件都是基于OSGi开发的,也实现了一些开源的事情,我们理解就是它主要基于Java的更好的可以实现组件的一个动态替换的一个新型系统。GUI这里面,我相信魏老师会给大家讲的,我就不班门弄斧了。Database这一块,也有个趋势,就是早前的面向关系数据库外,面向对象的数据库也越来越引起大家的重视了,尤其在嵌入式领域。DB4o就是一个很不错的面向对象的数据库,当前在我们的嵌入式领域相当广泛。IDE除了Eclipse,NetBean、Kdevelop外,还有一些面向C和C下部MonoDevelop等一系列开源集成开发环境,大家用的最多的,或者基于它进行二次开发最多的还是Eclipse,这个我想大家也都有体会。这是IBM在维护的开源的可扩展的IDE。
最后再花点时间简单介绍一下我们正在做的工作,其实我们做了很多教学和研究工作,都离不开我们的开源软件,我们看一下。第一个就是我们做的嵌入式开发和教学的模拟环境,叫做Skyeye,这是一个软件,它主要的目的是能够模拟一个嵌入式的开发板,这样可以使得我们软件在这个硬件上进行调试、运行、开发,这是目前它支持一系列的CPU和一些外设,目前已应用于教学和部分科研中,有相应的网址大家可以访问。目前也是我的学生在做进一步的开发和维护。第二个OS,OS算我的本行,其实有个很有意思的特点,也和大家介绍一下,我觉得我们国家OS的教学有比较大的问题。很大的问题在于老师的教学,我曾经参加过教育部的一个会,操作系统教学的一个会,来的老师都是教操作系统的,但是只有10%的老师会去做操作系统的研究,这确实是个问题,如果不做研究,怎么能够更好地去教学?如果只照着书本去教学,其实是很有问题的。而目前我们国内的操作系统的教学,还是以书本为主,就是以原理为主。但是我们看国外,无论是MIT还是斯坦福,他们都是面向实践的操作系统教学,这一块其实邵老师应该也有相应的体会,我们现在目前就是基于MIT的freecode的操作系统,来做进一步的推修、扩展,学生花很大的时间和精力放在实践这个环节,通过它更好地了解操作系统,目前我们做了扩展,在不到7000行代码里面,支持x86的SMP和多核架构,可以把Linux的,Linux很重要很复杂,我们把它的调度器的框架、算法、内存管理都移植到我们的操作系统里面,代码不超过1万行,就可以让学生在这上面做相应的实验和了解。当然即使清华的学生对它依然觉得有难度,我希望通过我们进一步的扩展可以使我们的学生可以更好地去了解OS真正的怎么回事。第三个是偏科研,刚才我已经提到了,要支持互联网,现在有个很重要的观点,要把多个嵌入式设备隐藏在看不到的地方,通过它们的互联互通互操作来使得可以给人提供更有效的服务,那么目前我们在做的一些无论是863还是“核高基”的一些项目,都是与之相关的。当前有个概念叫普适合计算,在清华也有专门的普适计算研究中心来做相应的工作,目前申请的项目就是希望能够通过支持底层设备级的互联互通协议甚至做进一步的扩展,包括和国内其他单位合作使得将来的设备能够更有效的互联互通,然后动态地生成一些服务,给提供一个更好的支持,使我们的生活更加方便和舒适。这是我们目前在做的一些工作。
最后简单总结一下,就是现在我们国家确实在进一步推广支持开源软件,学校也在进一步推广开源软件的教学,产业可以通过开源软件来降低成本,增加效益,我们理解是开源软件在嵌入式领域将会有更大的发展。谢谢大家。 |