0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

优化 DSP 应用程序的工具支持

刘刚 来源:q153605268 作者:h1654155957.9185 2022-07-21 11:34 次阅读

我之前写过关于编写代码和设计数据结构以优化嵌入式系统中的代码大小、性能和功率时可以采取的步骤。这种压缩软件以适应的需求在早期计算机上很常见,但现在在具有千兆字节内存的普通 64 位系统上几乎被遗忘了。嵌入式系统将我们带回到未来,需要恢复这些技能以平衡代码功能与高度受限的内存容量。

pYYBAGLXUUuANssOAABtxomcvSM239.jpg


资料来源:CEVA

很多可能的优化将取决于您对代码的仔细设计和调整。但是构建工具——尤其是编译器和链接器——也可以提供帮助。在本博客中,我将讨论可用于 CEVA 工具箱中这些步骤的选项。在所有情况下,我都将专注于优化代码大小,因为这将是您的主要约束。

编译器选项

当您设计和调试代码时,您几乎肯定会使用-g选项运行,要求生成调试信息。使用此选项运行可防止编译器执行任何可能以使调试复杂化的方式扭曲代码的优化。当您认真考虑优化代码大小时,您将不得不删除该选项。

下一个考虑因素是编译器如何选择优化。默认情况下,它将通过多种方法优化性能。一种方法将通过为循环的每次迭代复制代码来展开(有限大小)for循环。这避免了在每次迭代时设置和测试循环索引的开销,但显然会消耗更多内存。使用-Oz选项将阻止展开,更喜欢较小且稍慢的实现。

编译器可以用来优化性能的另一个选项是内联某些函数(特别是小函数)。这可以消除将参数推入和弹出堆栈以及跳入和跳出被调用函数的开销。但是,如果多次调用该函数,它将再次增加代码大小。使用-INLINE=no选项来禁止这种自动内联。

另一种优化在传统平台上似乎不值得付出努力,但可以对 DSP 上的代码大小产生重要影响。这是为了禁用(视情况而定)编译器对指针别名的保护。这种保护的目的是确保在选择在VLIW机器上并平行一组指令(例如DSP)时,编译器将确保这些说明中的任何指针参考在两个或更多的情况下都无法进入比赛条件其中指向同一位数据。这会限制某些指令可以并行运行的程度。您可以使用选项-alias=restrict强制解释不会发生此类情况,这应该允许推断出更多的并行性。当然,您应该仔细检查并完全回归,以确保这种解释是安全的。

链接器

链接器还可以执行与大小相关的优化。其中之一是删除未引用的函数。这需要一些小心。一些函数可以通过数据指针甚至直接跳转到硬编码地址来调用。而中断服务函数通常通过传统的调用协议来访问。因此这个选项必须考虑多种可能性。它将被自动调用,并且可以使用-keepUnrefFuncs选项禁用。

另一个链接器优化可以进一步减小代码的大小,其中某些符号未被汇编器解析,以便在链接时进行寻址。由于它们开始未解析,因此汇编器必须假定最大可能的大小来寻址目标处理器,当最终在链接器中解析时,这实际上可能是浪费的。如果不采取特殊措施,许多此类符号可能会解析为非常小的地址,但仍会占用最大可能的地址字长。缩小这些位置可以显着缩小总代码大小。这是另一个微妙的任务。在缩小任何给定地址时,必须调整代码中任何位置对该符号后面位置的直接引用。还必须考虑数据对齐要求(有时是特定于处理器的)。每次减少都必须考虑最佳最小编码,不仅对节省空间的影响,而且对其余代码的影响。幸运的是,这些优化是默认执行的。

结合最佳编码实践,谨慎使用这些编译器和链接器选项可以帮助进一步缩小代码和数据大小,以最具成本效益的方式适应您的嵌入式系统。这反过来又增加了您作为经验丰富的嵌入式系统程序员的价值,这始终是一个理想的目标!

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    553

    文章

    7998

    浏览量

    348825
