嵌入式应用程序性能优化的七个技巧

金融理财 阅读(1688)

来源:搜狐郎瑞志科

由于各种新型微处理器的出现和应用,嵌入式系统在后PC时代取得了前所未有的发展。随着时间的推移和技术的进步,在工业控制和新兴手持应用领域,用户体验已成为产品成功的关键因素之一。越来越多的产品需要良好的用户界面,互联的功能和强大的数据处理能力,这对嵌入式处理器硬件,软件,教学等提出了新的要求。

嵌入式系统的应用形式多种多样,需要我们根据不同应用的需求进行优化。以下是嵌入式软件优化的七种技术的简要介绍。

d4c8be649fd34afca7c2869178baca94

提示1 - 始终创建比较基线

创建基准以比较优化结果的需求是显而易见的,并且令人惊讶的是,开发团队经常急于优化而没有任何基准。基准测试很重要,因为每次优化所做的改进越来越小。例如,第一次通过能量优化可以有20%的改善,第二次有10%,第三次有5%,依此类推。开发人员应该了解这一趋势,并根据输入数量量化他们在系统中获得的改进。

技巧2 - 设定优化目标

每次优化都需要比前一次更多的时间才能从系统中获得少量改进。开发团队需要仔细平衡他们的时间承诺,并根据改进的结果判断是否值得花费这么多时间。很容易沉迷于无聊的任务,可能需要数周才能意识到您正在优化不再需要优化的系统。因此,在优化开始之前,开发团队应设置目标值。为了实现这一目标,优化结果对于当前应用程序来说足够好,并且优化过程已经完成。

技巧3 - 使用正确的测量工具

没有正确的测量工具,很难优化系统。例如,如果您不使用准确的方法来测量系统和微控制器的能耗,则很难优化能耗。开发人员通常无法区分这两种不同的能量测量,并且他们试图降低实际上无法减少的微控制器的功耗。

对性能优化感兴趣的开发人员可以查看我在“Hands:Segger System Viewer”中介绍的Segger系统查看工具,这对于了解哪些函数独占CPU很有用。如果您没有准确测量的工具或开发人员无法查看系统行为,那么您将无法专注于优化系统。

技巧4 - 使用优化工具

为了减少代码大小或提高性能,可以优化嵌入式软件的许多方面。在某些情况下,可以使用单独的或附加的工具链。 Somnium DRT优化器是一款出色的优化工具,可与GCC配合使用,以优化代码大小,能源使用和性能。

但有时候外部工具可能没有必要,只要你选择合适的工具链就足够了。我最近写了一篇名为《开源与商用编译器》的文章,说明了在Coremark测试中,对于相同的微控制器和相同的测试条件,商业编译器的得分总是高于开源编译,如GCC。设备。

技巧5 - 使用编译器属性和#pragma指令

我通常不喜欢使用#pragma指令或编译器属性。属性和#pragma指令通常不可移植,更改编译器可能会导致软件错误。但是,在调整嵌入式软件时,开发人员通常别无选择。使用属性和#pragma指令来提高速度并根据实际情况有选择地优化特征。出于这些原因,想要优化其软件的开发人员应该熟悉属性的使用,并阅读《用C语言编写可移植的优化程序》,以便他们知道如何编写便携式最佳程序而不会产生负面影响。

提示6 - 做更多实验

优化系统没有一刀切的方法,开发人员不应局限于任何特定技术。有时,学习和优化系统的最佳方法是尝试各种实验并分析结果。

当我第一次优化系统以实现低功耗时,我做了很多实验和一些错误。通过实验过程和记录结果,我可以理解什么是有用的,什么是无用的,什么是浪费资源和时间。如何充分利用printf就是一个简单的例子:通过尝试不同的驱动程序模型,您可以看到许多方法可以显着提高开发人员在使用printf时获得的实时性能,并且人们认为结果通常是比实际结果好得多。

技巧7 - 深入了解编译器生成的指令

在资源特别有限的应用程序中,开发人员有时需要卷起袖子来深入了解编译器生成的指令。在要执行的三个通用指令之间选择三元运算符而不是if/else之间存在差异,这可能导致应用程序崩溃。

虽然像C这样的语言是标准的,但每个编译器在优化和生成机器指令方面略有不同。唯一可行的方法是检查汇编语言并查看编译器正在执行的操作。

不同应用的优化需求各不相同。小批量生成的应用程序可能根本不需要优化;对于其他应用,每个时钟周期或每纳安级电流都很重要,开发人员可能需要花费大量时间从系统或能量中提取最后一点性能。虽然每个系统都不同,但考虑到这些技能的开发人员已经迈出了迎接更高效系统的第一步。

嵌入式解决方案服务提供商Lang Rui Zhi拥有广泛的嵌入式系统设计知识,从模拟到数字,从低频到高频,从小信号到大功率,以及复杂的时序逻辑。设计和PCB设计,还要考虑合理配置硬件和软件资源,不仅要有广泛而扎实的理论基础,还需要丰富的实践经验。只有通过大量和小型的各种应用的反复练习演练,了解新技术,新设备,使用各种处理器和模拟/数字设备,才能逐渐积累,聚集到塔中,快速提供新的应用系统,合理的计划和设计。