打印
[嵌入式linux]

《面向嵌入式领域的开源软件》

[复制链接]
22476|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 一朝成名 于 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还是“核高基”的一些项目,都是与之相关的。当前有个概念叫普适合计算,在清华也有专门的普适计算研究中心来做相应的工作,目前申请的项目就是希望能够通过支持底层设备级的互联互通协议甚至做进一步的扩展,包括和国内其他单位合作使得将来的设备能够更有效的互联互通,然后动态地生成一些服务,给提供一个更好的支持,使我们的生活更加方便和舒适。这是我们目前在做的一些工作。
                最后简单总结一下,就是现在我们国家确实在进一步推广支持开源软件,学校也在进一步推广开源软件的教学,产业可以通过开源软件来降低成本,增加效益,我们理解是开源软件在嵌入式领域将会有更大的发展。谢谢大家。

相关帖子

沙发
一朝成名|  楼主 | 2009-8-6 10:56 | 只看该作者

《互联产品的嵌入式软件发展》

本帖最后由 一朝成名 于 2009-8-6 10:57 编辑

再贴一个 ARM中国总裁(确切说已经离职了)  谭军的演讲,也很不错~   
http://www.esbf.org.cn/index.asp
这是网址,一个非盈利的嵌入式组织(还是不免掺杂了一些商人),一些其他商业的报告就不贴了
      各位朋友,上午好。我感触很深,01年我第一次参加单片机系统联谊会,那时候人没有这么多,讨论问题还是怎么定义嵌入式,现在8、9年的发展给我感触很大,其实有三个,第一、讨论的深度、广度,不进推广一个概念,还有很多实践。第二个企业的发展,那时候MiniGUI,还有周立功的公司那时候不到100人吧,现在是900多人。第三个来的人数分布不同,那个时候年龄比较大,现在看到很多老中青,中国的未来不在我们年龄大的人上,还是在年轻人身上。我也知道常老师上次带了研究生过来,这次好像也带了。你们比我们读书时更幸运。还有件事比较有意思,我看到一篇**,就是把中国古典文学和嵌入式结合起来,把贾静雯和windriver说在一起,但是我认为还应写个前传,实际上在过去3个月中,嵌入式软件有几个大的事情,一个是Intel与windriver,还有一个是去年初Andriod,一个互联网的门户网站推出一个免费的平台软件,这个影响不是很大,还有一个是symbian开源化,诺基亚以前花了几亿美元打造的symbian平台,在去年5、6月份的时候,进行开源化,只要交一些钱就可以获得源代码,据我所知,国内已经有两家公司中兴、华为拿到了Symbian的源代码。
    回到今天我讲的主题,就是未来互联嵌入式产品中的开源嵌入式软件,因为今天嵌入式产品太多了,所以加上了部分限制,从高端航空火箭到心脏起搏器,我们讲的市场是针对消费者花钱买的产品,互联产品包括智能家庭、未来汽车里面的。ARM公司大家可能都比较熟悉了,我想强调一点,在嵌入式产品里,基于ARM处理核是全球最普及市场最大的体系结构,X86结构去年突破2-3亿个,基于ARM的去年突破40亿个,我们预测几年后将突破50亿个,这是两个不同市场级的差别。
    我认为计算模式在我们身边有了很大的变化,在过去30年中,个人电脑是提高了个人生产力,我们很清楚,每个电脑要通过终端、服务器实现,没有上机实践,就不能生成出产品,这有个特点就是有固定的硬件和固定的软件来实现这个创新,但是这两年呢,移动计算给我们带来个人自由,不仅有个人的生产力,还能够随时随地能够实现。第二个呢,现在消费者我们不希望我们的计算平台都是一样的,我们希望不同形式的,有上网本,有智能手机,有MID等等,这个时候消费者想要更多发言权,想要自己量身定做,实现任何时间任何地点都能掌握数据,比如说我的手机,我任何时间都需要知道日历,联系方式还有Email,这样事情有个特征,就是相同的平台不可能去强迫它到一个平台上,我们讲了很多融合,融合会有,但是不应该是一个平台,我们身边有很多产品,这样就有了矛盾性,消费者越来越多,但是又有很多产品,就有了矛盾,就有了赚钱的机会。我认为未来软件是帮助消费者在不同的产品里面会有一个一致的体验,我跟何老师沟通过,未来的产品是不是每个产品都需要看手册呢?我想一开始可能要看,可能一开始软件比较粗糙,再过几年发现只要是电子产品,开机后,不需要再去看手册怎么使用,无论是数码相机还是PMP,还是电视、手机、MID等,这个时候会发现,软件的开发包括软件销售的影响,我认为软件产业正在面临一个巨大的**,销售软件这个概念,包括销售团队,应该考虑今后怎么办,销售很可能会通过网络化,而不是通过我们的人去销售的。开源软件意味着产业链更需要免费的,可能很多会转化为服务,这个就是我大概一开始的定位。
    第二个就是web2.0,web1.0我就不需要讲了。Web2.0不仅仅能看网页,交流信息,还能产生一个网页,包括网页跟你的时间地点有关,并不只是浏览网页。这样就会发现需要功耗很低,然后能够随身携带,不是很大,刚才陈渝讲了,需要定位,这是个重要的事情。至于怎么通过定位进行商业模式,你会发现每天都有很多人在讨论。第三个我们认为网页不仅仅是我们去看,运营商很讨厌这个事情,有很多人说最讨厌别人到网上**互联网,他们希望给一部分钱,然后所有数据都可以送给他们(PUSH)。有时候你要的信息不见得是来自一个网站,怎么利用软件把很多网站的信息弄过来整理好,我认为这开源软件可能赚钱的一个地方。这样会发现很多软件不是用C语言来写了,而是基于更高级语言来写,还有一部分标准。那么在未来的互联设备上的网页浏览,需要软件,需要浏览器也需要一些插件,因为不同的插件支持不同的应用,第二个还需要操作系统。但是怎么去实现呢?这个可能跟十年前我们开发单片机不一样,那时候很多人认为任何时候都有机会,我们现在机会很可能不在这三样东西了。传统的OS发生变化,现在开源越来越多了,很多公司提供kernel,有的还提供平台化软件,我认为这个又使很多软件公司面临要改变业务模式。Borwser也有开源很多,应用很大和大,但是我认为在未来互联网里面,,performance还是很重要的,如果我的CPU跑100MHZ,你的performance可能需要担心,如果你的软件可以使你的CPU只跑500MHZ的话,就很有价值了。Web2.0很可能回到我们10年前抛弃的Java,那个时候我们认为Java很难推广,因为Java只能在台式机上运行,而且很慢,但是这10年中Java变化很大,以前只是支持浏览网页,现在能够做很多很多事情,Java也写了很多软件,有很多例子。Java这样的好处可以在不同的机器上运行,不限制在电脑还是手持设备,包括将来汽车里带导航仪的通讯,都可使用。所以我认为很可能我们要回到怎么利用Java写个增值软件。这里面要实现一个很成功的产品离不开一个生态系统,我认为在互连设备里面,毫无疑问需要很多开源的,开源的软件还包括一些标准,不同的东西可能不同的标准,再一个还一些平台。开源后也需要一些人来支持你,免费拿到,但是后期支持的模式也在变化,很多新的公司他们的业务模式是把这个开源,但服务不是免费的,这个就给嵌入式软件带来新的冲击。
    刚才陈渝讲了很多Andriod,我不会讲很多。Andriod过去一年中也发生很大变化,一个做搜索引擎公司公司发布了一套软件,Andriod里面所有的源代码都是ARM上验证和执行的,同时我们把ARM很多硬件的特殊指令专门为Andriod进行优化;再一个就是Ubuntu,Linux的发展也很快,90年代初,Linux刚刚出来kernel,现在下载Ubuntu的话,得到的不仅是一个OS,包括里面所需要的所有软件都有了,这个ARM也在和Ubuntu在合作,也是开源的。除了这些软件之外,还缺些别的软件,第一个就是浏览器,ARM和浏览器公司也在合作,包括怎么实现Java虚拟机,还有Java的加速,Firefox把浏览器移到ARM上的时候,发现和X86相比,这个性能提高了3倍到5倍,这里面优化很重要的。还有个优化就是大家都很关心的flash,因为网页里面80%的流量都是flashtxt,这里面对ARM很重要,这个几年前是收钱的,它也意识到移动互联网,移动设备越来越多,所以它干脆赚工具的钱。ARM从去年开始与它合作,把最新的Flash10移植到ARM上了,绑到一起进行优化,这样未来很多人应用都能在ARM上实现,是免费的。再一个就是Java的加速,具体的情况,大家可以看看我们公司的介绍。在未来的互联网互联设备,用户不希望一个产品,用户希望不同的产品。用户用的设备不同,但体验要是一样的,这就需要软件的价值。这是未来所关心的。三星电视和nokiaN97 就是一个例子,用户的体验是相同的。
    最后,我认为我们公司和很多开源公司合作很密切,全世界支持最多的Linux平台就是ARM,我们认为开源嵌入式软件是下一代差异化计算的优先选择,既要差异化,从手机到电视,到上网本,到MID,但是又要实现统一的用户体验,这里面怎么实现呢?我认为软件的创新包括软件价值,怎么利用web技术、利用互联为消费者在不同的终端里面实现一致的体验,可能是界面,也可能是菜单,也可能是信息的推送,这样才能实现任何时间任何地点设备上的模式计算,并且一定要改变,未来的上网不是浏览,未来上网很可能是信息的获取,信息获取不是一拉就能推过来,怎么给我们的嵌入式软件把信息给拉过来呢?这是一个增值点。开源软件在过去20年中发展很多,变化很多,从一开始的几张光盘,到现在的几个DVD,我认为这是一个很有生命力的软件生态系统,很多企业意识到。IBM是全球最大的开源软件公司,2000多个员工来支持Linux,通过服务来赚钱。越来越多的公司意识到开源是不可避免的,就要迎接这个挑战,通过服务、通过创新,来获得利润。
    我就用狄更斯讲的一句话作为结尾。他在写《伟大的历程》讲过一句话:现在是最糟糕的时代,同时也是最美好的时代。我认为中国嵌入式产业链经过过去十多年的进步和发展,特别是国内现在鼓励自主创新的企业,还利用“核高基”,在不同产业包括航空航天,到消费者里面,现在基本上开源能够提供很多选择,怎么真正执行,怎么真正抓住消费者愿意花钱买的嵌入式的创新。
     这个是我的对上面所有嘉宾发言的体会。我下午还在,有事情愿意和我沟通的,我们可以一起聊聊。好,谢谢大家。

