pxa303 boot启动 全局变量被意外修改 惊险刺激 请大虾解答。
在boot启动的过程中发现全局变量莫名其妙地被修改了。
因为这个时候系统还没有跑起来,所以我分析故障有三个原因。
指针越界访问:
因为修改前后根本没有修改变量的任何代码,所以这个我基本排除。
中断服务程序:
我查看了中断服务程序,修改的都是些局部变量,而且地址都是向着增加的方向。全局变量的地址比临时变量的地址小,临时变量存储在堆中。
栈溢出:
觉得这个可能性很大。因为我在调试的时候发现,当代码量增加的时候程序就特别不稳定,呈现递增趋势,多到一定程度程序会非常慢,再多的话程序就根本无法运行了。当大量减少代码的时候程序运行很稳定。
可是我的疑惑出来了。在分析代码的时候栈空间是非常大的呀。我的这部分boot程序镜像只有22K,从sp指向的地址到全局数据区一共也有2多k的空间。这个空间应该是足够用的呀。这时怎么回事那?
期待大虾解答。