在许多情况下需要优化嵌入式系统特性,这些特性包括系统时序、代码大小、RAM 使用和能耗。优化每个特性通常需要不同的方法和技术,但嵌入式开发人员可以遵循几个通用技巧来优化他们的嵌入式软件。

  技巧1 – 始终创建一个基线进行比较

  创建一个基线来比较优化结果是显而易见的。基线测量很重要,因为每个优化周期的回报都会递减。例如,第一次优化能源可能会导致 20% 的改进。第二个,10%,然后是 5%,以此类推。开发人员需要能够看到这一趋势,并量化他们在系统中看到的改进,以投入时间。

  技巧2 – 设置优化目标

  每一次优化都需要越来越多的时间来从系统中挤出最小的改进,团队需要仔细平衡他们的时间投入,并确定由此产生的改进是否值得花时间。在优化开始之前,团队应该设定一个目标水平,一旦达到就足以满足当前应用程序的需要,并表明优化过程已经完成。

  技巧3 – 使用正确的工具进行测量

  如果没有正确的测量工具,优化系统可能会非常困难。如果没有准确的方法来测量系统和微控制器的能量消耗,就无法进行能量优化。在许多情况下,团队无法将这两种不同的能量测量值分开,并在微控制器能量无法降低时尝试将其最小化。如果没有可以准确测量或允许嵌入式开发人员查看系统行为的工具,那么尝试优化系统是没有意义的。

  技巧4 – 使用优化工具

  嵌入式软件可以在许多领域进行优化,以减少代码大小或提高性能,在某些情况下,可以使用单独的或附加的工具链来执行优化。一个示例优化工具是 Somnium DRT 优化器,可与 GCC 一起使用以优化代码大小、能源使用和性能。有时可能不需要外部工具,而只是选择正确的工具链。

  技巧5 – 使用编译器属性和#pragma

  更改编译器,开发人员突然不得不返回并重新处理所有这些代码行。属性和#pragmas 通常是不可移植的,并且在更改编译器时可能导致软件错误。但是,在微调嵌入式软件时,开发人员通常别无选择。使用属性和#pragma 可以提高速度,选择性地将优化应用于单个函数等等。因此,出于这些原因,打算优化软件的开发人员应该熟悉它们,同时阅读用 C 编写可移植优化,这样他们就能明白自己是如何写出仍然可移植的优化。

  技巧6 – 不要犹豫去尝试

  优化系统没有一成不变的做法,嵌入式开发人员不应该感到受限于遵循任何技术。有时学习和优化系统的最佳方法是将实验放在一起,然后看看会发生什么。通过实验和记录结果,能够弄清楚什么有效,什么无效,什么是资源和时间的浪费。一个简单的例子是如何充分利用 printf。

  通过尝试不同的驱动程序模型,有一些方法可以显着提高开发人员在使用 printf 时获得的实时性能,这通常被认为比实际情况要好得多。

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

  在一些资源极度受限的应用程序中,有时开发人员只需要深入研究编译器生成的指令。选择三元运算符而不是 if/else 可能是正在执行的三个或四个额外指令之间的差异,这会导致应用程序崩溃。虽然 C 等语言是标准语言,但每个编译器优化和生成机器指令的方式略有不同,了解编译器在做什么的唯一真正方法是查看程序集。

  结论

  应用程序的优化需求将大不相同,一些小批量生产的应用程序可能根本不需要优化。在其他情况下,纳安的每个时钟周期都很重要,可能会花费大量时间来试图从系统中榨取每一滴性能或能量。虽然每个系统都不同,但这些技巧为嵌入式开发人员和团队提供了一个起点,可以让他们走上更高效的系统之路。