使用特权

评论回复
板凳
john_light| | 2009-8-6 11:18 | 只看该作者
谭军离职了?:o

使用特权

评论回复
地板
一朝成名|  楼主 | 2009-8-7 09:48 | 只看该作者

使用特权

评论回复
5
一朝成名|  楼主 | 2009-8-7 09:49 | 只看该作者
发俩照片,左一陈渝 右一谭军

使用特权

评论回复
6
一朝成名|  楼主 | 2009-8-7 09:54 | 只看该作者

《多核和多操作系统》

本帖最后由 一朝成名 于 2009-8-7 09:59 编辑

大家早上好,很高兴有这个机会和大家交流。在讲multicore和multi-OS之前,先讲一讲Intel收购WindRiver这件事。刚才邵老师也提到这个话题,刚才我一来,也是大伙问我最多的话题。在此给大家一个官方的正式的解释。其实这次Intel收购WindRiver是Intel的软件部,是把Wind River作为一个独立的子公司进行运作的,WindRiver公司的名字,品牌的名字都还在。公司的政策也不会变,包括除了Intel外,我们对PowerPC,对ARM,MIPS这些芯片的支持,也都不会变。其实可以观察一点,看看Intel收购windRiver的目的是在什么地方,如果收购一个软件公司只是作为硬件芯片的一个拐棍,基本上它就会只支持这种芯片,如果它把软件作为一个独立的business来运作,它一定会支持很多种处理器,否则没办法生存。看它背后的目的,就可以知道它下一步会怎么做。其实这个可以看IBM,IBM有很多软件,它并没有限定IBM的软件一定要用在IBM服务器上,还可以支持它的竞争对手的服务器上。软件作为一种业务来运作的话,如果把软件限定在一个很小的市场上,就没办法和别人去竞争,一定会越做越小,所以从这方面可以继续观察形势的发展,这是我从公司的一些讨论,发布的一些信息看到一些情况,给大家做一个交代。另外,的确根据这个,网上有很多的一些猜测,比如说,是不是会在Linux上会用劲越来越大?其他VxWorks会不会越来越小?我觉得有这种猜想也算正常,以前从看Intel基本上Linux这一块,因为收购的消息宣布很突然,对我们也很突然,对业界也很突然。我们得到消息的时候也是突然宣布的时候,其实回过头来再往前看,感觉其实两个公司的上层是有一些动作的,在过去1到2年当中,Vxworks在Intel芯片上有很多的东西,以前是没有的。以前Intel合作多的还是Linux,但是做过去1、2年,很多方面Vxworks在Intel芯片上来做,回过头来一想,两个公司是不是有预谋,也不敢讲(呵呵)。所以从目前情况来讲,我觉得按照目前它的指导思路和想法应该不会有大的变化,但是business总是随时会变的,大家可以密切观察,但是我觉得观察点还是把WindRiver放在一个什么位置去看。我觉得这是一个最根本的观察点,如果你作为一个独立软件公司,我觉得不会走的太偏,这是我的一些观点。
    何小庆最早给我出的题目是一些嵌入式商用OS的一些发展趋势等等。第一个我觉得可能题目有点大,第二个呢,有个观点:前一阵在广州跟周立功老师,我们谈了好几个小时,其实我们觉得嵌入式软件这一块,制高点是在操作系统之上的平台,并非操作系统本身。这是很关键的一个地方,周老师他们做的方向非常好。这个只是一个建议,虽然你的名字叫anywhere,目标有点大,可能会有点问题,可以先从somewhere开始,做到最后可以是anywhere,会做的越来越好。架构上要支持最终的anywhere,这种坐下来可能会更踏实一些,ok,回到最初的题目上。操作系统本身就很大,我只能尽可能选择小一点、能讲出具体东西的题目来讲,就取名为《multicore and multiOS》了。
    第一个,大家接受多核的速度远比我们想象的要快,特别在通讯行业。今天这个多核,可以说在嵌入式行当,尤其在通讯行当,已经是很普遍的事情了,但是接受多核的地方和我们一开始想象的不太一样。刚开始,以为多核之所以多核主要还是性能上,觉得一个应用需要更多的在性能,嵌入式里面功耗不能太大,不能光靠提高主频还提高性能,所以觉得多核才是一个出路。其实今天看到用的更多的是降低成本,原来可能是2块板子或者3块板子来完成的事,现在因为有了多核,一块板子就可以做了,这是最大的地方。而且可以看到许多半导体厂家,两核可能比单核价格高那么一点,也不高到哪去,这是降低成本,融合,反而是多核最大的一个应用。我们所看到,不管是华为中兴还是更小一点的客户,基本上都是这样子的一个情况。其实多核,可能我刚才谈到的很多是同构的,其实异构的多核很多都是手机上,或者其他一个CPU带一个ARM,或一个DSP等等,但是这种方式往往对编程模式或者对软件影响可能不像同构影响那么大,还是两个独立的自编自的程序,互相视为外设等这样一个方式,所以我这块讲的主要还在同构这个多核下对编程的一些影响。多核为什么要和多OS绑在一起?其实,如果多核情况下,最典型的我们知道,多核可以按照对称多处理,对称多往往就是一个操作系统把所有的核都管上了,应用程序大体透明,这样一种方式。今天我们看到的情况是AMP多于SMP,在网络这一块我看到是这样一个情况。那么在AMP下,未必每个核上操作系统都一样,就会带来多操作系统的情况,那么多操作系统和虚拟化有什么关系呢?这是在架构融合上考虑的一个问题,其实不光虚拟化,我们知道一台计算机不光要有CPU,存储器,I/O,把这些东西放在一起,可以叫做一台计算机,虚拟化把这三部分都虚拟,这叫完全虚拟化;其实在多核上,就是说它的核可能是实的,有2个核或者3个核是实的,I/O、memory做一定的虚拟化,这也是一种虚拟。虚拟的概念可以是部分虚拟,虚虚实实结合在一起,所以多OS和虚拟化有通过这个融合在一起。这样在软件上,无论是给用户提供的编程模式,还是软件的体系架构上面,都会带来一些方便。这是为什么multi-OS和Visualization(虚拟)又给连在一起了。
    从这张图可以看出,如果大家了解windriver,可能知道有很多操作系统,有Linux,Vxworks,还有其他很多版本,左边这个可能很多人不太清楚,是特种的OS(基于vxwork),其实这个上面就是说现在我们所看到的发展趋势在操作系统之下有个我们叫做hypervisor的一层,这层就实现对multi-OS和virtualization的支持,这样一层,可以是Vxworks也可以是Linux。如果把这个hypervisor以及多核、多OS放在一起,用这样四张图,大家可能看得比较清楚,最左上角这个是传统一点的,一个CPU上面有一个OS,这样的一种方式;左下角这个是SMP的,底下有多个处理器,上面有一个操作系统,这是一种方式;那么右上角这个呢,是大家理解的典型的虚拟化,就是一个CPU,在一个计算机上虚拟化,虚拟出两个虚拟计算机,然后运行两个操作系统;值得关注的就是右下角这样子的配置,它是多个核,但是中间还有一层虚拟化的一层,然后上面有两个OS,我们管这样的一个配置,它实际上是一个叫做supervisor,比hypervisor它的功能低一点,因为它不需要虚拟CPU,有时候我们把这个叫做带管理的AMP,也就是supervised AMP,或者叫做managed AMP,作为这样子的一种方式。
    就是在多核以后,AMP的各种配置可以说千奇百怪,用户可以各种各样地进行配置,这张图上举了几个例子,有点核上可能没有操作系统,有的核上是Linux操作系统,有的是Vxworks操作系统,也有可能是μC/OS系列操作系统,实际上就是说,有了这么复杂,有各种各样应用的情况下,其实这么多核,这么多操作系统,在这些底下,有一层相对有点统一的管理对解决它的复杂度,包括对解决它编程的方便程度,以及它的可重配置工作,都是很大好处的,这时候可以感到为什么会出现supervisor和hypervisor这样一个东西。打个比方,supervisor和hypervisor有点像PC上BIOS那一层,是操作系统下面的这样一层。
    这张图就稍微细的展开了一点hypervisor的一些情况,最底下可以看到物理上有IDE,有时钟、以太网、有串口,可能有若干个CPU、核,在上面呢,可能通过hypervisor就是指的这个部分,configuration相当于资源的配置表,在这之上,是虚拟出三块板子,可以看到三块板子中有一块板子所谓的Vcore就是物理对应的实核,另两块板子所谓的虚CPU可能就是两块板子共享的同一个物理的CPU,虚虚实实是混在一起的,而且这里面I/O口,可能某一个以太网口是专门给一个板子,对它来讲,虚设备和实设备是完全匹配的,可能对另外两个板子上它的以太网是共享同一个以太网,所以虚虚实实可以通过配置来实现用户的一个选择,有了这个hypervisor,实际上就把多核多OS放在一起,使得这样一个环境下可管理、可编程、可调试,这样可能更好一些。
                我讲的基本就是这样一些,谢谢大家。

