锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

优化嵌入式软件的通用技巧

时间:2021-11-25 23:28:00

以前曾讨论过在许多情况下需求优化的嵌入式体系的关头特性,包孕体系时序、代码巨细、RAM使用率和能耗。尽管优化每一个特性平日请求分歧的要领和手艺,但开辟职员在优化嵌入式软件时能够遵照几个通用技术。

技术1—老是建立基准用于比拟

建立基准用于比拟优化效果的必要性显而易见,使人诧异的是开辟团队常常在没有任何基准的情况下急忙开展优化。基准丈量很首要,由于每次优化失掉的改良会越来越小。举例来讲,第一遍能耗优化可能有20%的改良,第二次有10%,第三次5%,以此类推。开辟职员应懂得这类趋向,并将他们在体系中取得的改良量化为输出次数的函数。

“”

技术2—设定优化目的

每一次优化都比前一次需求更多的时候才能从体系中取得极少量的改良。开辟团队需求子细均衡他们的时候投入,并依据改良效果判别是不是值得花这么多时候。一味闷头办事很轻易陷溺,大概花了数周时候才认识到本人在优化一个再也不需求优化的体系。因此在优化开端以前,开辟团队应设定一个目标值,达到这个目的,就暗示优化效果对以后使用来讲足够好,优化进程曾经实现。

技术3—应用精确的丈量对象

假如没有适宜的丈量对象,优化一个体系是很艰苦的。举例来讲,假如不应用一种正确的方法来丈量体系和微控制器的能耗,便很难实现能耗的优化。开辟职员常常无奈区别这两种分歧的能量丈量,他们试图缩小实际上无奈再缩小的微控制器能耗。

对功能优化感兴趣的开辟职员能够看一看我在“亲身下手:Segger体系检察对象”中先容的Segger体系检察对象,这款对象关于懂得哪些 函数正在独有CPU异常实用。假如没有可以或许正确丈量或可供开辟职员检察体系行动的对象,那末在优化体系时便抓不住重点。

技术4—应用优化对象

为了减小代码巨细或进步功能,嵌入式软件的许多方面都可以优化。一些情况下能够应用自力的或隶属的对象链。Somnium DRT优化器便是一种很好的优化对象,能够与GCC一路用来优化代码巨细、能量使用率和功能。

无非有时候内部对象大概不是必须的,只需抉择精确的对象链就足够了。我比来写了一篇题为《开源与商用编译器》的文章,说了然如许一个究竟:在Coremark测试中,关于沟通的微控制器和沟通的测试前提,商用编译器的得分老是高于GCC等开源编译器。

“”

技术5—应用编译器属性和#pragma指令

我普通很不爱好用#pragma指令或编译器属性。属性和#pragma指令一般为弗成移植的,转变编译器可能会造成软件缺点。然而,在调解嵌入式软件时,开辟职员平日没有抉择。应用属性和#pragma指令能够进步速率,并能依据实践情形有抉择地优化某个性能。基于这些来由,想要优化软件的开辟职员应当熟习属性的应用,并且要浏览《用C言语编写可移植的优化步伐》,如许他们才晓得若何编写出可移植的最优步伐,而且没有负面影响。

技术6—多做试验

在优化体系方面没有一成稳定的要领,开辟职员不应该局限于任何一种非凡的手艺。有时候进修和优化体系的最佳要领是测验考试种种试验并阐发其效果。

当我初次为了低功耗而优化体系时,做了不少试验,也涌现了一些谬误。经由过程试验进程和所记载的效果,我就可以或许懂得甚么实用,甚么没用,以及做哪些事是在浪掷资本和时候。若何最佳地应用printf便是一个简略的例子: 经由过程测验考试分歧的驱动模子能够发明,不少要领都可以显著进步开辟职员应用printf时取得的及时功能,而人们构想的效果通常远好过实在效果。

“”

技术7—深刻研讨编译器发生的指令

在资本分外无限的使用中,开辟职员偶然只要挽起袖子深刻懂得编译器发生的指令。在将要施行的三四个狭义指令间抉择三元操作符而不是if/else是有差别的,这很可能会致使使用步伐溃逃。

尽管像C如许的言语是规范的,但每种编译器在优化和发生机械指令时有少量差别。仅有理想的要领是查抄汇编言语,懂得编译器在做甚么。

总结

分歧使用步伐的优化需要各不沟通。小批量发生的使用步伐或许底子不需要优化;而关于此外一些使用步伐,每一个时钟周期或每毫微安电流都很首要,则大概需求开辟职员花少量时候从体系中榨出最初一点功能或能量。尽管每种体系都是分歧的,但开辟职员若熟记这些技术,便为完成更高效的体系迈出了可喜的第一步。 

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章