cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 4 MCU

mach_4368771
New Contributor

你好,

     在调试程序时遇到一个IntDefaultHandler相关的问题,导致程序卡在这个地方不能继续运行,附件截图请参考,谢谢

0 Likes
1 Solution
Vison_Zhang
Moderator
Moderator

Creator 4.3 的 release note 确实写明了 “The officially supported MDK version is 4.72a. ” ,但是通常使用其他版本也是不会存在问题的,所以不应该 MDK 与 Creator 的兼容性问题, MDK 最新的版本是 V5.31 你可以试试最新版本是否有问题。我们确实偶尔会碰到编译器的 bug, 有时随便在哪里增加一句无关紧要的代码,程序执行就正常了。

View solution in original post

0 Likes
9 Replies
Vison_Zhang
Moderator
Moderator

IntDefaultHandler 函数中有两个 while 循环分支,一个是 heap/stack 溢出跳入分支,另一个是其他原因(比如CPU访问越权地址或定义一个了指针但没有为它指定地址,导致 CPU 访问越权地址等)的分支。CPU 现在进入的是哪一个分支呢?

0 Likes
mach_4368771
New Contributor

heap/stack 没有溢出,CPU 进入的是另外一个分支,而且程序中的指针很少且使用都有注意,不知是否还有其他原因

0 Likes
Vison_Zhang
Moderator
Moderator

硬件供电电路是否是正确的呢,比如 VCCD 是不是直接接了电压信号,而不是通过电容接地

0 Likes
mach_4368771
New Contributor

硬件电路VCCD 确实是通过电容接地的,但是程序前期是可用的,到后期添加的功能内容多了就会出现IntDefaultHandler问题,比如说往相关的结构体中增加一个变量,结构体中定义都是char类型且按1字节对齐,成员多少应该不会导致程序出问题,但一添加程序就运行到IntDefaultHandler中

0 Likes
LinglingG_46
Moderator
Moderator

如果你的变量增加多了之后,导致进入IntDefaultHandler中断中,我有理由怀疑你是堆栈溢出。请在creator中把heap和stack的值改大一些,看问题是否还会出现?

pastedImage_0.png

0 Likes
Vison_Zhang
Moderator
Moderator

从你的描述看,应该是固件哪里有问题导致的,debug 定位一下跳转位置应该可以定位到问题代码。

0 Likes
Vison_Zhang
Moderator
Moderator

问题是否已定位

0 Likes
mach_4368771
New Contributor

并未找到问题原因,不过在这个过程中发现一个有意思的事情,因为之前都是使用的MDK的编译工具,而把编译工具换成默认的GCC则不会再出现这个问题,同步使用的IAR也并未出现,首先编译是都没有问题,堆栈也未溢出,但GCC对代码的优化并不好,使用MDK会稳定些,这是MDK和工具链的版本,是否兼容性问题亦或者是配置有问题

Image_20200803105648.png

0 Likes
Vison_Zhang
Moderator
Moderator

Creator 4.3 的 release note 确实写明了 “The officially supported MDK version is 4.72a. ” ,但是通常使用其他版本也是不会存在问题的,所以不应该 MDK 与 Creator 的兼容性问题, MDK 最新的版本是 V5.31 你可以试试最新版本是否有问题。我们确实偶尔会碰到编译器的 bug, 有时随便在哪里增加一句无关紧要的代码,程序执行就正常了。

View solution in original post

0 Likes