使用特权

评论回复
7
一朝成名|  楼主 | 2009-8-7 09:55 | 只看该作者
韩青 风河中国区首席代表

使用特权

评论回复
8
phoenixmy| | 2009-8-7 10:01 | 只看该作者
成名兄发的这些还挺有意思的

使用特权

评论回复
9
huangqi412| | 2009-8-11 08:19 | 只看该作者
额,上面那个,不注意还跟会计有点像了

使用特权

评论回复
10
一朝成名|  楼主 | 2009-8-11 20:03 | 只看该作者
本帖最后由 一朝成名 于 2009-8-11 20:05 编辑

附上一个曾经的老帖子,讨论关于linux驱动
在学linux驱动之前要考虑的和参考

https://bbs.21ic.com/viewthread.php?tid=95023&extra=&highlight=%E9%A9%B1%E5%8A%A8%E7%83%AD&page=1

使用特权

评论回复
11
jxb163| | 2009-8-18 13:37 | 只看该作者
潭军确实辞工了,虽然他是ARM公司中国老大,毕竟也是打工的.

使用特权

评论回复
12
一朝成名|  楼主 | 2009-8-18 15:03 | 只看该作者

Linux的春天

Linux的春天

陆首群
中国开源软件推进联盟主席   转载地址http://www.tektalk.cn/

