DSP仿真时进入非法中断

2019-07-14 23:59发布

进入了


interrupt void EPWM1_INT_ISR(void)     // EPWM-1{
  // Insert ISR Code here

  // To receive more interrupts from this PIE group, acknowledge this interrupt
  // PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;

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





下面是CMD文件





MEMORY
{
PAGE 0 :
   /* BEGIN is used for the "boot to SARAM" bootloader mode      */
   /* BOOT_RSVD is used by the boot ROM for stack.               */
   /* This section is only reserved to keep the BOOT ROM from    */
   /* corrupting this area during the debug process              */

   BEGIN      : origin = 0x000000, length = 0x000002     /* Boot to M0 will go here                      */
   BOOT_RSVD  : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */               
   RAMM0      : origin = 0x000050, length = 0x0003B0



   RAML0      : origin = 0x008000, length = 0x000200   
   RAML1      : origin = 0x008200, length = 0x006e00   
/*   RAML1      : origin = 0x008200, length = 0x003e00  */
/*   RAML2      : origin = 0x00A000, length = 0x001000  */
/*   RAML3      : origin = 0x00B000, length = 0x001000  */
/*     RI      : origin = 0x123456, length = 0x0000ff*/
   ZONE6A     : origin = 0x100000, length = 0x080000    /* XINTF zone 6 - program space */
   CSM_RSVD   : origin = 0x33FF80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
   CSM_PWL    : origin = 0x33FFF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA            */
   ADC_CAL    : origin = 0x380080, length = 0x000009
   RESET      : origin = 0x3FFFC0, length = 0x000002
   IQTABLES   : origin = 0x3FE000, length = 0x000b50
   IQTABLES2  : origin = 0x3FEB50, length = 0x00008c
   FPUTABLES  : origin = 0x3FEBDC, length = 0x0006A0
   BOOTROM    : origin = 0x3FF27C, length = 0x000D44               


PAGE 1 :
   RAMM1      : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
/*   RAML4      : origin = 0x00C000, length = 0x001000    */
/*   RAML5      : origin = 0x00D000, length = 0x001000    */
/*   RAML6      : origin = 0x00E000, length = 0x001000    */
   RAML7      : origin = 0x00f000, length = 0x01000
  /* ZONE6B     : origin = 0x180000, length = 0x080000   */  /* XINTF zone 6 - data space */
/* RUAN      : origin = 0x182222, length = 0x070000*/
   ZONE6B     : origin = 0x180000, length = 0x080000
}


SECTIONS
{
   /* Setup for "boot to SARAM" mode:
      The codestart section (found in DSP28_CodeStartBranch.asm)
      re-directs execution to the start of user code.  */
   codestart        : > BEGIN,     PAGE = 0
   ramfuncs         : > RAML0,     PAGE = 0  
   .text            : > RAML1,     PAGE = 0
   .cinit           : > RAML0,     PAGE = 0
   .pinit           : > RAML0,     PAGE = 0
   .switch          : > RAML0,     PAGE = 0

   .stack           : > RAMM1,     PAGE = 1
/*   .ebss            : > RAML4,     PAGE = 1    */
/*   .econst          : > RAML5,     PAGE = 1    */
   .ebss            : > RAML7,     PAGE = 1
   .econst          : > RAML7,     PAGE = 1     
   .esysmem         : > RAMM1,     PAGE = 1

   IQmath           : > RAML1,     PAGE = 0
   IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD
   IQmathTables2    : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
   FPUmathTables    : > FPUTABLES, PAGE = 0, TYPE = NOLOAD

/*   DMARAML4         : > RAML4,     PAGE = 1 */
/*   DMARAML5         : > RAML5,     PAGE = 1 */
/*   DMARAML6         : > RAML6,     PAGE = 1 */
   DMARAML6         : > RAML7,     PAGE = 1
   DMARAML7         : > RAML7,     PAGE = 1


/* ZONE6DATA       : > RUAN,      PAGE = 1*/
   ZONE6DATA        : > ZONE6B,    PAGE = 1  
/*  HUNZI            : > RI,        PAGE = 0*/

   .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used                    */
   csm_rsvd         : > CSM_RSVD   PAGE = 0, TYPE = DSECT /* not used for SARAM examples */
   csmpasswds       : > CSM_PWL    PAGE = 0, TYPE = DSECT /* not used for SARAM examples */

   /* Allocate ADC_cal function (pre-programmed by factory into TI reserved memory) */
   .adc_cal     : load = ADC_CAL,   PAGE = 0, TYPE = NOLOAD

}





现在是我仿真时空间不够,RAML1      : origin = 0x008200, length = 0x006e00    改为RAML1      : origin = 0x008200, length = 0x007e00   

将RAML7      : origin = 0x00f000, length = 0x01000 改为RAML7      : origin = 0x3f8000, length = 0x01000

改成这样就进入非法中断了,请问是什么原因。

然后怎么增加仿真空间?
谢谢了。







友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
sdlls
1楼-- · 2019-07-16 04:20
超出存储的范围了吗?
pixhw
2楼-- · 2019-07-16 07:45
当需要把程序从flash复制到RAM里时,各个段分配参考如下:
.cinit
Flash
.cio
RAM
.const
Flash
.econst
Flash
.pinit
Flash
.switch
Flash
.text
Flash
.bss
RAM
.ebss
RAM
.stack
Lower 64Kw RAM
.sysmem
RAM
.esysmem
RAM
.reset
RAM1

kkzz
3楼-- · 2019-07-16 10:59
进入非法中断,可能是内部空间不足造成的。
hudi008
4楼-- · 2019-07-16 15:37
这个变量能够正常使用吗?
lzmm
5楼-- · 2019-07-16 20:44
 精彩回答 2  元偷偷看……
minzisc
6楼-- · 2019-07-16 22:03
如果循环变量没控制好则会出现数组下标越界

一周热门 更多>