KEIL里的优化选项解读

这篇具有很好参考价值的文章主要介绍了KEIL里的优化选项解读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、优化等级

优化大家都知道,-O0,-O1,-O2,-O3,等级越高优化程度越高,代码的执行效率也就越高。但是开启优化存在几个问题:

1、低优化等级代码能跑,开启高优化等级后代码就跑不起来了
2、高优化等级代码能跑,开启低优化等级后代码就跑不起来了
3、Optimize for time的3种状态是什么意思?

问题1和2的解决思路看看硬汉大神的帖子
我这里也贴一下截图
KEIL里的优化选项解读
除了硬汉说的,我再补充点。

按照硬汉的思路我从-O0 ->-O3对GD32F450的工程进行实验,发现ADC在-O0的时候可以正常运行,一但超过-O1,就进不了DMA中断了。所以可以排除硬件配置有问题。

然后就是无头苍蝇似的找问题,最后想起来对比下他们的寄存器

通过对比发现TIMER的寄存器都一样,ADC忘了看了,DMA1CH0的寄存器两个有几处不同
KEIL里的优化选项解读
其中最大的不同就是CH0M0ADDR,也就是存放ADC转换的数组ADC_ConvertedValue的地址不同了
KEIL里的优化选项解读
而0x10000000是TCMSRAM的区域。正好前段时间因为LCD优化请教过别人,TCMSRAM是无法配置DMA的。从下图可以看出来,TCMSRAM只有DBUS总线,并没有DMA的总线连接。
KEIL里的优化选项解读

把用到DMA搬运的文件都手动定义到普通SRAM里,问题迎刃而解,即使开启-O3程序也能跑了(o)/!
KEIL里的优化选项解读

第3个问题还是在群里问大神才知道。
KEIL里的优化选项解读

二、One ELF Section per Function

这个选项默认情况下应该是打开的。我在进行优化等级测试的时候,不知道什么时候把这个选项关掉了,导致代码死活跑不起来了。
然后对比.uvprojx文件发现这个地方有差异,改回来就好了。
作用就是 把程序中未调用的函数给优化掉,不参与编译文章来源地址https://www.toymoban.com/news/detail-404650.html

到了这里,关于KEIL里的优化选项解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Anaconda新建环境后,无法在Jupyte页面里的Notebook中看到python选项(吐。。。)

    关于按照步骤完成Anaconda安装,并且在其中搭建好了属于自己的环境之后,无法在Jupyter Notebook页面中的【New】查看到\\\"Python 3\\\"选项的问题。(根据每个系统安装版本不同,显示名称会有所差异)。 ———————————————————————————————————

    2024年04月15日
    浏览(45)
  • 网络安全等级保护安全设计技术要求示例解读

    安全服务体系建设主体内容_luozhonghua2000的博客-CSDN博客  在安全服务体系建设涉及到落地技术要求,这篇我们解读需要哪些具体技术要求?又能得到什么工作启发呢 网络安全等级保护安全设计技术要求主要包括 7个层次: 1、管理层:    应以安全策略为基础,明确网络负责人的

    2024年02月03日
    浏览(52)
  • 一文解读ISO26262安全标准:如何通过计算ASIL安全等级?

    危害分析和风险评估,简称HaRa,该工作通常由整车厂商进行。 本文介绍如何进行HaRa分析,并给出ASIL的过程。 那么如何进行危害分析和风险评估? (1)风险R的相关因素 先了解这几个概念:严重度(S)、暴露概率(E)、可控性(C)。如果将风险(R)描述为一个函数(F)

    2024年03月22日
    浏览(55)
  • 全国青少年软件编程等级考试Python标准解读(1_6级)

    考核性质: 全国青少年软件编程等级考试标准(Python语言)由中国电子学会科普培训与应用推广中心和北京大学信息科学技术学院共同制定。由全国青少年电子信息科普创新联盟标准工作组开发,由中国电子学会普及工作委员会审核通过,适用于由中国电子学会举办的全国青

    2024年02月05日
    浏览(82)
  • 网络安全从业者必看!注册网络安全等级测评工程师考证解读

    《中华人民共和国网络安全法》第二十一条规定国家实行网络安全等级保护制度。网络运营者应当按照网络安全等级保护制度的要求,保障网络免受干扰、破坏或者未经授权的访问,防止网络数据泄露或者被窃取 、 篡改。《网络安全法》等多项法律法规要求,网络运营者应

    2024年02月06日
    浏览(56)
  • 告诉你如何从keil工程知道使用了多少RAM和ROM空间

    我们常常在使用一款芯片的时候往往都会考虑芯片的RAM和ROM大小,因为这觉得了我们的很多功能,虽然可以采用外置的FLASH以及RAM芯片来扩展,但是无论使用了外置还是内置的空间,我们都需要去了解我们工程中使用了多少的RAM空间以及多少ROM空间。 今天我们就来分享一下

    2024年02月14日
    浏览(34)
  • 天天用defineEmits宏函数,竟然不知道编译后是vue2的选项式API?

    我们每天都在使用 defineEmits 宏函数,但是你知道 defineEmits 宏函数经过编译后其实就是vue2的选项式API吗?通过回答下面两个问题,我将逐步为你揭秘 defineEmits 宏函数的神秘面纱。为什么 Vue 的 defineEmits 宏函数不需要 import 导入就可用?为什么 defineEmits 的返回值等同于 $emit  方

    2024年03月19日
    浏览(40)
  • pod的requests、limits解读、LimitRange资源配额、Qos服务质量等级、资源配额管理 Resource Quotas

    环境: k8s-v1.22.17 docker-20.10.9 centos-7.9 CPU、GPU、Memory等都是计算资源,所谓计算资源,就是可计量的、能被申请的、能被分配使用的资源。 CPU在容器技术中属于可压缩资源,因此,pod对CPU的使用超过其cpu.limit限制一般不会导致容器被系统\\\"杀死\\\",而Memory属于不可压缩资源,当容

    2023年04月27日
    浏览(37)
  • spring项目里的大事务优化

    声明式事务只需要加在方法头加@Transactional注解即可开启事务,但是还是不太灵活,意味着整个方法所进行对数据库操作都要加进事务,当然一次查询也要进入事务,这并不是我们想要的,我们在update、insert操作上进行事务操作,方便进行回滚。 在使用事务之前,我们都应该

    2024年02月05日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包