【编者注】:2008Linux开发者研讨会二月份已经在北京成功召开。这是一场具有分水岭意义的系统软件大会,对中国的系统软件的发展有着长期的和深刻的影响。《弯曲评论》对这次大会作过相应的报道:2008Linux开发者研讨会 . 北京 . 中国。作为主办方的中国开源软件推进联盟和主席陆首群是这次大会的主要推动者。其为大会撰写的“Linux的春天”一文,编者通过陆主席的秘书宋可为先生处已经获得,并在第一时间内阅读。编者认为这是一篇非常有价值的具有前瞻性的文献,对中国计算机界如何跨越式的提高核心技术的竞争力,政府部门应该如何调整投资方向具有相当重要的智库参考作用。现全文转载于此,以饷读者。
著名的IT调查分析公司Gartner认为:许多开源技术是成熟的、稳定的,用户可以获得良好技术支持的。到2012年,开源软件的技术因素将占全部商业软件的80%;这时,开源软件将在全球广泛应用。
开源软件的兴起,日益改变世界软件产业的发展轨迹;也为中国软件产业的发展带来机遇。
几年前,微软CEO Stave Ballmer就说:对微软构成挑战的三件事:(1)开源运动,(2)Google的网络广告,(3)Apple的数字系统。
2005年,我在访问微软与其高层谈话时说:我在西雅图参观了四家著名企业,除微软外还有波音、星巴克、亚马逊,这三家与微软近在咫尺的企业都在使用开源软件,你们对此有何感想?!
几年前我曾指出,Linux的兴起,自然向Windows挑战,并形成一种竞争的格局,但Linux的发展可以与Windows共存、互补,从而为用户提供多一种选择;正确说应该形成一种既有竞争又有合作的局面,我们提倡以理性的态度对待竞争,要相互尊重,不要虚声恫吓,不要炒作,更不要漫骂、讥讽。
让我们来看看Linux在各领域发展的现状和趋势:


