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.

TMS320F28P550SJ: 关于仿真时内存保护的问题

Part Number: TMS320F28P550SJ

亲爱的TI工程师们你们好:

我最近在用TI的28p55 launchpad ,在进行CPU-CLA-DMA测试的时候,为了兼顾CLA和DMA能同时读取ADC结果寄存器的数据,所以将数据放在了 起始地址在0x001700的DMAtoCLA MSG RAM中(cmd文件中为:DMATOCLARAM      : origin = 0x001700,   length = 0x000080),虽然程序可以正常运行,但是在仿真时就看不到变量了,提示是:Memory map prevented reading 0x00001700@Data,因此想来咨询一下有没有解决方法,谢谢!

我修改后的cmd文件、仿真时遇到的提示信息如下:

CLA_SCRATCHPAD_SIZE = 0x300;
--undef_sym=__cla_scratchpad_end
--undef_sym=__cla_scratchpad_start

MEMORY
{

   BEGIN            : origin = 0x080000, length = 0x000002  // Update the codestart location as needed

   BOOT_RSVD        : origin = 0x000002, length = 0x000126     /* Part of M0, BOOT rom will use this for stack */
   RAMM0            : origin = 0x000128, length = 0x0002D8
   RAMM1            : origin = 0x000400, length = 0x000400
   RAMLS0           : origin = 0x008000, length = 0x000800
   RAMLS1           : origin = 0x008800, length = 0x000800
   RAMLS2           : origin = 0x009000, length = 0x000800
   RAMLS3           : origin = 0x009800, length = 0x000800
   RAMLS4           : origin = 0x00A000, length = 0x000800
   RAMLS5           : origin = 0x00A800, length = 0x000800
   RAMLS6           : origin = 0x00B000, length = 0x000800
   RAMLS7           : origin = 0x00B800, length = 0x000800
   RAMLS8           : origin = 0x014000, length = 0x002000  // When configured as CLA program use the address 0x4000
   RAMLS9           : origin = 0x016000, length = 0x002000  // When configured as CLA program use the address 0x6000

   //RAMLS8_CLA    : origin = 0x004000, length = 0x002000  // Use only if configured as CLA program memory
   // RAMLS9_CLA    : origin = 0x006000, length = 0x002000  // Use only if configured as CLA program memory

   RAMGS0           : origin = 0x00C000, length = 0x002000  //可以DMA访问
   RAMGS1           : origin = 0x00E000, length = 0x002000  //可以DMA访问
   RAMGS2           : origin = 0x010000, length = 0x002000
   RAMGS3           : origin = 0x012000, length = 0x002000  //可以DMA访问

   /* Flash Banks (128 sectors each) */
   FLASH_BANK0     : origin = 0x080002, length = 0x1FFFE
   FLASH_BANK1     : origin = 0x0A0000, length = 0x20000
   FLASH_BANK2     : origin = 0x0C0000, length = 0x20000
   FLASH_BANK3     : origin = 0x0E0000, length = 0x20000
   FLASH_BANK4     : origin = 0x100000, length = 0x07FFF


   CLATOCPURAM      : origin = 0x001480,   length = 0x000080  //CPU和CLA都能访问
   CPUTOCLARAM      : origin = 0x001500,   length = 0x000080  //CPU和CLA都能访问
   CLATODMARAM      : origin = 0x001680,   length = 0x000080  //CPU CLA DMA都能访问
   DMATOCLARAM      : origin = 0x001700,   length = 0x000080  //CPU CLA DMA都能访问

   RESET            : origin = 0x3FFFC0, length = 0x000002
}


SECTIONS
{
   codestart        : > BEGIN
   .text            : >> FLASH_BANK0 | FLASH_BANK1, ALIGN(8)
   .cinit           : > FLASH_BANK0, ALIGN(8)
   .switch          : > FLASH_BANK0, ALIGN(8)
   .reset           : > RESET, TYPE = DSECT /* not used, */

   .stack           : > RAMM1
   .bss             : > RAMLS5
   .bss:output      : > RAMLS3
   .init_array      : > FLASH_BANK0, ALIGN(8)
   .const           : > FLASH_BANK0, ALIGN(8)
   .data            : > RAMLS5  | RAMLS6
   .sysmem          : > RAMLS4


   ramgs0 : > RAMGS0
   ramgs1 : > RAMGS1
   ramgs2 : > RAMGS2
   CLADATARAM :>  DMATOCLARAM
//   .scratchpad      : > RAMLS2
   .bss_cla         : > RAMLS2
   GROUP
   {
       .TI.ramfunc
       ramfuncs
       dclfuncs


    }                   LOAD = FLASH_BANK0,
                        RUN = RAMLS0|RAMLS1,
                        LOAD_START(RamfuncsLoadStart),
                        LOAD_SIZE(RamfuncsLoadSize),
                        LOAD_END(RamfuncsLoadEnd),
                        RUN_START(RamfuncsRunStart),
                        RUN_SIZE(RamfuncsRunSize),
                        RUN_END(RamfuncsRunEnd),
                        ALIGN(8)


   GROUP
    {
        isrcodefuncs


    }    LOAD = FLASH_BANK1,
         RUN =  RAMLS3,
         LOAD_START(isrcodefuncsLoadStart),
         LOAD_SIZE(isrcodefuncsLoadSize),
         LOAD_END(isrcodefuncsLoadEnd),
         RUN_START(isrcodefuncsRunStart),
         RUN_SIZE(isrcodefuncsRunSize),
         RUN_END(isrcodefuncsRunEnd),
         ALIGN(8)


 Cla1Prog       :  LOAD = FLASH_BANK1,
                   RUN = RAMLS8,
                   LOAD_START(Cla1ProgLoadStart),
                   RUN_START(Cla1ProgRunStart),
                   LOAD_SIZE(Cla1ProgLoadSize),
                   ALIGN(4)
 .const_cla     :  LOAD = FLASH_BANK1,
                   RUN = RAMLS2,
                   RUN_START(Cla1ConstRunStart),
                   LOAD_START(Cla1ConstLoadStart),
                   LOAD_SIZE(Cla1ConstLoadSize),
                   ALIGN(4)


CLAscratch  :
                { *.lib(CLAscratch)
                 . += CLA_SCRATCHPAD_SIZE;
                 *.lib(CLAscratch_end) } > RAMLS1




}

/*
//===========================================================================
// End of file.
//===========================================================================
*/

谢谢TI的工程师,还请赐教!