本帖最后由 X-Hawk 于 2011-10-6 22:53 编辑
可以,请用Keil, 按照如下步骤进行:
1. 安装Nu-Link for Keil的驱动
2. 修改下您的原有项目中的 startup_NUC1xx.s 文件,
找到__user_initial_stackheap, 在后面加入4行汇编代码。
然后,您就可以像旧的在ROM中调试的程序一样,调试RAM的程序了。
IMPORT __use_two_region_memory
EXPORT __user_initial_stackheap
__user_initial_stackheap
; ---------------------------------------
; 以下四行代码,为支持RAM调试,要加入的代码
LDR R0, =0x100
MOVS R2, #0
PUSH {LR}
BL SH_DoCommand
; ---------------------------------------
LDR R0, = Heap_Mem
LDR R1, = (Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
LDR R3, = Stack_Mem
其实RAM中调试本来就可以的,唯一的问题,在于程序在运行到main之前,
会将程序本身从ROM复制到RAM, 这就导致了原先在RAM中的断点无效,
然后程序无法在main停住。表现给用户看,就是“无法在RAM调试”的假象。
加入以上4行代码,会协作Nu-Link/Keil重置下断点,
于是调试就没问题了。
参考:http://blog.chinaunix.net/space. ... do=blog&id=2709 |