Ø 在互联网上,Linux和开源软件占有很大优势。
Ø在服务器领域,Linux操作系统的市场占有率已达20%以上,与Windows操作系统一起,已形成二元技术平台的主流操作系统;近年来,随着Unix在高端系统逐渐衰落,Unix向Linux迁移正在成为一种趋势。由于Linux是一种类Unix,在技术上、使用上,更在成本上,Unix向Linux迁移比Windows更具优势,目前在美日金融行业的一些关键任务系统(MissionCritical)中,主机Z系统上的Unix(ZOS,AIX)正在向Linux迁移。
Ø在桌面领域,Linux的市场占有率还很低(2%)。过去Linux桌面没有独立的产品,只有Linux服务器的桌面端这种衍生产品,近几年才开始发展独立的桌面Linux操作系统;更由于近年来世界各地第三方对驱动支持和应用支持的力度与计划空前加大,Linux可望在未来几年内将出现一个发展拐点,并从此进入高速发展的轨道。
Ø       在移动嵌入式领域,以智能手机为例,Linux遇到与Symbian、Windows Mobile以及基于开源”Net BSD”的MacOS-X等嵌入式操作系统的激烈竞争,可望在竞争中取得主动,从而实现高增长。
Linux和开源软件其成长率之高、竞争力之强,从开发人才的对比也可窥见一斑。
我过去曾说过,微软开发Vista,集中了5000人如此大规模的精英团队,我们为此叹为观止!但与开源社区的开发队伍来比,还有小巫见大巫之感!分布在全球开源软件的志愿开发者,有200多万人这样蔚为壮观的队伍,他们为开源社区的开发创新作贡献;有人说”这是乌合之众”,显然是错误的!而开源社区80%的开源成果,又来自几十、上百家IT企业中有组织的志愿开发者,他们作为开源社区的核心层作出了无偿贡献。这样对比起来,即使象微软这样的超级公司,其开发力量也是难以与开源社区相比拟的。事实上,开源社区(如kernel.org, Free BSD, Xen Source, SourceForge,JBOSS,SugarCRM等)还不断向微软提供了很多组件和关键技术。
有人认为,Linux是自由软件,是”完全免费的”,其开发的性能”相当粗糙”,且”使用不便”,”开发者又不提供技术支持和服务”,”需要使用者自己来安装、配置和调试”,因此Linux是”没有价值的”,”不可能给Windows构成竞争威胁”,”Linux也不可能形成产业”。说这种话的人真糊涂,他们对Linux和开源软件在理解和体验上有误区。
Linux向人们提供两种开发成果或两种版本:应该指出,一种是由Linux社区(除Kernel.org外,还有如:Fedora、SuSE、Debian、Ubuntu等社区)开发的原创性成果(实现设计创新),他们提供社区版;另一种是由Linux发行商(Distributor或Distro,如Red
Hat、Novell、中科红旗等企业)推出的版本,他们对社区版进行工程化处理,注入工程技术(实现工程创新),取得产品化或商业化成果,他们提供企业版。
我们千万不要把两种成果或两种版本混淆起来。
ØLinux社区版的全部技术体现在全部源程序代码中,社区版的全部源程序代码是公开的,因而社区版的全部技术也是公开的。社区版是可以从网上免费下载的;人们对社区版可以自由使用,复制和修改,还可以自由发行或传播(当然必须遵守GPL许可协议)。社区版并不进行工程化处理,没有商业模式,当然社区也不为用户提供技术支持和服务(使用者在下载社区版后,只能自行进行安装、配置和调试)。应该说,社区版作为原创性设计,其性能尚不够稳定、优化、高效和成熟。对某些人来说,如果你要”自由”获得”免费”的版本,你可从网上下载,但是你就不该奢望其性能是那么稳定、优秀和成熟的,你也不会指望谁来为你提供什么技术支持和服务!
Ø Linux企业版由企业(Linux发行商)对社区版进行工程化处理或工程创新(工程化处理技术主要是由专用技术/knowhow和工程经验所组成),Linux企业版的全部技术由体现设计技术的全部源程序代码(这是从社区版继承下来的,这里还可进一步提供二进制执行代码)与工程技术所组成,企业版的源代码(及二进制代码)也是公开的,但工程技术(其中包含技术秘密和商业秘密)是不公开的,企业版是有商业模式的(可以是低价的传统交货付费销售模式;或是租赁模式,如订阅模式;也可是网上SaaS模式,即软件免费,服务收费的模式),这时企业(发行商)当然有责任为用户提供技术支持和服务。应该说,企业版在进行工程化后续处理后,其性能将趋于稳定、优化、高效和成熟。
由Linux发行商(企业)负责进行的工程化处理技术的内容包括:(1)主干(Official)内核与发行商次干内核之间的允许偏差(3-5%),(2)各种软件模块的不同配置,(3)兼容性测试和质量认证,(4)回归移植或降级处理(BugFix,Patch)。
现在我们来谈谈Linux操作系统。
很多人把Linux内核(Kernel)看作为Linux操作系统,即不认为Linux是一个独立的操作系统;我们这里还是把Linux内核和其独立的操作系统两个概念区分来看。
Linux内核2.6版本的发布,是Linux操作系统发展的里程碑,开创了Linux企业级、电信级可管理性的应用,使Linux性能走向稳定、优化和成熟。
今天,Linux操作系统已有386个版本,但各种不同版本的内核(底层)始终是统一的,这是Linux不同于Unix之处,这也是各种不同版本Linux实行标准化、互换性的基础;必须指出,Linux内核的各种升级版本与其早期版本之间缺乏兼容性(均为内核的社区版),从而造成Linux的各发行版本(产品版)存在标准化问题,或难以形成规模批量,给第三方驱动或应用的支持造成困难,这是Linux内核开发中急需改进的。
Ø 对先进网络的支持,这是Linux的优势之一。
Ø Linux支持广泛的硬件和多平台,支持超线程(Hyper threading)和虚拟化技术(VMTech.),支持大型服务器、桌面和嵌入式。2.6版本的Linux内核改进了可抢占(Preemptive)的机制(在执行任务时,关于中断的延迟,目前改善约90%),这就为发展软实时系统,扩大在嵌入式领域的应用,提升桌面系统的响应性、可交互性,创造了条件。
Ø Linux内核2.6版本增强了在关键应用(包括Web服务、数据库、数据可聚类中使用、高性能计算等)的高性能、可靠性和稳定性。
ØLinux内核2.6版本提升了Linux的安全性。Linux是具有高度安全性的操作系统,这是不容置疑的(美国政府、法**方选择Linux和开源软件的案例说明了这点)。在本质上,Linux基于内核的安全体系(在”类Unix”中超级用户权限)已被划分成一些可以被替换的安全模块,并更新以具有更细粒度的用户访问控制;一些二进制驱动模块不能再重载系统调用,从而限制了非开放源码模块对内核的访问;新的内核能够使用硬件随机数生成器(不是依靠随机硬件熵值变化),也提升了Linux的安全性能。
由国际Linux基金会与中国开源软件推进联盟共同主办的”2008Linux开发者研讨会——中国”(2008Linux DeveloperSymposium—China)将于2月19-20日在北京开幕(开幕式在2月18日晚召开),这是全球最具有人气的Linux开发者盛会;对中国开发者来说,有机会与全球资深的开发大师一起,通过沟通、学习、交流、探索和合作,将会有力地带动自身设计技术和工程技术水平的提高;这次盛会将大力推动中国Linux和开源运动的发展,以迎接中国和世界Linux和开源软件的春天。
在讲演者中,不但有全球技术精湛、经验丰富的开发大师、资深专家,也有近年来涌现出来的本地开发者精英。事实上,当前中国,从过去人们所谓的”国际开源社区资源消费者”的形象,正在向”贡献者”的形象转化,这次会议将更加有力推动转化的进程。
会议将从网络、服务器、桌面、移动嵌入式诸领域研讨Linux的开发技术和工程经验。会议不但吸引了世界三大手机联盟LIPS(法国电信、英国电信、华为、中兴通讯等)、LIMO(Motorola、三星等)和OHA(Google、中国移动等)积极与会,NOKIA也申请参加会议(NOKIA是全球最大的智能手机制造商,他们开发生产三种手机操作系统:S4O,NOKIAOS;S6O,Symbian;Linux的智能手机);一些跨国公司,如:IBM、Intel、RedHat、Novell、Sun、Oracle、日立、富士通、NEC、KDDI、EMC、Device VM、Siemons、SAP等也申请参会。
在本次研讨会上还将设置一个十分精简的成果展示区,集中展示近年来国内外一批Linux开发和应用成果,其中有:关于Linux和内核的专著或译著,中科红旗的移动互联网操作系统(Mobile InternetDevice),中标软件Linux操作系统最新研制成果,江苏龙梦的Linux计算机,IBM公司的桌面系统(Open CollaborationClient/Lotus Notes 8,Symphony),Device VM公司的快速启动技术成果(SplashTop,涉及嵌入式Linux和节能技术,或涉及Linux生态系统,被Phoronix评选为2007年美国”最伟大的发明”),OpenMOKO(大众),基于社区的智能手机版本,OLPC(装Linux版本,”每一个孩子一台笔记本计算机”),中日韩三国合作开发的关于输入法引擎接口规范,以及互联网网页互操作性等文本。
中国互联网用户正在从居全球第二向第一转化,中国手机市场居全球第一,PC市场居全球第二,电视机市场居全球第一,汽车(汽车电子化)市场方兴未艾,这就决定了中国正在蕴育成长全球最大的软件市场,这也决定了开源软件在中国是大有作为的。
市场需求推动技术发展,这就是这次”2008Linux开发者研讨会”在北京召开的背景。
让我们迎接中国和世界Linux 和开源软件的春天!

