如何人为地让ARM的程序跑飞了
本帖最后由 micropower 于 2012-12-12 14:34 编辑测试人员要测我的板子,其中有一条故障测试是程序跑飞。怎么人为地让程序跑飞呢?用的是AT91RM9200+E28F128,没有上操作系统,裸奔的。
这也要测啊?应该测试是不是会跑飞,那就尽情折腾啊,看看什么情况下会有跑飞的危险。如果你要测试跑飞后的情况,那估计情况很多吧,难以定性。有可能发生系统定义的异常而进入死循环,也有可能跑飞到刚好另一个正常的入口点,还能正常运行,只是忽略了某部分代码,数据应该就没对了。 防止跑飞比较难,有意跑飞还不简单么 本帖最后由 micropower 于 2012-12-12 16:12 编辑
江枫渔火 发表于 2012-12-12 14:47 static/image/common/back.gif
这也要测啊?应该测试是不是会跑飞,那就尽情折腾啊,看看什么情况下会有跑飞的危险。如果你要测试跑飞后的 ...
我们这是安全类产品,系统要求即使程序跑飞了,看门狗芯片也坏了的情况下,依然能保证不对使用的人体造成伤害。所以这是必须要测的。我们现在的测法只有让程序进入某个死循环的状态。你说的第二中情况也有可能,也需要考虑的。
望断云山 发表于 2012-12-12 14:50 static/image/common/back.gif
防止跑飞比较难,有意跑飞还不简单么
哪请问怎么实现呢? 江枫渔火 发表于 2012-12-12 14:47 static/image/common/back.gif
这也要测啊?应该测试是不是会跑飞,那就尽情折腾啊,看看什么情况下会有跑飞的危险。如果你要测试跑飞后的 ...
正如你最后说的,跑飞后,跑到另一个正常的入口,但数据是不对的。这也有相应的故障处理。但现在我就像要让这故障出来。以验证我的系统是否能正确响应这个故障并处理。 跑飞的基本意思就是PC指针跳到了不可预计的地方去了~
用一个汇编函数在你需要跑飞的地方 把PC指针设置为你需要跑飞的目的地点~ micropower 发表于 2012-12-12 16:13 static/image/common/back.gif
哪请问怎么实现呢?
随便在什么地方或者在什么中断里随便从堆栈里弹个数出来或者压个数进去,其结果必然是跑飞,或者随便乱修改一下sp,不跑飞才是怪事 随便把两个地址线短路就好了,改什么程序啊 楼上说的对,短路一下数据或地址总线就可以了
如果想随时软件做可以是非法指针,例如定义指针没有初始化就用, 还有就是数组越界,这是软件最方便的。 这个太简单了 jlass 发表于 2012-12-13 08:51 static/image/common/back.gif
随便把两个地址线短路就好了,改什么程序啊
高手,那我结帖了 本帖最后由 micropower 于 2012-12-13 15:12 编辑
呃,新版的怎么结贴来着
结了……刷了一下午的网页才刷出那个“我要结帖”。 在程序里面给程序PC指针乱赋值就可以了 凑个热闹,学习一下。 类似的情况,我以前这么干:拿个金属的镊子,在芯片的数据线集中的地方,轻轻一划,肯定跑飞了。 注意千万不要碰到电源或者地的管脚,否则有可能把芯片搞瘫痪了。 设置一个死循环 skm2008 发表于 2013-2-20 12:34 static/image/common/back.gif
设置一个死循环
我在4楼已经说了,我们以前就是用这种方法,但这并不是真正的跑飞,真正的跑飞是PC指针无序地乱指。跑飞的时候,程序是很有可能还会胡乱执行的。但设置死循环就啥都不执行了。 达不到测试效果。
页:
[1]