您好、欢迎来到现金彩票网!
当前位置:老k棋牌 > 栈溢出 >

MSP430数组填充越界引起的栈溢出导致程序跑飞如何解决

发布时间:2019-06-19 23:43 来源:未知 编辑:admin

  1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

  2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。

  由系统自动分配。例如,声明在函数中一个局部变量intb;系统自动在栈中为b开辟空间

  MSP430程序在运行的过程中,出现死机的现象,通过IAR编译器观察,死机的原因是栈溢出。

  因为定义的局部变量是在栈内的,所以分析可能是局部变量导致栈溢出,最有可能导致编译器不能事先判断

  使用了多少栈的(超出设定值会报警),就是程序中产生新的占用栈的变量,由之前的经验推测是数组越界,因为如果程序不顾数组的边界,越界不断的往里填东西,越界的部分就会被当成局部变量,占用栈的内存。

  因为栈是从RAM的底部网上长(存数据)的,而其他程序运行的数据是从顶部往下的,所以当栈越存越多,越积越高的时候,栈就会和程序运行时的数据碰头,二者占满整个RAM内存,此时栈再继续消耗,栈再向上长,直接覆盖掉程序运行时所需的变量,程序就要跑飞了。

  (iar430中定义的变量是从ram的起始地址向上(由小到大),而堆栈是从ram的终止地址向下(由大到小)。

  以msp430F5438为例,它是16KB的ram,起始地址为0x1C00h,终止地址为005BFFh(data sheet 15页),所以它的变量是从0x1C00h开始,向0x005BFFh方向存放,而堆栈是从0x005BFFh开始,向0x1C00h方向压栈。当变量存储空间和堆栈最大占用空间在中间相遇时,就发生了堆栈溢出。)

  7如果再填充的区域内已经没有FF存在,就说明已经发生堆栈溢出或是会有溢出的危险(ram刚好够用)。最好保留一定余量的ram不被改变,以防发生溢出

  因为MSP430的RAM只有16KB,所以填17000次(char)足以保证栈全部占满RAM,覆盖掉所以运行程序的变量,导致跑飞。

  这两句子不能去掉,因为,在没有接收到协议数据(配置数据,FE……FA)之前,UART0_RX_HEX_BUF和UART0_RX_BUF一样在接收返回的AT指令返回,数组在不断的填装,UART0_RX_BUF每隔一段时间就会被读取一次,并清空,因而不会出现溢出。但是在没有收到配置数据之前,UART0_RX_HEX_BUF不会清空,且在配置完之后,只要服务站不发协议数据,也不会清空,因而UART0_RX_HEX_BUF基本处于只填装不清空的状态,最后远远越界,最终导致开头分析的结果。

  后,死机在12小时内在没有出现,其他比对机器全部死机,初步证明分析应该是正确的。

  文章出处:【微信号:changxuemcu,微信公众号:畅学单片机】欢迎添加关注!文章转载请注明出处。

  我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程 分成4篇:分别是

  我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程 分成4篇:分别是

  2017第一季度,华为首次超越长期霸占核心路由器市场全球首位的思科,占据核心路由器市场的全球第一份额....

  题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生....

  [tr]自己写的程序,连接仿真器能成功运行,烧写也提示烧写成功,但无法脱机运行;但是用同样的方法烧写流水灯demo程序却能成功脱...

  请问ADS1282中SYNC是做什么用的,和读写程序有关系吗?我现在只是给接到了上拉3.3V电阻,不知道这是否和我的程序不一直读...

  我用workbench5.1.3版本生成程序时,是否需要移植什么文件过去?

  为什么我用workbench5.1.3版本生成程序时,CubeMX的选项只有4.2.5,我已经安装了4.2.6的CubeMX。而且要使用4.2.6的CubeM...

  1引言在当今的各种实时自动控制和智能化仪器仪表中,人机交互是不可缺少的一部分。一般而言,人机交互是由系统配置的外部设备来完...

  下面是汇编程序 ORG 00H START: MOV P1,#10H;使能,选中第一位数码管 MOV DPTR,#TABLE;用变址...

  利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能....

  什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的ID....

  使用STM32F103C8T6进行手柄制作的程序和工程文件资料免费下载

  本文档的主要内容详细介绍的是使用STM32F103C8T6进行手柄制作的程序和工程文件资料免费下载。....

  您好,我正在做一个引导加载程序,但我受到硬件的限制。我使用的是由微船提供的EZBL项目作为指导。我不能访问CTS和RTS...

  有可能用64位Wi7运行ISSP程序员吗? 我刚刚升级我们的PSoC开发PC,我不能让PC连接到ISSP。 我在Wi2000兼容模...

  离开Pic编程有一段时间,我的内存有点模糊。我有一个项目,在XC8 V1.35下链接很好,但是V1.38失败了。首先,我在V1.35中得...

  6月3日,荣耀业务部副总裁@荣耀老熊 公布了一则对比视频,展示了在方舟编译器加持下,荣耀20 PRO....

  在解释方式下,翻译程序事先并不采用将高级语言程序全部翻译成机器代码程序,然后执行这个机器代码程序的方....

  那位大神有协议的程序代码,要求会有:报头数据,长度,发送方式,以及时间校验和数据打包发送,最后还有加法校验,第一次写协议...

  本文档的主要内容详细介绍的是MELSEC iQ-F系列三菱微型可编程控制器FX5编程手册免费下载。

  Code Composer Studio v5.5应用程序和安装过程资料免费下载

  Code Composer Studio5.5简称ccs5.5,一款专业的IDE集成开发环境,内置功....

  分支定界法是一种求解离散最优化问题的计算分析方法。它是由Land Doig和Dakin等人在20世纪....

  本文档的主要内容详细介绍的是使用FPGA设计的简单电梯程序和工程文件资料合集免费下载。

  本文档的主要内容详细介绍的是STM32F105单片机的多个应用程序和工程文件免费下载。

  上一次我们的程序实在是没什么用,要灯亮还要重写一下片子,下面我们要让灯持续地闪烁,这就有一定的实用价....

  本文档的主要内容详细介绍的是用Python写的一个电影推荐系统的资料免费下载。

  本文档的主要内容详细介绍的是MSP430量产编程器GANG430应用程序免费下载

  本文档的主要内容详细介绍的是LinkButton控件如何实现文件附件的下载详细资料说明。

  近日在伦敦首发之后,,荣耀将移师国内,正式发布新旗舰荣耀20系列。从最新爆料来看,除了海外发布已知的....

  本文档的主要内容详细介绍的是C8051F如何同时实现AD和串口收发的程序免费下载。

  本文档的主要内容详细介绍的是智能小车的程序和原理图的工程文件免费下载。

  芯片是FLASHW25M512JV里面要烧入程序(内含很多图片) 哪位大侠有解决的办法呀 ...

  鸿蒙系统和方舟编译器的思路应该是一样:直接使用机器语言编写app,取消安卓系统的ART虚拟机,直接编....

  本文档的主要内容详细介绍的是如何使用Arduino实现智能小车的自由行详细程序资料免费下载。

  本文档的主要内容详细介绍的是51单片机的引导加载程序的详细资料和工程文件免费下载。

  本文档的主要内容详细介绍的是LCD12864音乐频谱和柱体跳动的C语言程序和工程文件免费下载。

  本文档的主要内容详细介绍的是如何启动下拉菜单导航jQuery特效的程序免费下载。

  本文档的主要内容详细介绍的是如何兼容所有浏览器完美拖拽层的程序免费下载。

  本文档的主要内容详细介绍的设计使用MSP430G2553实现LED闪烁的程序和工程文件免费下载的。

  本文档的主要内容详细介绍的是使用51单片机进行PID温控的C语言程序和工程文件免费下载。

  本文档的主要内容详细介绍的是使用Arduino进行智能语音灯设计的接线说明和程序资料免费下载。 ....

  Python因其强大、灵活且易于使用等特性,而赢得了声誉。这些优点使其在各种各样的应用程序、工作流程....

  本文档的主要内容详细介绍的是使用51单片机设计迷宫智能小车的程序免费下载。

  本文档的主要内容详细介绍的是使用51单片机进行测漏仪程序和PCB原理图资料免费下载。

  本文档的主要内容详细介绍的是数字PID控制直流电机程序清单资料合集免费下载。

  本文根据民航法规和民航局下发的飞机一发失效应急程序制作要求,提出了使用三维电子地图系统制作飞机起飞一....

  本文档的主要内容详细介绍的是使用单片机制作数字可控时钟的程序资料免费下载。

  本文档的主要内容详细介绍的是自己DIY制作一个电流电压表的程序和一些文件免费下载。

  本文档的主要内容详细介绍的是进行步进电机设计的程序和一些数据资料免费下载。

  本文档的主要内容详细介绍的是设计LED模拟交通灯的程序和一些资料说明。

  本文档的主要内容详细介绍的是LabVIEW入门与实战开发100例的VI程序免费下载。

  本文档的主要内容详细介绍的是dsPIC33FJ32MC204单片机的使用入门教程免费下载。介绍针对d....

  本文档的主要内容详细介绍的是MATLAB 64位C语言和C++编译器应用程序免费下载。

  本文档的主要内容详细介绍的是使用labview进行俄罗斯方块的游戏程序。

  本文档的主要内容详细介绍的是Labview的三个虚拟仪器设计教程实验资料说明包括了:子VI的创建,程....

  本文档的主要内容详细介绍的是电源管理芯片的程序HK6288设计软启动注意事项资料说明。

  使用C51单片机和Proteus仿真进行电子抽奖系统设计的应用实例资料合集

  本文档的主要内容详细介绍的是使用C51单片机和Proteus仿真进行电子抽奖系统设计的应用实例资料合....

  使用C51单片机和Proteus仿真进行PC中控系统应用实例程序和资料合集

  本文档的主要内容详细介绍的是使用C51单片机和Proteus仿真进行PC中控系统应用实例程序和资料合....

  移植原来 TI 对于 CC1101 与 MSP430 接口库到 STM32 平台,参考原 TI 库应....

  本文档的主要内容详细介绍的是DP-51PRO开发板实验箱的实验程序资料合集免费下载,由于文件比价大,....

  本文档的主要内容详细介绍的是DP-51PRO开发板的实验箱实验程序资料合集后8个免费下载 由于文件比....

http://advntravel.com/zhanyichu/55.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有