在用例程pmsm3_3验证旋变解码功能的时候,发现只要把旋变解算功能加进去之后,
程序就会跳到非法中断ILLEGAL_ISR(void) // ILLegal operation TRAP,网上查询相关问题有说数组溢出或者程序代码量过大会导致相关问题,查看RESOLVER.H 文件是定义了几个数组,做滤波用的,会是这个原因导致的么?如果是我想修改CMD文件该修改哪部分呢?
附上我用的CMD配置F2812_EzDSP_RAM_lnk.cmd:
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好,我的编译是可以过去的。按照你说的我把堆栈从0x0400放大到0x0480,修改了cmd对应部分的长度为0x0480,运行仍然会跳到非法中断。如果堆栈相应再放大,比如0x0500之上,编译出错,显示堆栈重叠:RAMM1 memory range overlaps existing memory range DEV_EMU。是因为堆栈长度0x0480不够,需要继续加大吗?如果继续加大,那编译出错显示的与 DEV_EMU堆栈重叠问题应该在那个cmd模块修改呢?好像没看到cmd里定义DEV_EMU的部分,还是这部分是固化在片子里的?
我在DSP281x_Headers_nonBIOS.cmd中找到DEV_EMU的地址设置了,然后把.stack的堆栈长度从0x0400扩大到0x0600,然后再把DSP281x_Headers_nonBIOS.cmd中涉及到会重叠的部分DEV_EMU、PIE_VECT、FLASH_REGS、CSM、XINTF、CPU_TIMER0、PIE_CTRL都分别向后扩展了0x0200的地址,编译之后可以通过,可是这次再把旋变算法的程序从屏蔽变成放开之后,系统的TIUFINT主中断干脆就不进去了。是因为我改地址的时候把TIUFINT中断入口地址改变了导致的这个问题么?求解答