NUC100可以在RAM中,进行仿真中断调试?

[复制链接]
 楼主| musich 发表于 2011-10-5 05:59 | 显示全部楼层 |阅读模式
本帖最后由 musich 于 2011-10-5 06:28 编辑

NUC100可以在RAM中,进行仿真中断调试?

还是根本就不能在RAM仿真中断。哪位给指点个方法,3Q。
 楼主| musich 发表于 2011-10-5 14:50 | 显示全部楼层
没人用到在RAM中仿真中断?
X-Hawk 发表于 2011-10-6 22:52 | 显示全部楼层
本帖最后由 X-Hawk 于 2011-10-6 22:53 编辑

可以,请用Keil, 按照如下步骤进行:

1. 安装Nu-Link for Keil的驱动
2. 修改下您的原有项目中的 startup_NUC1xx.s 文件,
   找到__user_initial_stackheap, 在后面加入4行汇编代码。
   然后,您就可以像旧的在ROM中调试的程序一样,调试RAM的程序了。

  1.                IMPORT  __use_two_region_memory
  2.                 EXPORT  __user_initial_stackheap
  3. __user_initial_stackheap

  4.                 ; ---------------------------------------
  5.                 ; 以下四行代码,为支持RAM调试,要加入的代码         
  6.                 LDR                R0, =0x100
  7.                 MOVS        R2, #0
  8.                 PUSH        {LR}
  9.                 BL                SH_DoCommand
  10.                 ; ---------------------------------------


  11.                 LDR     R0, =  Heap_Mem
  12.                 LDR     R1, = (Stack_Mem + Stack_Size)
  13.                 LDR     R2, = (Heap_Mem +  Heap_Size)
  14.                 LDR     R3, = Stack_Mem
其实RAM中调试本来就可以的,唯一的问题,在于程序在运行到main之前,
会将程序本身从ROM复制到RAM, 这就导致了原先在RAM中的断点无效,
然后程序无法在main停住。表现给用户看,就是“无法在RAM调试”的假象。

   加入以上4行代码,会协作Nu-Link/Keil重置下断点,
于是调试就没问题了。

参考:http://blog.chinaunix.net/space. ... do=blog&id=2709
hsbjb 发表于 2011-10-10 18:55 | 显示全部楼层
可以,用版主的方法试试
liuweijun1 发表于 2011-10-10 19:21 | 显示全部楼层
加了这4行代码编译出错, 换成SH_startup_NUC1xx.s 文件编译通过了,中断还是不行. 是否能提供一个实例. 谢谢!
火箭球迷 发表于 2011-10-10 22:22 | 显示全部楼层
去三楼大侠给的博客网址看看
dfsa 发表于 2011-10-12 23:00 | 显示全部楼层
貌似很多人都遇到了这样的问题
X-Hawk 发表于 2011-10-13 18:38 | 显示全部楼层
这个给出了一个RAM调试的实现

http://www.nuvoton-m0.com/forum. ... &extra=page%3D1
baidudz 发表于 2011-10-13 19:02 | 显示全部楼层
可以在RAM中进行仿真中断调试
txcy 发表于 2011-10-14 22:08 | 显示全部楼层
试过了,可以调试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

316

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部