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.

DSP程序COPY到RAM中运行异常

请教一下,

    我的程序在flash里运行正常,我将部分程序copy到H0SARAM里后只要运行到H0SARAM里的程序就会进入非法中断,但如果把同样的程序copy到L0SARAMA就没有这问题可以顺利运行。H0里不能移植程序么?请教高手帮忙解答一下,谢谢!

  • 请教一下,

        我的程序在flash里运行正常,我将部分程序copy到H0SARAM里后只要运行到H0SARAM里的程序就会进入非法中断,但如果把同样的程序copy到L0SARAMA就没有这问题可以顺利运行。H0里不能移植程序么?请教高手帮忙解答一下,谢谢!

  • 非法中断是哪一个?会不会是H0SARAM容量不够?

  • 你好内存量是够用的我通过CCS windows菜单memory allocation 可以看见内存的装入情况,但只要把应用程序COPY 到H0 里运行就会进入非法中断,比如拷贝Init_flash 或者Us_delay运行时就会进入非法中断。
  • 你好,会跳入这个中断

    interrupt void ILLEGAL_ISR(void) // Illegal operation TRAP
    {
    // Insert ISR Code here

    // Next two lines for debug only to halt the processor here
    // Remove after inserting ISR Code
    asm(" ESTOP0");
    for(;;);

    }
  • 程序跑飞了 应该是空间不足的原因吧 堆栈怎么设置的
  • .text : > FLASHCD, PAGE = 0
    .cinit : > FLASHCD, PAGE = 0
    .pinit : > FLASHCD, PAGE = 0
    .switch : > FLASHCD, PAGE = 0
    .reset : > RESET, PAGE = 0, TYPE = DSECT
    .stack : > RAMM1, PAGE = 1
    .ebss : > RAML1, PAGE = 1
    .bss : > RAML1, PAGE = 1
    .econst : > FLASHEF, PAGE = 0
    .esysmem : > RAML1, PAGE = 1
    堆栈设置在 RAMM1了!
  • 你的程序里面,函数MemCopy()处在DELAY_US()函数的前面吗?在调用DELAY_US()时,前面没有执行MemCopy()的话会导致进入非法中断。所有放在FLASH中但在后运行在RAM中的函数,都需要保证在做完memcopy之后才去执行这些函数,否则PC跳到RAM里执行这些函数时,因为RAM里的内容是乱的,因此相当于CPU跑飞掉了。

  • 谢谢,您的回答。我目前程序中涉及到COPYA到RAM中的程序都是先copy后执行。而且同样的程序比如init_flash(),DELAY_US()等如果COPY到H0中一执行就是跳入非法中断,如果COPY到RAML0 等其他RAM块中执行就没有问题。让我感觉程序在H0中不能执行,但找不原因但现在查相关资料中都显示H0可以映射到程序区或者数据区都没问题。能否帮忙找打原因或者依据?谢谢!
  • 核对地址区域是否正确,也可以仿真,看搬运后对应内存数据是否正确
  • 你好,感谢回答,各片区地址已经核对没有错误或者重叠现象。请教核对内存数据的对错?
  • debug模式下,看memory内的数据
  • 你好,我看到装入得地址没问题,但机械码看不懂。但一运行到装入H0的程序就马上进入非法中断。
  • 不用看懂,比对源地址数据和目标地址内的数据是否一致就可以,如果不一致说明有问题
  •  你好,我把Init_flash 同一个程序先后copy PRAMH0(origin = 0x3F8000, length = 0x002000) 和 RAML0 ( origin = 0x008000, length = 0x001800)我发现同一个汇编指令翻译出的代码不相同。请见图片  PRAMH0(下面的一张) 表示Init_flash  copy入 PRAMH0中时的情况,图片  RAML0(上面一张)  表示Init_flash  copy入 RAML0 中时的情况。请帮我分析一下什么原因,谢谢!

  • 你好,麻烦帮我看看,谢谢