使用特权

评论回复
13
一朝成名|  楼主 | 2009-8-20 20:06 | 只看该作者
面对不断升级的内核,如何学习linux设备驱动  


               
作者:刘洪涛   华清远见金牌讲师




        面对不断升级的linux内核、GNU开发工具、linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁。兴奋的是新的软件软件、工具给我提供了更强大的功能,烦躁的是适应新软件的特性、搭建新环境是一项非常繁琐的事情。本文想从以下3个方面探讨一下“面对不断升级的内核,如何学习linux设备驱动”。
        内核发展的现状及其对技术人员的影响
        Linux目前主要维护2.4和2.6两个内核版本。在http://www.kernel.org/ 网站上已经可以下载到最新的2.6内核linux-2.6.31,及最新的2.4内核linux-2.4.37。稳定版本号基本上是1~3月更新一次,如:2.6.22至2.6.23。升级版本号每1~2周更新一次,如:2.6.23.1至2.6.23.2。
        由于高版本内核并不完全兼容低版本内核,所以内核升级对从事linux开发的技术人员造成了一定的影响,特别对于linux入门人员。
        内核的升级对应从事linux应用程序开发的人员来说影响较小,因为系统调用基本保持兼容。而影响比较大的是驱动开发人员。每次内核的更新都可以导致很多内核函数使用上的变化。其中有内核本身提供的函数,也有硬件平台代码提供的函数,后者变化的更加频繁。这一点让初学内核驱动的人很迷茫,因为当他们按照手里的经典著作,如:Alessandro的《linux设备驱动程序》,编写驱动时,发现并不能够成功的在你的linux平台上编译通过、或不能正常执行。你的朋友会告诉你,你用的内核和书里的不一致。那该怎么办呢?
        我想从两个方面去解释这个问题,一方面是如何写好linux设备驱动,另一方面是如何应对不断升级的内核。
        如何写好Linux设备驱动
        Linux设备驱动是linux内核的一部分,是用来封装硬件细节,为上层提供标准接口的一种方法。为了能够编写出质量比较高的驱动,要求工程师必须具备以下几个方面的知识:
        熟悉处理器的性能
        如:处理器的体系结构、汇编语言、工作模式、异常处理等此项对于初学者来说,重要程度:***。也就是说还不熟悉驱动编写方法的情况下,可
