天嵌 ARM开发社区

 找回密码
 注册
查看: 2331|回复: 1

解释:为什么调试中断要开启MMU?

[复制链接]
freenl 发表于 2011-4-5 22:55:54 | 显示全部楼层 |阅读模式
调试中断程序时,当发生中断,处理器会自动跳转到norflash或者内部4kb SRAM 处执行中断跳转程序,如果要想正常进行在线调试,要让norflash或者SRAM中的中断跳转程序和SDRAM中的程序一致,这样才能在发生中断时能再成功跳转到SDRAM中的中断服务子程序中;
   还有一种方法是开启MMU,让norflash或者4kb的SRAM中地址空间映射到调试代码的运行空间,这样当PC指向norflash或者SRAM的虚拟地址时,直接进行地址转换跳到SDRAM中执行。映射代码如:MMU_SetMTT(0x00000000,0x03f00000,(int)__ENTRY,RW_CB);
     我所遇到的情况:
    因为我的norflash中一直存放的是uboot代码,而uboot代码的中断跳转程序和2440init.s中的代码不一致,当我在没有开启MMU地址映射且选择norflash启动的情况下进行在线调试中断程序时,会发生指令异常,这是因为中断发生时程序跳转到norflash中执行中断跳转程序,此时执行的是uboot中的程序,和我2440init.s不一致,这样随着程序的执行取出了非法指令,从而产生指令异常,如果把程序下载到norflash中就不会发生这样的问题(不开启MMU也可以正常在线调试)。若要在不重新烧写norflash的情况下正常在线调试就要进行地址映射。
    另外可以选择nandflash启动模式,且用uboot把自己的程序下载到nandflash中,这样不开启MMU也可以进行在线调试,当然开启也不会又任何问题!

评分

参与人数 2 +7 收起 理由
Mr_Double + 6 赞一个!
无人地铁 + 1 很给力!继续给新手带画惊喜!谢谢你的经验分.

查看全部评分

jing007520 发表于 2012-6-26 20:54:48 | 显示全部楼层
醍醐灌顶,原来是这回事
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-6-6 01:12 , Processed in 1.046875 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表