本帖最后由 zz092526 于 2013-4-6 10:20 编辑
欲练神功,挥刀自宫
话说东方不败得到《葵花宝典》以后,迫不及待地翻开第一页,面对“欲练神功,引刀自宫”八个大字倒吸了一口凉气。苦苦思索了七天七夜之后终于痛下决心,喀嚓一声,引刀自宫。强忍著身体的剧痛,怀著凝重的心情,东方不败缓缓翻开了第二页,映入眼帘的又是八个大字:“若不自宫,也能成功”,东方不败当即晕死过去……好不容易,东方不败终于醒来了,他想反正都自宫了,还是赶紧练功吧。於是他又缓缓的翻开第三页,又是八个大字:“即使自宫,未必成功”。当场东方不败又再昏死过去。
前言 何老师 Q1924786560
过了几天,东方不败再度醒来,他愤愤不平的继续往下翻,他发现整本《葵花宝典》都在讨论成功与自宫的关系。这时东方不败已经接近崩溃边缘,在翻到倒数第二页时,他终于看到了结论:“若要成功,不要自宫”。这时东方不败又快昏过去了,但他心里想:不行,我要把最后一页看完,那是我最后的希望,于是他还是缓缓翻开最后后页,定眼一看:“如已自宫,就快进宫”。旁边还有几行小字:以上纯属开玩笑,如想练得神功,下辈子好好用功! 这时东方不败已经撑不住了,当下吐血而亡,一代枭雄就此殒落。
在我们这个时代,有太多的人想走捷径,想练“葵花宝典”,结果却落得一场空。盖世神功我们要练,不过要踏踏实实地练,不能走自宫化为"人妖"的道路。嵌入式内功我们必须练,而且要踏踏实实一招一势地练。
现在大部分处理器生产商在销售处理器的同时,还会提供开发环境IDE比如
ti的CCS和AD的Visual Dsp++。另外你还可以从这些公司或其它专门开发DEMO板的公司购买
开发板。这些DEMO一般会提供比较丰富的Demo程序,比如音视频捕捉及显示、I2C实例、DMA实例、CACHE实例等。这些DEMO程序基本上由应用处理器生产商提供的底层驱动程序库(driver lib)经二次开发出来的。可见,对于一般的嵌入式底层软件开发人员来说,基本就不用写什么真正意义上的驱动程序,(除非你是为处理器生产商写底层驱动的,毕竟这种大牛不多,也不屑于我的文章),只要参照DEMO程序或使用驱动程序接口开发适合自己项目的FIRMWARE就可以了。这种开发已经演变成驱动应用而不是驱动开发,其难度相比从零开始的驱动开发已经大大降低。我们国内很大部分“驱动开发者”都在从事这样的工作!不过也确实没办法,如果处理器生产商不提供已经屏蔽硬件特性并降低底层软件开发难度的驱动程序库,估计许多的“驱动开发者”即使磕破头皮绞尽脑汁也未必能搞定那些底层驱动。可见,要搞真正的驱动开发,还是要到大公司去混!
一般来说,从事消费类或
通信类产品研发的底层软件开发的人员,如果不熟练掌握DMA、cache、PCI、代码优化(包括编译器优化)等技术,那么他充其量还只是停留在应用软件或简单系统开发的层面,就好比搞VC编程的还没很好掌握MFC一样,虽然进入了应用软件开发的殿坛,但还没有把握这个领域的关键技术。这几个东西在对嵌入式底层软件软件开发的人来说至关重要,可以说是高手和普通者的分水岭。现在,一些高端的流媒体产品如
手机研发、游戏设备开发、IPTV、数字视频录像机(DVR)、数字视频广播(DVB)、机顶盒、视频会议系统、网络监控摄像头以及可视电话,为了能够处理大量的音视频输入输出数据流,往往采用单一MPU(比如ARM和Motorola的PPC/Coldfire/68K)、单一DSP(专用媒体处理器TI C64x/DM642、AD Blackfin 5xx、Equator的BSP15以及Philips TriMedia)或MPU+DSP组合的单核多芯或单芯多核的处理结构(TI OMAP/DaVinci和AD BF561)作为核心处理模块(一般的MCU主要应用于控制目的,不具备大批量数据处理的能力,所以比较少被应用于这些产品)。另外,这些处理器为了能进一步提升数据处理能力往往都会配备DMA、CACHE、PCI等外设或接口(见下图,DMA+CACHE+PCI的协作极大地提高了处理器与处理器之间以及处理器与外设的交互能力)。由此可见DMA、CACHE、PCI对于从事消费类或通信类研发的底层软件开发的重要性可想而知(搞定了这些复杂有难度的外设,其它的也不在话下了:))。
*DMA:它是个很好“奴才”。"主子"CPU让它干什么它就干什么,任劳任怨。那些搬移大量外围设备数据的“体力活”它统统包下,干完之后马上中断告诉"主子",而且两者在同时使用数据总线时,卑微的“奴才”会让着"主子"。这样的好“奴才”谁会不要,谁会不喜欢呢?(DMA是很基本的东西,后面介绍的cache和PCI控制器也都会用到)。
*Cache:它是“加速器”。在目前的IT行业,外围内存在访问速率上与处理器严重脱节一直是不可回避的“瓶颈”问题。cache的引入无疑极大地缓解了这个问题。它使得处理器访问cache就如同访问外部内存一样快速,极大地提高了CPU处理数据的效率,所以被广泛地应用于流媒体设备中。
*PCI:当在一块板子上有多块处理器时,它们之间大量的数据交互就是可能存在问题,比如MPU从网络接收的大块连续数据发送给DSP处理时,就需要有足够承载能力及带宽的总线。PCI总线一般33M最大66M带宽能力足以应付决大部分的应用。PCI给处理器之间架上了桥梁,使得MPU+DSP的应用设计成为现实。
*Optimization:选择合适的处理器并设计能够充分发挥外设性能的板子是项目负责人和硬件人员干的事情,而软件开发人员要干的就是编写能够充分发挥硬件功能的高效代码。代码优化方法就是其中用于提高系统性能和代码效率的有效技术,是任何嵌入式开发人员都要努力掌握的技能。
0