程序跑飞是什么意思?

程序跑飞是什么意思?,第1张

问题一:嵌入式程序的跑飞是什么意思? LZ您好,我正在学习单片机,以下是我的个人理解:

程序跑飞,就是程序跑得跟设计想法完全不一样,而且单片机此时对于各种外接的设备(按键、显示屏、LED灯等等),还有之前程序中设置的外中断,计时器,串口中断等等本来应有的反应也彻底没有了,单片机进入了一个不可控的死机状态。比方说我现在写的程序,主程序正常的,但是一旦按了0号外中断,LCD1602显示屏上就出现了一串乱码,然后本来应该过一会儿中断程序完成退回主程序,恢复正常显示,结果等了几倍的相应时间也没反应,肯定是彻底死机了,对于这个我的老师就认定为程序跑飞了,不过跑飞其实是我们认定的,单片机不认为自己跑飞了,只要不是外部强电磁干扰引起的跑飞(工控现场的恶劣使用环境引起的),那么人家单片机可是按照我们写给它的程序兢兢业业地执行着呢,只是我们自己写错程序了,要是LZ也是正在学单片机,我们一起探讨下吧?另外,求采纳啊~~~ ^-^ 我也在百度上提了个问题,也是单片机的,一起探讨吧~

问题二:程序跑飞一般是什么原因造成的 我是在DM642上做jpeg2000编解码的,先是调通了板子的VIVO,然后再把代码移植进去,编译通过,就是下载进去后跑不起来我的配置基本上都是在BOIS里面做的,cmd文件里面没写什么东西,能不能帮忙分析下大概是哪些原因导致程序跑步起来啊?谢了!

忽略一切硬件因素,例如是电压不稳或者外部干扰等等问题。因为我这程序用keil软件仿真的时候PC指针都会都飞开,所以应该不关硬件的事。光从软件上看,怎么样的原因会使单片机跑飞呢?程序是用C写的,编译时keil没有报错,也没有warning。ram用了218B,flash用了16kB。

用的芯片是SM5964,ram大小是256+768,flash是64k。按理来说都没超标,求大神解围!

问题三:什么是跑飞? 程序(常见于单片机,DSP中)因编写问题没有按照作者意思运行而进入死循环或者毫无意义地乱运行.

问题四:51单片机程序跑飞什么意思?怎么解决? 程序跑飞就是程序执行错误,程序不知道运行到哪里,这就需要设定标志位,寻找跑飞的地方,再改

问题五:程序跑飞一般是什么原因造成的 原因很多啊

1)程序没有结尾或不是循环的程序。

2)nmi管脚没有上拉。

3)在看门狗动作的时候程序会经常跑飞。

4)程序编制不当也会引起程序跑飞。

5)硬件系统有问题。

问题六:程序跑飞一般是什么原因造成的 原因很多啊

1)程序没有结尾或不是循环的程序。

2)nmi管脚没有上拉。3)在看门狗动作的时候程序会经常跑飞。

4)程序编制不当也会引起程序跑飞。

5)硬件系统有问题。

问题七:c语言程序跑飞的原因有哪些?指针? 跑飞指的是程序指针混乱,堆栈被破坏,跑飞算是程序运行问题中较严重的一类,对指针未初始化或未指向值就解引用常会引起跑飞

如: struct AA

{

int i

char j

} *p

如未p = (AA *)malloc(sizeof(struct AA))等之类进行初始化就 使用p->i,j等就会使得程序跑飞

问题八:程序跑飞是怎么回事? 10分 看看这两个吧,或许对你有用

baike.soso/v4640480

h触tp:/...15547/

问题九:单片机程序跑飞 一种可能是硬件上抗干扰设计有缺陷。

另一种可能是软件处理有问题,需要提供软件才能具体分析问题所在。

可采用看门狗定时器。

工作原理如下:“看门狗”技术就是使用一个“看门狗”定时器来对系统时钟不断计数,监视程序的运行。当看门狗定时器启动运行后,为防止看门狗定时器的不必要溢出而引起单片机的非正常的复位,应定期地把看门狗定时器清0,以保证看门狗定时器不溢出。当由于干扰,使单片机程序“跑飞”或陷入“死循环”时,单片机也就不能正常运行程序来定时地把看门狗定时器清0,当看门狗定时器计满溢出时,将在AT89S52的RST引脚上输出一个正脉冲(宽度为98个时钟周期),使单片机复位,在系统的复位入口0000H处重新开始执行主程序,从而使程序摆脱“跑飞”或“死循环”状态,让单片机归复于正常的工作状态。

单片机程序死机,跑飞了可以从以下几个方面查找原因:

1. 意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象。

2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加volatile,其次在主循环中读取中断变量前应该首先关闭全局中断,防止读到一半被中断给修改了,读完之后再打开全局中断否则出现造成数据乱套。

3. 地址溢出,常见错误为指针 *** 作错误。我要着重说的是数组下标使用循环函数中循环变量,如果循环变量没控制好则会出现数组下标越界,意外修改系统的寄存器造成死机,这种情况下如果死机说明运气好,否则后面不知道发生什么头疼的事。

4. 无条件的死循环比如使用while(x)等待电平变化,正常情况下x都会变成0,就怕万一,因此最好加上时间限制。

5. 看门狗没有关闭。有的单片机即使没使用看门狗开机时也有可能意外自动开启了最小周期的看门狗,导致软件不断复位,造成死机,这个要看芯片手册,最好在程序复位后首先应该显式清除看门狗再关闭看门狗。

6. 堆栈溢出。最难查找的问题,对于容量小的单片机,尽量减少函数调用层级,减少局部变量,从而减少压栈的时候所需的空间。当你把以上几条都试过不能解决问题,试一试把你的被调用少函数直接内置到调用的地方并且把占用RAM大的局部变量改成全局变量,试一试说不定就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11052131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存