以先不把重心放在这一项上,因为可能因为它的枯燥、抽象而影响到你对设备驱动的兴趣。
        随着你不断的熟悉驱动的编写,你会很自然的意识到此项的重要性。
        掌握驱动目标的硬件工作原理及通讯协议
        如:串口控制器、显卡控制器、硬件编解码、存储卡控制器、I2C通讯、SPI通讯、USB通讯、SDIO通讯、I2S通讯、PCI通讯等
        此项的重要程度应该不用多说了,编写设备驱动的前提就是知道设备的操作方法。但不是说要把所有设备的操作方法都熟悉了以后才可以驱动,你只需要了解你要驱动的硬件就可以了。所有这一项对于初学者来说重要程度都是:*****。
        掌握硬件的控制方法
        如:中断、轮询、DMA 通常一个硬件控制器会有多种控制方法,你需要根据系统性能的需要合理的选择操作方法。
        此项对于初学者来说:重要程度:****。初学阶段以实现功能为目的。掌握的顺序应该是,轮询->中断->DMA。随着学习的深入,需要综合考虑系统的性能需求,采取合适的方法。
        良好的GNU C语言编程基础
        如:C语言的指针、结构体、内存操作、链表、队列、栈、C和汇编混合编程等。
        这些编程语法是编写设备驱动的基础。
        此项无论对于初学者还是熟手重要程度:*****。
        良好的linux操作系统概念
        如:多进程、多线程、进程调度、进程抢占、进程上下文、虚拟内存、原子操作、阻塞、睡眠、同步等概念及它们之间的关系。
        这些概念及方法在设备驱动的使用是linux设备驱动区别单片机编程的最大特点。只有理解了它们才会编写出高质量的驱动。
        此项对于初学者来说:重要程度:***。开始可以以实现功能为目的,逐步完善自己的驱动。
        掌握linux内核中设备驱动的编写接口
        如:字符设备的cdev、块设备的gendisk、网络设备的net_device,以及基于这些基本接口的framebuffer设备的fb_info、mtd设备的mtd_info、tty设备的tty_driver、usb设备的usb_driver、mmc设备的mmc_host等
        Linux内核为设备驱动编写者留下了标准的接口。驱动编写者无需精通内核的各个部分,只需要明确内核留给我们的接口,并实现此接口就可以了。内核流出的接口采用的是面向对象的思路,即把目标设备看成一个对象,通常利用一个结构体来描述这个对象。驱动工程师的任务就是实现这个对象。这个结构体中会包含设备的属性(用变量表示)和操作方法(用函数指针表示)。如:字符设备的cdev
        struct cdev {
    struct kobject kobj;
    struct module *owner;
    const struct file_operations *ops;  //操作方法结合,其它项都是属性
    struct list_head list;
    dev_t dev;
    unsigned int count;
};
        此项对于初学者来说:重要程度:****。开始阶段可以以模仿为主,即套用一些固定的模板。
        如何应对不断升级的内核
        内核升级对驱动的影响主要体现在,(1)驱动接口定义的变化(2)内核的一些功能函数的名称、参数、头文件、宏定义的变化(3)平台代码关于硬件操作方面封装的一些函数的变化(4)设备模型的影响。下面探讨一下,如何应对这几个方面的问题:
        驱动接口定义的变化
        如:2.4内核中字符设备驱动的注册接口是
        int register_chrdev(unsigned int major, const char * name, struct file_operations *fops)
        而2.6内核中已经不建议使用这种方法了,改为:
        int cdev_add(struct cdev *p, dev_t dev, unsigned count)
        又如:2.6.27内核中网卡接口的net_device结构成员和低版本的net_device结构成员也发生了一些变化。
        这种接口定义及注册方法带来的变化,发生的并不频繁。解决方案是:参考内核中的代码。这种接口定义及注册方法在内核中非常容易找到,如:字符设备驱动的注册方法及接口定义可以参照内核driver/char/目录下的很多实例。
        内核的一些功能函数的名称、参数、头文件、宏定义的变化
        如:中断注册函数的格式及参数在2.4内核、2.6内核低版本和高版本之间都存在差别
        在2.6.8中,中断注册函数的定义为:
        int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *),unsigned long irq_flags, const char * devname, void *dev_id)
        irq_flags的取值主要为下面的某一种或组合:
        SA_INTERRUPT、SA_SAMPLE_RANDOM、SA_SHIRQ
        在2.6.26中,中断注册函数的定义为:
        int request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, const char *devname, void *dev_id)
typedef irqreturn_t (*irq_handler_t)(int, void *);
        irq_flags的取值主要为下面的某一种或组合:(功能和2.6.8的对应)
        IRQF_DISABLED、IRQF_SAMPLE_RANDOM、IRQF_SHARED
        当出现这些问题时,编译过程中,编译器会给我们比较明确的错误提示,根据这些提示你可以判断出是否是缺少头问题、是否是函数参数定义有误等。解决问题的最好办法还是到你的目标内核中找信息。此时找问题的方法可以借助于搜索,如:你可以在新的内核中搜索request_irq,看新内核中的驱动是如何使用它的。这种方法非常有效。
        平台代码关于硬件操作方面封装的一些函数的变化
        内核中,硬件平台相关的代码在内核更新过程中变化比较频繁。和我们的设备驱动也是息息相关。所以在针对一个新内核编写设备驱动前,一定要熟悉你的平台代码的结构。有时平台虽然提供了内核要求的接口函数,但使用起来功能却并不完善。下面还是先举个例子说明平台代码更新对设备驱动的影响。
        如:在linux-2.6.8内核中,调用set_irq_type(IRQ_EINT0,IRQT_FALLING);去设置S3C2410的IRQ_EINT0的中断触发信号类型,你会发现不会有什么效果。跟踪代码发现内核的set_irq_type函数需要平台提供一个针对硬件平台的实现函数
        static struct irqchip s3c_irqext_chip = {
    .mask       = s3c_irqext_mask,
    .unmask     = s3c_irqext_unmask,
    .ack        = s3c_irqext_ack,
    .type      = s3c_irqext_type
};
s3c_irqext_type就是linux内核需要的实现函数而s3c_irqext_type在2.6.8中的实现为:
static int s3c_irqext_type(unsigned int irq, unsigned int type)
{
    irqdbf("s3c_irqext_type: called for irq %d, type %d\n", irq, type);
    return 0;
}
        原来并没有实现。而在较高版本的内核,如2.6.26内核中,这个函数是实现了的。所以你一定要小心。当平台函数不好用时,一定要查查原因,或者直接操作硬件寄存器来达到目的。
        2.6内核设备模型对驱动的影响
        在2.6内核中写设备驱动和在2.4内核中有着很大的不同,就是在设备驱动中融入了比设备驱动本身结构还复杂,难以理解的设备模型。初学驱动时你可以不理会设备模型,但你会发现内核里的驱动代码基本上都是融入了设备模型的了。所以很多时候你不得不面对现实,还是要弄懂它,并且它也的注册方法也会随着内核的升级而发生变化。解决此类问题的最好方法还是参考目标内核驱动代码。
        总结:
        开始学习设备驱动时,选择一个当前比较流行的内核版本和硬件平台。不着急追赶最新潮流。这样你可以找到的网络资源会比较多,不至于有孤军奋战的感觉。我想这个过程应该不低于1年。当过了这个过程后,尝试将你编写过的驱动移植到各个目标平台上。上面的一些建议、和应对方法是本人的一些经验总结,仅供参考。