嵌入式开发:优化嵌入式软件的7个技巧相关推荐

  1. 嵌入式开发:嵌入式软件的未来—基于平台的开发

    在项目启动后不久,工程师们不得不再次编写微控制器驱动程序,试图集成实时操作系统 (RTOS) 和第三方组件,从而深入研究细节.这些重复的项目任务会消耗时间.精力并抑制产品创新.一个有趣的解决方案开始出 ...

  2. 优化嵌入式软件的几点技巧

    技巧1-总是创建基准用于比较 创建基准用于比较优化结果的必要性显而易见,令人惊讶的是开发团队常常在没有任何基准的情况下匆忙开展优化.基准测量很重要,因为每次优化得到的改进会越来越小.举例来说,第一遍能 ...

  3. 什么是嵌入式开发?嵌入式软件开发入门教程

    嵌入式系统发展到今天,对应于各种微处理器的硬件平台一般都是通用的.固定的.成熟的,这就大大减少了由硬件系统引入错误的机会.此外,由于嵌入式 操作系统屏蔽了底层硬件的复杂性,使得开发者通过操作系统提供的 ...

  4. 从事嵌入式开发需要掌握哪些知识?从事嵌入式软件开发的前景如何?

    什么是嵌入式? 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一.嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器.存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很 ...

  5. 嵌入式开发:变得更加敏捷的5个技巧

    ​ 很多嵌入式软件团队都对变得更加敏捷感兴趣,采用敏捷实践可以显着提高团队的敏捷程度.企业和嵌入式开发人员都希望能够更快地交付.在这篇文章中,我们将探讨五个提高敏捷性的技巧. 技巧1 - 放弃代码审查 ...

  6. 嵌入式开发:估算电池寿命的7个技巧

    在我们现代的移动社会中,对电子设备的最大抱怨之一是它们的电池没有预期的那么长,人类必须在某种程度上沉迷于我们始终保持连接和以一种或另一种形式传输数据的能力.移动设备使用的增加不仅导致芯片制造商被迫重新 ...

  7. 嵌入式开发:最大限度延长电池寿命的10个技巧

    移动计算和传感器设备到处涌现,不仅为工程师提供了大量数据,还提供了应用程序.这些要求通常规定了尺寸和重量的约束,从而限制了电池能够承载的容量.除了充电间隔时间之外,设备上的功能数量使得满足这些要求变得 ...

  8. JavaScript开发优化技巧

    JavaScript开发优化技巧 1.按字符串属性值对对象数组进行排序 可以通过不同的方式来完成. 1).使用Underscore _.sortBy(collection, [iteratees=[_ ...

  9. c语言改变cmd 字体大小_嵌入式开发中常见3个的C语言技巧

    原文:https://www.cnblogs.com/CrazyCatJack/p/6080266.html 1.指向函数的指针 指针不光能指向变量.字符串.数组,还能够指向函数.在C语言中允许将函数 ...

  10. 嵌入式开发之路(偏汽车电子嵌入式软件工程师学习路线图)

    文章目录 一.嵌入式开发 1.1前情提要 1.2 学习路线图 1.3 职业 二.嵌入式编程基础 2.1 编程语言 2.1.1 c语言 2.1.2 c++ 2.2 数据结构和算法 2.2.1 数据结构 ...

最新文章

  1. 这个赛道能超车几次?
  2. WPF模板(二)应用
  3. hive sqoop 分区导入_使用sqoop将hive分区表的数据导入到mysql的解决方案:shell脚本循环...
  4. fping的使用方法
  5. python处理滑块验证码_使用python实现滑动验证码
  6. DreamFactory - 第3章生成数据库支持的API
  7. H5新标签--语义化标签
  8. firefox如何载入json文件_Firefox在书签工具栏中推隐藏“其他书签”文件夹功能
  9. 学习《自己动手写网络爬虫》之记录2
  10. Vue 实现 Chrome 小恐龙游戏
  11. 项目管理(PM)简介
  12. 鸡嗉囊病预防的方法 鸡防治嗦囊炎病用什么药
  13. 给小学生科普计算机,科普知史识:计算机是我们的小助手(适用于小学生).ppt...
  14. WorkFlow一:WorkFlow基础配置
  15. CSS笔记(CSS禅意花园+CSS揭秘)
  16. Elasticsearch-Sql+Mybatis+SpringBoot集成
  17. 什么是函数?怎么了解函数?为什么需要函数呢?我来给你解答(上)
  18. 计算某月某日某时是一年里(设计典型年)的第几个小时的Python程序
  19. Python爬取、分析全球最美Top100女神榜单的数据
  20. php password argon2i_PHP: password_hash - Manual

热门文章

  1. 洛谷——P1160 队列安排
  2. 机器人资和迅_《机器人与智能系统》-工业机器人与智能机器人杂志-工业自动化领域时尚先锋传媒!...
  3. 现金红包、裂变红包、企业付款
  4. 如何构建稳的商期货cary合
  5. 计算机键盘有哪些作用,电脑上的键盘有哪些功能 你不知道的10大键盘功能介绍...
  6. MT管理器破解COC辅助
  7. php文字滚动特效,js文字横向滚动特效_javascript技巧
  8. 小凯的疑惑(Noip 提高组 2017 d1 1)+[USACO4.1]麦香牛块Beef McNuggets
  9. 我们比任何时候都更接近梦想
  10. ORA-01830: date format picture ends before converting entire input string