kimi623 发表于 2011-6-21 09:22:51

用PICkit3 debug时总是进不了main函数,很不解!

买了个pickit3,在调试时程序总是进不了main函数,查看汇编代码,
单步调试总是刚进Main函数是就跳到 弱函数_general_exception_handler();
换了各种片子都不行,每次都直接跳到这个通常异常处理函数。
后来直接重写了_general_exception_handler(void)函数如下:
void _general_exception_handler(void)
{ main();}
这样片子就可以正常运行了。
很不解啊。为什么一定要拐个弯路进main();
奇怪的是当我用MPlab Sim软件仿真时一切都是正常,直接能进main函数。
搞了一个星期了,郁闷死了。不知道原因。

JayGong 发表于 2011-6-21 10:43:13

代码重复了!就是说你程序的代码和Pickit3的运行代码重复就会出现这样的情况,你选大一点的代码空间的芯片可能可以解决!

kimi623 发表于 2011-6-21 10:45:57

楼上,说的代码重复是地址冲突的意思吗? 芯片Flash空间是512K的,大小应该足够。由于是测试,代码就简单写了几句,点个LED灯。按理应该不会重复啊。

kimi623 发表于 2011-6-21 15:09:26

经过查询 Status 和 Cause 寄存器:
       发现 Status 寄存器 EXL =1 :排除复位,软复位或NMI异常之外的任何其他异常,并且处理器将运行于内核模式,中断被禁止。
      Cause 寄存器里面:
       CE<29:28> =1。协处理器异常位。 捕捉到协处理器不可用异常时引用的协处理器单元编号。该字段在每次发生异常时由硬件装载,但对于除协处理器不可用异常之外的所有其他异常,它是不可预测的
       Exccode = 7 。手册说是 总线错误异常(数据引用:装载或存储)

headwolf_83 发表于 2011-6-23 21:58:26

按道理,你用C语言,不应该发生这些错误才是。

kimi623 发表于 2011-6-24 22:53:31

是啊,好奇怪,至今未解决。难道是PICKIT3的问题?
LS , 你是pic32得专家,能给点意见吗?哪些问题会导致这个结果呢。

kimi623 发表于 2011-6-26 14:32:53

每天顶一顶,不能沉下去

hongjie0216 发表于 2011-6-26 14:47:34

你用什么片子?先确定是否有Debug Module

kimi623 发表于 2011-6-26 18:03:24

经过无数天痛苦的毫无目标的艰难寻找,找到一些眉目,我自己更改了link的文件,当定义kseg1_data_mem是8000的时候,一切正常,
我用的芯片按照MPLAD默认设置 elf32pic32mx.ld 中kseg1_data_mem 长度是64k(10000)。 这样就无法正常,现在人为更改了长度设置32K ,一切正常,多设一点点就出错。

wmm20031015 发表于 2011-7-22 00:56:28

正是如1楼所说的问题,编译选项里,全局选项卡那里有个ROM范围设置(如芯片最大地址是ffff,则设置成100-fd20),把KIT3仿真器用到的部分留出来,也就是FLASH最后部分700多个字节

mocular 发表于 2011-7-23 13:49:06

很奇怪的现象,好在我自己还没碰见

是不是你用的mcu是pic24fxxxgb106》??跟pk3的cpu一模一样?

lvku 发表于 2013-7-24 15:12:12

wmm20031015 发表于 2011-7-22 00:56 static/image/common/back.gif
正是如1楼所说的问题,编译选项里,全局选项卡那里有个ROM范围设置(如芯片最大地址是ffff,则设置成100-fd20), ...

按照你的方法,可以debug了,{:handshake:}

mashan75 发表于 2013-7-24 15:56:33



楼主在 调试的时候,有没有把这个开关打到“调试”位置。
页: [1]
查看完整版本: 用PICkit3 debug时总是进不了main函数,很不解!