首页 > 其他分享 >一个关于编译器优化选项问题的解决

一个关于编译器优化选项问题的解决

时间:2024-04-09 16:01:26浏览次数:8  
标签:选项 DMA u8 pbyBuf 编译器 优化 byTxbuf

因为当前项目单片机容量不够使用,打算开启编译器优化,结果在使用KEIL编译器优化后,程序在发送Modbus数据时,程序直接跑飞了

先说结论:

最后发现是局部变量指针作为了DMA的内存地址参数,导致当DMA连续搬运数据时,实际那个局部变量已经被释放,导致DMA搬运数据的过程中出现错误,但是为什么没优化之前没有问题,实在难以理解

确认现象:

   当单片机回复上位机的时候就会跑飞,接收不会有问题。

寻找错误:

 

  •  修改单个文件的编译优化等级,发现只有当bsp_modbus.c文件无优化的时候才是正常
  • 确定是该文件的程序有问题。
  • 通过在线调试发现只有回复异常码时才会卡死:
void MODS_SendAckErr(u8 *pbyBuf,u8 byErrCode)
{
     static u8 byTxbuf[3] = {0};

    byTxbuf[0] = pbyBuf[0];        
    byTxbuf[1] = pbyBuf[1] | 0x80;    
    byTxbuf[2] = byErrCode;        

    MODS_SendWithCRC(byTxbuf, 3);
}

就是  byTxbuf出错,把 byTxbuf换成静态的就好了

 

 

 指针传递不会过程中不会有被释放的风险。

 

标签:选项,DMA,u8,pbyBuf,编译器,优化,byTxbuf
From: https://www.cnblogs.com/cc-cnblogs/p/18124113

相关文章

  • CommMonitor 选项设置-通用说明
    CommMonitor选项设置-通用说明1、数据的数值类型展示方式:a、可分别显示16进制,10进制,8进制,2进制,如下图所示2进制显示,默认为16进制;b、支持列表视图、Line视图、Dump视图的数据数值进制展示。2、日期/时间选项:如下图a、支持以内核捕获时间和记录区间时间,默认是内核捕获时间;b......
  • Linux环境变量,打开的 shell 选项 himBHs 和 hBc
    前言全局说明Linux环境变量himBHs和hBc一、说明$-记录的是当前配置打开的shell选项,而himBH是其默认值。二、查看环境变量2.1本地执行echo$-2.1查看远程环境变量[email protected]'echo$-'127.0.0.1实际是本机回环,但是假设是远程机器的IP,效果是一......
  • antv下拉框展开选项到刚好到浏览器底部触发闪烁,会回弹一下
    关闭下拉框的动画样式.ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-bottomLeft,.ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-bottomLeft{ -webkit-animation-name:unset;......
  • AO-SVM,基于AO天鹰算法优化SVM支持向量机回归预测(多输入单输出)-附代码
    AO天鹰算法(AntOptimizationEagleAlgorithm)是一种启发式算法,它是灵感来自天鹰座在捕捉猎物过程中的自然行为。因此,优化所提出的AO算法的程序用四种方法表示;按高选择搜索空间垂直俯冲翱翔,通过短滑翔攻击的轮廓飞行在发散的搜索空间内探索,通过低速飞行和慢速下降攻击在收敛搜索......
  • 架构师必备:精通Nacos以优化微服务设计
    关注微信公众号“程序员小胖”每日技术干货,第一时间送达!引言在微服务架构中,服务注册与发现是至关重要的,而AlibabaNacos正是这方面的优秀解决方案。它不仅功能强大、配置灵活,而且在SpringCloud环境下的集成使用更是极大地提升了服务治理的效率。本文旨在向读者详细介绍......
  • Unity性能优化-C#篇
    Unity性能优化-C#篇 1.UnityAPI GameObject.GetComponentUnity是基于组件的开发方式,所以GetComponent是一个高频使用的函数每次调用GetComponent时,Unity都要去遍历所有的组件来找到目标组件每次都去查找是不必要的耗费,可以通过缓存的方式来避免这些不必要的开销其中......
  • react 性能问题和优化
    某个组件更新,子组件也会一起更新react更新采用时间切片,vue则是依赖收集执行更新操作为16ms,如果操过16ms,先暂停更新,让浏览器先渲染时间切片时间是16ms,因为人眼刷新率约60帧,60hz为16ms1.避免state改为同样的值(class用PureComponent,函数组件默认已经处理了)2.处理子组......
  • (文章复现)基于改进秃鹰算法的微电网群经济优化调度研究
    参考文献:[1]周辉,张玉,肖烈禧,等.基于改进秃鹰算法的微电网群经济优化调度研究[J].太阳能学报,2024,45(02):328-335.1.基本原理        微电网群由3个独立的微电网(microgrid,MG)组成,各微电网内部包含光伏(photovoltaic,PV)、风力发电机(windturbine,WT)、电动......
  • 斜率优化 DP
    对于这样一类方程\(dp_i=\min\limits_{j=1}^{i-1}(dp_j-a_ic_j)\),其中\(a,c\)都为正整数且递增:如果直接计算,时间复杂度为\(\mathcal{O}(N^2)\)。使用斜率优化,可以将时间复杂度将为\(\mathcal{O}(N)\)。在学习本节之前,请先学会单调队列,还要知道在平面直角坐标系中,斜率越小......
  • android 内存优化
    什么是内存泄漏?如果一个无用对象(不需要再使用的对象)仍然被其他对象持有引用,造成该对象无法被系统回收,以致该对象在堆中所占用的内存单元无法被释放而造成内存空间浪费,这中情况就是内存泄漏。在Android开发中,一些不好的编程习惯会导致我们的开发的app存在内存泄漏的情况。下......