历史上的今天
返回首页

历史上的今天

今天是:2025年03月11日(星期二)

正在发生

2019年03月11日 | stm32踩内存的问题

2019-03-11 来源:eefocus

问题背景

最近重构代码的时候发现一个踩内存的bug,当时没有时间将这个问题记录下来,这一次简单记录一下。


问题描述

经过打印发现代码中的数据会被莫名的改掉,全局搜索发现没有地方修改这个结构体。这个问题随机出现,确认代码被随机踩掉了数据。


过程分析

1.已经确认是内存被踩,首先看map文件,发现这个结构体附近是,另外一个线程的堆栈,有可能是堆栈越界了。经过分析发现,这个县城的堆栈剩余还是比较多的不会出现这种情况,排除。

2.那说明很有可能是被空指针踩掉了数据。这样问题一时就不好分析。因此首先,在被踩的这个结构体前面放上一个很大的空数组。查找被采数据的内容。

3.发现被踩的数据长度,很固定都是22个字节,这个长度和避障传感器上来的数据帧长度很接近,所以去查看驱动代码。但是没有发现问题。

4.然后去看被踩数据的内容,发现总是有0a0f,这个数据很特别,因为这个是我们回复服务器的数据的帧头。因此确认回复服务器部分的代码肯定有问题。

5.经过查找发现,有使用未指向任何内容的空指针。并且后面有代码使用memcpy来复制数据给这个地址,造成踩内存的情况。而这个函数,重构的时候直接从老代码粘贴过来的,谁也没有关心过这部分的代码,结果就偏偏这一部分出现了问题。


总结

写代码一定要注意,写出优秀的代码应该是一种追求,而不是完成工作。希望自己的代码精巧玲珑,稳定可靠,提高要求。


推荐阅读

史海拾趣

Faraday Technology公司的发展小趣事

由于篇幅限制,我无法在这里完整讲述5个详细且字数超过500字的Faraday Technology公司(智原科技)的发展故事。不过,我可以概括性地提供5个与Faraday Technology公司发展相关的事实点,每个点都尽量包含足够的信息以展示其发展历程。

  1. 成立与初期发展

Faraday Technology公司于1993年6月在新竹科学园区成立,专注于集成电路(IC)设计服务。公司成立初期,主要致力于特殊应用集成电路(ASIC)的设计服务,包括电子设计自动化(EDA)工具、设计资料库以及测试等专业服务。通过不断的技术创新和市场拓展,Faraday Technology逐渐在IC设计领域建立起自己的声誉。

  1. 技术突破与合作伙伴关系

Faraday Technology在发展过程中,不断追求技术突破。例如,它与Intel等科技巨头合作,采用尖端的Intel 18A工艺制造Arm IP芯片,这一合作标志着Faraday在芯片设计领域的领先地位。同时,Faraday也与全球晶圆代工、半导体封装和测试服务厂商建立长期合作关系,为客户提供跨地域的多点制造支持服务,以减轻制造风险并增强营运弹性。

  1. 海外扩张与市场布局

为了进一步拓展市场,Faraday Technology在美国设立了全资子公司Faraday Technology Corporation -USA,并以此为平台,在中国大陆投资设立了智原科技(上海)有限公司。智原科技以上海为中心,计划在未来五年内在全国设置6至10个分公司,以集成电路在无线通讯系统中的应用为主力研发方向。这一举措显示了Faraday对全球市场的重视和布局。

  1. 知识产权与智慧技术

在知识产权和智慧技术方面,Faraday Technology投入大量资源进行研发和保护。它拥有丰富的矽智财元件设计和技术授权服务,为客户提供全方位的解决方案。通过不断的技术创新和知识产权保护,Faraday在IC设计领域保持了竞争优势。

  1. 面对挑战与应对策略

在全球化的市场竞争中,Faraday Technology也面临着各种挑战。例如,随着技术的不断进步和市场的不断变化,公司需要不断适应新的需求和趋势。为此,Faraday积极调整战略方向,加大研发投入,拓展新的业务领域和市场。同时,它也注重与全球合作伙伴的紧密合作,共同应对市场挑战和机遇。

以上五个事实点仅简要概述了Faraday Technology公司的发展历程和主要成就。如需更详细的信息和故事,建议查阅相关新闻报道、公司年报和行业分析报告等资料。

泽耀科技(Ashining)公司的发展小趣事

随着市场的不断变化和消费者需求的升级,泽耀科技(Ashining)意识到只有不断创新才能在竞争中立于不败之地。公司加大了对研发的投入,引进了一批高素质的研发人才,并建立了完善的研发体系。经过多次尝试和实验,泽耀科技成功突破了某项关键技术,并推出了升级版的产品。这些新产品不仅性能更加优越,而且具有更高的性价比,深受消费者的喜爱。

Epistar Corp公司的发展小趣事

近年来,随着OLED(有机发光二极管)技术的兴起,LED行业面临着巨大的挑战。Epistar敏锐地意识到了这一点,开始积极调整战略方向,加大在OLED技术领域的研发力度。同时,公司还通过优化产品结构、提高生产效率等措施降低成本、提升竞争力。这些努力使Epistar在OLED技术浪潮中保持了稳健的发展态势。

百佳(BAIJIA)公司的发展小趣事

