基于ARM平台的高效嵌入式软件开发--前言

                                                         前言

                                                       

扎在嵌入式多媒体领域6年时间,方方面面的工作都涉猎过。一直有把过去所学总结成文的想法。侯捷老师说过发表是最好的记忆,我觉得很对。总结与思考才能将技术内化为自己的思想。嵌入式平台与PC有很多不一样的地方,首先由于硬件限制,软件优化将是个主要工作,其次由于这个领域群雄争霸,软件移植也是个大问题。我想就软件优化和移植,将过去的一些经验总结出来。优化为主,移植为辅。

优化是一门系统的工艺。系统是指好的优化是建立在对整个的软硬件系统的深刻理解上。工艺是指优化不仅是技术更是艺术。优化有很多技术层面的技巧,这些技巧很容易copy。但是如果没有更深入的思维层面的思考积累,这些技巧就会流于表面,难有举一反三的能力。再者很多技巧容易随着硬件的发展而消失,所以只有内化沉淀为自己的思想才会与时俱进。当这种思想升华到方法论的层面。优化就不会受限于软硬件系统本身,甚至可以放大到软件之外的世界中。我对优化的理解是:为达成一定的目的,最有效的组织现有资源,沿着最合理的流程,充分发挥各项资源的潜力。这是方法论层面的定义。如果窄化这个定义到软件优化就是:为达成一定的性能指标,设计最合理的算法,充分应用各类软硬件资源的性能特性。

关于优化的书籍市面上也有一些,有的是从整个软硬件系统的角度进行论述,像《计算机体系结构:程序员的视角》,《Write Great Code》和《High performance computing》;有的是着重某个技术,像《内存优化》和《inner loop》;有的是聚焦特定的硬件平台,像《ARM System Developer’s Guide》。此外还有很多的优化技巧散布于网络上。但是我总是感觉学习起来很辛苦,大部头的书很难啃,纯技巧文章又不够系统。缺一本什么样的书呢?缺的是Scott Mayer的《Effective c++》风格的书。我特别喜欢Herb Sutter的《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》,这本“Effective”风格的编程指南非常易读,既有短小精悍的示例,又有鞭辟入里的讨论总结,还有供读者继续深入学习的文献引用。本书也袭用Herb Sutter大师的结构。

至于移植,主要是软件架构设计的问题。基本的思路还是软件界的永恒真理:增加一个间接层,用合理的抽象来容纳不同平台的变化。这个抽象层不能太厚,否则会带来不必要的性能损失。我也会用到一些设计模式,读者可以看到,这些模式的使用是必要和自然的,但并不完美,仔细推敲也许还有其它好的做法。我的想法是:工程师首先是解决问题的,完美的设计是个艺术问题,不要刻意追求。

《闯关东》里有句话说,”不知道金银不换,一知道全是扯淡。技术的精要部分就只有一层窗户纸,捅破了就明白了。我希望我少讲废话,把精要的部分讲清楚。不过在下所学尚浅,加之笔力有限,这里也只能抛砖引玉,希望觅得高手现身指教。献丑献丑,多谢多谢。

关于本书     

本书适合所有对软件开发,尤其是对性能要求较高的嵌入式软件开发的读者。无论是系统架构师,高性能模块(如编解码器)程序员,或者是普通模块程序员都可以从本书中找到

感兴趣的内容。

本书分成5个主题。分别是基础理论,架构级优化,模块级优化,高级语言级优化,ARM平台汇编语言优化。每个主题由若干个条款(item)组成。每个条款的布局如下。

1,  示例(如果有)

2,  要点:条款的精要描述

3,  讨论:条款的具体描述

4,  交叉引用(如果有):与其他条款的关系

5,  参考资料(如果有)

 

 

你可能感兴趣的:(基于ARM平台的高效嵌入式软件开发--前言)