打印

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

[复制链接]
2177|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
musich|  楼主 | 2011-10-5 05:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
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的程序了。

               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

使用特权

评论回复
地板
hsbjb| | 2011-10-10 18:55 | 只看该作者
可以,用版主的方法试试

使用特权

评论回复
5
liuweijun1| | 2011-10-10 19:21 | 只看该作者
加了这4行代码编译出错, 换成SH_startup_NUC1xx.s 文件编译通过了,中断还是不行. 是否能提供一个实例. 谢谢!

使用特权

评论回复
6
火箭球迷| | 2011-10-10 22:22 | 只看该作者
去三楼大侠给的博客网址看看

使用特权

评论回复
7
dfsa| | 2011-10-12 23:00 | 只看该作者
貌似很多人都遇到了这样的问题

使用特权

评论回复
8
X-Hawk| | 2011-10-13 18:38 | 只看该作者
这个给出了一个RAM调试的实现

http://www.nuvoton-m0.com/forum. ... &extra=page%3D1

使用特权

评论回复
9
baidudz| | 2011-10-13 19:02 | 只看该作者
可以在RAM中进行仿真中断调试

使用特权

评论回复
10
txcy| | 2011-10-14 22:08 | 只看该作者
试过了,可以调试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

295

帖子

2

粉丝