使用特权

评论回复
14
一朝成名|  楼主 | 2009-9-10 14:49 | 只看该作者
简化VxWorks和Linux图形界面开发,Tilcon Graphics Suite 5.7上市

Intel全资子公司风河系统公司(Wind River)日前宣布Wind River Tilcon Graphics Suite 5.7即刻上市。这是一套面向嵌入式应用推出的软件开发解决方案,可以高效率地构建和部署多平台、高可用的图形用户界面。

Wind River Tilcon Graphics Suite 5.7是风河公司今年2月收购Tilcon公司并进行产品整合的成果,进一步拓展了风河软件开发产品的阵容,不仅在功能特性上与VxWorks的集成性更加紧密,而且是Tilcon图形套件面向Wind River Linux提供标准支持的第一个版本。

在当今激烈竞争的设备制造市场,最终用户体验是厂商取得差异性优势的关键,常常对设备采购率和销售情况起到决定性作用。然而,嵌入式图形用户界面的传统开发方法基本上都是由工程技术导向而非由客户体验导向,因此既特别耗费人力时间,又产生大量的资金成本。特别值得指出的是,传统界面开发方法需要大量而且复杂的编码,即使是很小的修改也会给产品测试和验证带来相当昂贵的代价。

Wind River Tilcon Graphics Suite 5.7可让设备制造商更家轻松地为其产品开发出丰富多彩的用户界面,并且比传统的图形用户界面开发耗费更少的资金和人力成本。在这套解决方案中,主要通过两大特色构件提供核心能力:

◆Tilcon Interface Development Tool (IDT):为图形用户界面设计和开发提供了富于创新并且灵活快捷的主机模拟方法。有了Tilcon IDT,在产品开发过程的早期,不必编写任何产品代码,也不必进行任何编码工作,设备制造商就可以对嵌入式图形用户界面进行设计、推出原型并展开模拟和测试。

◆Tilcon GUI Engine:这是一个运行在设备操作系统上的run-time平台,它不仅向用户显示运行结果,而且可以把设备中所有的应用程序、软件和硬件与待开发的用户界面、正在运行的应用程序和进程统统整合起来。这个GUI引擎支持对图形做出修改却不影响基本应用程序代码,由此可以大大缩短产品上市时间。

由此开始,新的Tilcon Graphic Suite作为一个有机部分集成进入了风河公司的产品阵容,同时面向VxWorks 6.7和Wind River Linux 3.0提供TSP (Target Support Packages,目标支持包)。通过与这两种业界领先的平台产品形成组合,Wind River Tilcon Graphics Suite能向客户和合作伙伴提供更强的可用性、更顺畅的工作流。不仅如此,与以设备制造商必须寻求风河和Tilcon两家公司的支持不同,伴随着采用由风河单一提供商的单一全集成化软件开发解决方案,设备制造商还可获得许多连带效益。Wind River Tilcon Graphics Suite 5.7 为设备制造商带来的更多重要受益包括:

# 扩展了主机支持范围,包括Windows Vista 和 Linux

# 广泛的综合性教程

# 通过新的Wind River Workbench应用模板实现了与风河其他产品更紧密的集成,更新后的Tilcon Scalability Tool可与Wind River Workbench集成,新增了面向VxWorks Simulator的TSP

# 采用Wind River许可证和安装软件,可与风河其他产品保持更好的一致性

风河公司VxWorks产品部市场及战略副总裁Marc Brown指出:“随着低价显示硬件和更强大处理能力的出现,在许多行业,图形界面正从原本只是高端需求转向大批量主流应用。在设备制造商、合作伙伴和行业应用市场的分工合作中,风河公司不懈努力履行自己的责任与承诺,很快就实现了 Tilcon嵌入式图形解决方案与风河原有产品阵容的整合。在收购Tilcon公司之后短短6个月内推出Wind River Tilcon Graphics Suite 5.7不仅是风河公司履行这个承诺的例证,而且持续巩固和拓展了风河公司的市场定位——风河是一家有能力满足全方位设备软件需求的嵌入式提供商”。

使用特权

评论回复
15
xn_liu123| | 2009-9-14 13:51 | 只看该作者
好帖子,不得不继续顶

使用特权

评论回复
16
ahappycow| | 2009-9-17 00:23 | 只看该作者
:)

使用特权

评论回复
17
zuoyi001| | 2010-1-22 12:19 | 只看该作者
:)备份研读!
重要关注

使用特权

评论回复
18
frank_888| | 2010-2-2 13:40 | 只看该作者
好贴,多学习学习。

使用特权

评论回复
19
arm86| | 2010-2-8 17:25 | 只看该作者
mark一下

使用特权

评论回复
20
279579685| | 2011-7-21 13:45 | 只看该作者
mark?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

3299

帖子

5

粉丝