打印

ICD2仿真跟不进去,是什么原因呢?

[复制链接]
2207|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ping_cn|  楼主 | 2009-5-8 10:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的单片机是PIC16F946,程序区有8K,我现在写了大概7K多一点,RAM差不多也用完了
问题是,我想跟进调试,却跟不进去,奇怪的是我PROGRAMMER模式,离开ICD2我的设备能运行
就是想调试进不去,要是我屏掉一部分的程序,它就跟的进去,想请大虾们找一下问题出在哪了?
补充:设备连线无误,软件配置正确。
沙发
ping_cn|  楼主 | 2009-5-8 11:02 | 只看该作者

RAM区还有30几个字节

这个问题是不是我的资源用的太光造成的阿?
我的RAM区还有30几个字节~ROM区用的剩了不到1K了~

使用特权

评论回复
板凳
yewuyi| | 2009-5-9 10:24 | 只看该作者

ICD2需要占用部分软硬件资源,你可能和他冲突了

使用特权

评论回复
地板
ping_cn|  楼主 | 2009-5-12 08:30 | 只看该作者

问题已经找到了!是ICD2的问题。如下设置一下就行了。

问题已经找到了!是ICD2的问题。如下设置一下就行了。
  因ICD2是在线仿真,所以会占用部分芯片资源。但编译器的链接文件不够聪明,不知道哪些资源会被ICD2占用,有可能链接器分配的ROM和RAM空间恰巧是被ICD2占用的,会引起用户程序和ICD2的调试程序发生冲突
下面是针对PICC, PICC18, MCC18, C30几个PIC开发中常见C编译器, 基于MPLAB IDE 集成开发环境中给出的解决办法:
1. HITECH C + ICD2. 
  PICC 和PICC18的设置一样,通过设置编译选项来实现。
  编译程序前,在MPLAB IDE中的PROJECT菜单下,按如下操作
PROJECT->BUILD OPTIONS->PROJECT->PICC Global
  在PICC Global选项卡中选择"compile for ICD",确定后就可以编译程序啦

2. MCC18 +ICD2
和PICC不一样,在MCC18下是选择合适的linker scripts文件来实现
对于每个PIC18Fxxxx型号,在C:mcc18lkr文件夹,都有两个链接脚本文件, 例如PIC18F452,分别是18f452.lkr和18f452i.lkr.
如果您要使用ICD2调试, 请选用带i的链接文件编译.
如果打开18f452i.lkr, 会看到代码区和数据区分别有:
“CODEPAGE NAME=debug START=0x7DC0    END=0x7FFF  PROTECTED”
“DATABANK  NAME=dbgspr  START=0x5F4  END=0x5FF  PROTECTED”
这部分空间都是会被ICD2占用的, 所以“PROTECTED”,不分配给用户程序。 
3.C30+ICD2
C30是通过设置编译选项实现。
操作如下:MPLAB IDE->PROJECT-> BUILD OPTIONS->PROJECT->MPLAB LINK30, 选中
“Link for ICD2” 确定即可。
对于dsPIC和PIC24系列来说RAM区0800h-0822h是为ICD2保留的,如果编译时没有选择“link for ICD2”,全局变量很有可能分配到800h-822h间. 这也是为什么可以在watch窗口看到全局变量的地址,但在值那栏却显示 “reserved  memory” 的原因之一。

使用特权

评论回复
5
yewuyi| | 2009-5-12 08:56 | 只看该作者

本来就是这么规定的,你自己没好好看手册罢了

使用特权

评论回复
6
ping_cn|  楼主 | 2009-5-12 09:46 | 只看该作者

......

LS的老兄,你要知道早说嘛!你熟不代表人家都跟你一样熟吖~
不明白才来发贴的阿?现在还来说风凉话!!

使用特权

评论回复
7
xljt| | 2009-8-22 16:03 | 只看该作者
可能是你的电路板硬件设计不合理造成的,就是只能烧写,不能仿真,我有时也出现过这样的问题

使用特权

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

本版积分规则

1

主题

4

帖子

0

粉丝