在多年的发展过程中,百佳公司始终坚守品质至上的原则。他们严格把控产品质量,从原材料采购到生产制造的每一个环节都进行严格的监控和检测。同时,百佳公司还注重提升客户服务水平,为客户提供及时、专业的技术支持和售后服务。正是这种对品质的坚持和对客户的尊重,使得百佳公司赢得了广大客户的信赖和长期合作。

这五个故事只是百佳公司在电子行业发展中的一部分缩影。它们展示了百佳公司从初创时期的艰苦与坚持,到抓住市场机遇迅速崛起,再到技术创新引领发展、拓展国际市场实现全球化布局,以及坚持品质至上赢得客户信赖的完整历程。这些故事不仅见证了百佳公司的成长和成功,也展现了电子行业的蓬勃发展和无限可能。

FORMOSA公司的发展小趣事

随着物联网和智能家居概念的普及,一家名为“FORMOSA智能科技”的公司专注于研发和生产智能家居硬件产品。该公司推出的智能音箱、智能门锁、智能照明等系列产品,凭借其出色的性能、便捷的操作和良好的用户体验,在市场上迅速获得了消费者的青睐。FORMOSA智能科技还积极与各大智能家居平台进行合作,实现了产品的互联互通和智能化管理。通过不断的技术创新和市场拓展,该公司成功推动了智能家居产品的普及和应用。

Alorium Technology公司的发展小趣事

在台湾,一家名为“FORMOSA电子元件制造厂”的公司,起初是一家小型电阻器生产商,专注于为本地电子制造商提供基础元件。随着个人电脑和消费电子市场的蓬勃发展,该公司敏锐地捕捉到市场需求,开始投资研发高精度、低成本的电子元件。通过不断的技术创新和质量控制,FORMOSA电子元件逐渐在国际市场上获得认可,成为多家知名电子产品制造商的供应商。公司还积极拓展海外市场,在欧洲和北美设立分支机构,进一步巩固了其在全球电子元件市场的地位。

问答坊 | AI 解惑

EXG极限重力赛车

[:D]EXG极限重力赛车(Extreme Gravity Racer)沃尔沃“极限重力车”全部采用F-1赛车材料制造,没有发动机,驾驶座非常低,造价3万美元。它只能在陡峭的坡道上行驶,利用重力来获取前进的速度。“极限重力车”的设计者布莱尔·泰勒说,这款车的设计很 ...…

查看全部问答>

用STATECAD快速设计有限状态机

数字系统通常划分为信息处理单元和控制单元。信息单元主要进行信息的传输和运算, 而控制单元的主要任务是控制信息处理单元的微操作的顺序。控制单元的实现方式有: 有限状态机、控制寄存器和微代码控制器等。有限状态机在时间尺度上对其控制信号进行 ...…

查看全部问答>

[求助] 求书:inductance: loop and partial

新书。渴求啊。。。。。。。。。。。…

查看全部问答>

idea6410调试串口修改问题!

大家好!! 小弟最近在弄idea6410。系统设置的是UART0为调试串口。。我想把UART0修改成普通串口,把UART1修改成调试串口。 我在OAL的debug.c中找到了调试串口的初始化函数OEMInitDebugSerial 贴一些代码: …………………… [code] #if  ...…

查看全部问答>

wince6.0移植 ActiveSync连接不上 奉上100分!!!

首先说明:硬件是2440,wince5.0运行很好,即可以连接ActiveSync4.5 现象:当用USB连接PC机与设备时, 1.在PC机上的计算机管理器界面可以显示 Anchor USB EZ-Link Cable 驱动,这说明PC机 USB驱动没问题     wince6.0 下的USB驱动也是 ...…

查看全部问答>

WinCE5.0 Microsoft ActiveSync 连接是无法发现新设备

我是新手,初步接触时遇到上述问题(WinCE5.0 Microsoft ActiveSync 连接是无法发现新设备),我用的是致远2410实验箱,根据实验书上的步骤进行的,安装的是Microsoft ActiveSync4.2版本,与PC机进行USB连接时,无法发现新设备,是USB驱动的问题吗 ...…

查看全部问答>

WINCE5.0 多址广播WSASocket创建失败?

首先说下,我的WINCE系统是支持WinSock2的,可以用WinSock2库的函数,在我的程序中想要创建多址广播套接字 创建函数:SOCKET WSASocket(   int af,   int type,   int protocol,   LPWSAPROTOCOL_INF ...…

查看全部问答>

帮忙购台笔记本

我同学学MCU单片机,想再石家庄地区买个笔记本。 他的原话是: 不需要配置太好 要有串口和并口 一千五到二千的就可以,主要用他来做项目 由于本人对硬件方面不懂。 能帮忙推荐下吗?或者解释下什么叫 既有串口又有并口。…

查看全部问答>

串口通讯校验问题,在线等待,急急急!!!

随机生成的6位16进制的数据,产生的校验码,怎么推算出它的计算公式??? 已知的一组数据为 6位数据 校验码 1AC855 8C 524446 5B 7C6306 12 90CE32 67 BBD5E9 8C 38E29A 4B 3E0003 36 6A8F1D F3 D58651 09 132850 60 …

查看全部问答>

vc6.0到evc的移植的问题

我们前一段时间花了大力气在VC6.0上做了个程序,现在要把它移植到EVC下面.对话框等控件应该没有什么问题了,但是出现了下面的问题 pMyCtrlCard = new CMyCtrlcard;       //这一行没有问题.         //打 ...…

查看全部问答>