收藏 人收藏

    评论

    相关推荐

    TAS2521应用程序参考指南

    电子发烧友网站提供《TAS2521应用程序参考指南.pdf》资料免费下载
    发表于 12-10 13:49 0次下载
    TAS2521<b class='flag-5'>应用程序</b>参考指南

    android手机上emulate应用程序的方法

    在Android手机上模拟(emulate)应用程序的方法通常涉及到使用Android模拟器(Emulator)或类似的工具来模拟Android环境,以便在没有实际物理设备的情况下运行和测试应用程序
    的头像 发表于 12-05 15:33 252次阅读

    AWTK-WEB 快速入门(2) - JS 应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用JS语言开发AWTK-WEB应用程序。用AWTKDesigner新建一个应用程序先安装AWTKDesigner
    的头像 发表于 12-05 01:04 99次阅读
    AWTK-WEB 快速入门(2) - JS <b class='flag-5'>应用程序</b>

    AWTK-WEB 快速入门(1) - C 语言应用程序

    导读AWTK可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用Web界面与设备进行交互,本文介绍一下如何使用C语言开发AWTK-WEB应用程序。用AWTKDesigner新建一个应用程序
    的头像 发表于 11-27 11:46 196次阅读
    AWTK-WEB 快速入门(1) - C 语言<b class='flag-5'>应用程序</b>

    TPS659xx应用程序自定义工具

    电子发烧友网站提供《TPS659xx应用程序自定义工具.pdf》资料免费下载
    发表于 11-06 10:02 0次下载
    TPS659xx<b class='flag-5'>应用程序</b>自定义<b class='flag-5'>工具</b>

    Adobe将推出全新免费应用程序

    Adobe近日宣布了一项令人振奋的新举措——从明年起,将推出一款免费的基于网络的应用程序。这款应用的主要功能是为图像、视频和音频创作者提供便捷的“内容凭证”管理工具
    的头像 发表于 10-10 16:54 400次阅读

    DSP/BIOS 5应用程序迁移到SYS/BIOS 6

    电子发烧友网站提供《将DSP/BIOS 5应用程序迁移到SYS/BIOS 6.pdf》资料免费下载
    发表于 09-27 10:54 0次下载
    将<b class='flag-5'>DSP</b>/BIOS 5<b class='flag-5'>应用程序</b>迁移到SYS/BIOS 6

    CYW20829应用程序支持GFPS吗?

    CYW20829 应用程序支持 GFPS 吗?
    发表于 06-03 06:56

    无法在Modustoolbox 3.2工具类别中找到客户端控制应用程序,如何解决?

    我最近从 2.4 版升级到了 MTB 3.2 版 我为 343026 BSP 添加了一些示例 但我无法在工具类别中找到客户端控制应用程序。 如何才能解决问题?
    发表于 05-22 07:50

    Anthropic推出iPhone应用程序和业务层

    Anthropic 推出 iPhone 应用程序和业务层,支持使用Claude 3 Opus、Sonnet 和 Haiku 模型
    的头像 发表于 05-07 10:22 441次阅读

    优化嵌入式DSP软件的编译器

    确定哪个索引或一组索引对于优化很重要取决于应用程序开发人员的目标。例如,性能优化意味着开发人员可以使用速度较慢或成本较低的 DSP 来完成相同数量的工作。
    发表于 05-03 09:45 240次阅读
    <b class='flag-5'>优化</b>嵌入式<b class='flag-5'>DSP</b>软件的编译器

    应用程序中的服务器错误怎么解决?

    在使用应用程序时,可能会遇到服务器错误的问题。这种错误通常会导致应用程序无法正常运行 ,给用户带来不便。下面将介绍应用程序中的服务器错误及其解决方法,帮助您快速解决这一问题。
    的头像 发表于 03-12 15:13 6209次阅读

    LTE MQTT通信应用程序说明

    电子发烧友网站提供《LTE MQTT通信应用程序说明.pdf》资料免费下载
    发表于 02-21 10:47 0次下载
    LTE MQTT通信<b class='flag-5'>应用程序</b>说明

    为什么无法在modustoolbox™工具箱中打开新应用程序

    我无法在modustoolbox™工具箱中打开新应用程序。 如何解决这个问题?
    发表于 01-31 07:32

    解决方案工具包QE显示[RX,RA]V3.2.0:用于显示应用程序的开发辅助工具

    电子发烧友网站提供《解决方案工具包QE显示[RX,RA]V3.2.0:用于显示应用程序的开发辅助工具.pdf》资料免费下载
    发表于 01-03 09:59 0次下载
    解决方案<b class='flag-5'>工具</b>包QE显示[RX,RA]V3.2.0:用于显示<b class='flag-5'>应用程序</b>的开发辅助<b class='flag-5'>工具</b>