裸奔程序为何会跑飞呐,请看究竟
来源:互联网 发布:淘宝 张雅洁 编辑:程序博客网 时间:2024/05/21 20:28
经常在论坛里面,看到一些人说“程序跑飞了!”。以前我真不太理解这个词语,刚才看了个帖子,觉得有点收获,就写下来,希望对各位同仁有所帮助, 所谓“程序跑飞了”,就是程序找不到正确的地址去寻找应该执行的指令,这通常是在中断跳转,MMU设置相关。下面这个帖子就是这个原因。
http://topic.csdn.net/u/20090517/14/4664821b-b0b5-4142-bbf7-5a38e630e18a.html?seed=1566368328
引用 13 楼 xajhuang 的回复:
这个肯定不是,ARM中断产生后,会自动跳转到对应的中断地址,比如复位时跳到0,ISR 跳到 ISR 异常入口,当中断产生时,代码不是直接跳到中断程序中,而是进行了一次类似复位的操作,然后根据对应的中断异常再执行处理。
所以一般仿真器是不会自动找到中断程序的,一般的做法是在启动代码初始化完成,并且使能中断前,用MMU把你代码的ResetHandle地址映射到0地址,这样仿真器就能找到中断函数入口而不会跑飞。
还有一种可能就…
xajhuang 牛人说的很对!!!一般调试器不支持中断跳转的,可以通过MMU处理后支持调试器。
引用 18 楼 CBEMA 的回复:
搞定了,呵呵。每次弄明白了以后,都觉得自己很弱。
的确是mmu的问题。我把程序应映射到0x30000000的位置执行的话,必须在mmu中做一些处理,使得程序在取指的时候,能到0x30000000的位置开始。实际上,我以前改来改去程序经常跳到0x8或是0x4的位置,我就应该意识到内存映射出了问题。
现在我把程序放在0x0的位置开始跑,就ok了。这里不用启动mmu管理。
不过对于mmu的了解还是太少了,还得练啊,学武无止境哦,学学周伯通!做个武痴又如何?
- 裸奔程序为何会跑飞呐,请看究竟
- 裸奔程序为什么会跑飞?
- 裸奔程序之UART
- 裸奔程序之LED详解
- 裸奔程序之定时器&PWM
- 裸奔程序之看门狗定时器
- TQ2440裸奔程序>>流水灯测试程序
- TQ2440裸奔程序>>PWM蜂鸣器测试程序
- TQ2440裸奔程序>>看门狗测试程序
- TQ2440裸奔程序>>PWM蜂鸣器测试程序
- 各类暴力事件频发,究竟是为何?
- 究竟为何诺基亚会开发Android手机?
- ARM上裸奔的跑马灯程序
- tq2440裸奔程序2-按键控制LED
- 单片机的裸奔程序的框架
- 裸奔程序之查询方式检测按键
- 裸奔程序之外部中断检测按键
- ARM裸奔程序如何调用库函数
- javascript 常用的面试题
- 将txt 、LOG文件导入数据库中,中文也不会出现乱码
- Outlining key features differences between WSS3.0 and MOSS 2007(Micosoft sharepoint 2007)
- WTL源码剖析 --- ATLAPP.H
- 在VC中实现程序不在任务栏显示按钮, 标题栏与菜单栏的不显示
- 裸奔程序为何会跑飞呐,请看究竟
- 新来的
- grid loadData(data)
- 双系统中卸载windows7的安全方法
- html中frameset的详细使用方法
- 解释 主分区、扩展分区和逻辑分区
- JTA及两阶段提交协议
- 主题:Android通过手势实现的缩放处理(转http://www.javaeye.com/topic/516876)
- sysfs文件系统