作者:IAR Systems
在MCU开发和运用中,工程师都需求进行MCU的才能测验,通用的做法是用Benchmark(基准)程序来测验。可是,在做基准测验时,编译器的优化才能也在测验成果中有较为显着的影响,同一套硬件渠道,选用不同的编译器和不同的优化选项,或许得出的成果相差较大。
为了最大程度开释MCU的功用,在基准测验中取得最理想的成果,往往需求工程师不仅对本身的硬件比较了解,更需求深化了解编译器的优化原理,并灵敏运用,才能在基准测验中发挥出MCU的悉数功用。IAR Systems作为全球闻名的嵌入式东西厂商,其编译器在优化才能上有共同的优势,MCU合作IAR的编译器往往能够得出较好的基准测验成果。
本文以已在MCU范畴内广泛运用的IAR Embedded Workbench开发东西套件为例,来共享MCU软件基准测验应该留意的项目和以下技巧,然后协助读者能够去生成业界最高效和最齐备的代码。运用以下项目和设置,工程师能够精准调整优化等级,最大极限地进行测验和进步所开发和运用代码的功用。
挑选代码尺度仍是履行速度
运用IAR Embedded Workbench等开发东西套件,工程师能够对整个工程规划或对单个文件设定优化等级和类型。在源代码中,乃至能够对单个函数运用 #pragma opTImize 指令来完结此操作。
优化的意图是削减代码尺度和进步履行速度。假如只能满意其间一个方针,编译器会依据用户指定的设置进行优先处理。因而,在实践的软件基准测验中,工程师能够测验各种设置来取得最佳作用。举个比如,因为函数内联更侧重于履行速度的优化,相较于选用通用代码尺度优化设置,选用函数内联与通用代码履行速度优化设置将取得更小的程序代码。
挑选小型内存模型
为了能够充沛地发挥MCU器材的功用和削减运用中的问题,软件开发有必要充沛考虑MCU器材的内存等资源约束,因而需求为方针器材和项目挑选尽或许小的内存模型。小型内存模型的长处包含:
·更小尺度的地址
·更小尺度的指令
·更小尺度的指针
·功率更高
·代码更少
比如IAR Embedded Workbench这样的老练的开发东西套件也集成了相关评价功用,能够对内存模型进行多方面评价,然后协助工程师去测验软件的规划和优化规划。
挑选适宜的运行时库
默许情况下,运行时库是以最高代码尺度优化等级进行编译的。假如您想要对速度进行优化,请考虑从头编译生成这些库。能够经过装备选项来设置某些规范库功用(如言语环境、文件描述符和多字节)最合适的等级。
依据详细需求,在库选项中挑选 scanf 输入和 printf 的格局。默许选项并非最小格局。
运用正确的数据类型
数据类型与代码尺度或许履行速度休戚相关,因而需求运用开发东西来对数据类型进行调查和剖析,以便找到合适硬件资源的类型。在IAR Embedded Workbench开发东西套件中,开发人员能够从以下几个方面着手进行测验和优化:
·挑选最合适您运用程序的的数据类型尺度
·尽量运用无符号字符型,这样就能履行位操作而不是算术操作
查看方针特定选项
查看能进步功用的方针特定选项,这在日常的MCU规划和运用开发中往往需求工程师具有适当的经历,可是经过运用比如IAR Embedded Workbench这类老练的开发东西套件则能够快速而完善地完结必要的功用查看:
·高效的寻址形式——可完结高效的内存拜访
·运用特定的寄存器来处理常量/变量——代码在寄存器上的操作功率比在内存上更高
·偶对齐函数进口——偶对齐指令能够进步速度
·字节对齐目标——更小的存储空间需求,但或许生成更大的代码尺度
运用基准测验相关代码
一切的MCU开发东西都应该供给基准测验相关代码,可是老练的通用开发东西的代码库都是这些供给商在相关范畴经历的浓缩,因而更为全面和高效。其间的重要经历包含:
·嵌入式体系的基准测验应该针对嵌入式程序的特点来规划。
·实践的运用程序一般也适用于基准测验,但需求保证代码的可履行性。链接器会删去未引证的代码和变量,但并非一切的链接器都具有这种功用。
·保证测验代码不受测验东西(测验相关函数)的影响。以下示例其实是对 printf() (测验相关函数)进行了基准测验。
·比较链接后生成的代码。一款编译器或许会选用内联代码,而另一款编译器或许会调用库。
·充沛了解用于履行基准测验的运用代码!
总结
经过运用比如IAR Embedded Workbench这类老练的开发东西套件,发挥其在几十年全球性运用中行会聚和迭代出的常识,MCU规划和运用开发工程师能够快速完结上述这些必要的功用测验,一起也能够进一步有针对性地发挥MCU的功用,然后完结方针器材最优化的、软硬件合一的功用。