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.

280049 调用f28x_usDelay函数进入非法中断



各位好!

我在调用f28x_usDelay函数时,程序会进入非法中断,这个函数已经放在ramfuncs中执行,且调用之前已执行过memcpy将对应flash空间复制到了ram空间,程序如下图所示:(延时函数位于图1中最后一个函数FUNC_initFunctionApp()中)

 图1

 图2

 图3

 图4

 图5

经过将delay函数放在不同位置调试,最终发现是在图1中CLA_configClaMemory()函数中对寄存器LSxCLAPGM的CLAPGM_LS5赋值1后调用delay函数时会进入非法中断(如图5所示),通过查看编译出的.map文件,找到delay函数的地址为0x0000AC09,查看手册发现该段空间刚好在LS5之中,因此怀疑被CLA使用的内存空间是不是不能用来执行其他程序,请各位大佬帮我看看是不是因为这个,还是说有其他问题?非常感谢,这个问题困惑了我两天了。。。

  • CLA没有自己的内存资源,是从CPU中划分出对应的内存区域供CLA的程序和数据使用。因此,如果CLA的内存被占用,我认为是有可能出现非法中断的情况的
  • 你好,感谢你的回复,我觉得你说的有道理,LS0~LS5这段空间所有权已经被CPU赋予了CLA,那么如果这个时候CPU再去访问这段区域内的函数,应该是会进非法中断。

    现在我还有个问题想请教一下,我在.cla文件中除了CLA本身的那8个ISR外还定义了一些函数,编译后查看.map文件,发现cla这几个函数都存放在flash1中(如图1所示),但是查看对应RAM空间时发现,只有这8个ISR被复制到了LS1中,其余几个函数没有复制进来(如图2所示),不知道这是为什么,麻烦帮我看一下吧,谢谢!

     图1

     图2