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.

[参考译文] TMS320F2.8377万D:在CLA调试期间无法加载符号

Guru**** 2331910 points
Other Parts Discussed in Thread: CONTROLSUITE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/578048/tms320f28377d-cannot-load-symbols-during-cla-debug

部件号:TMS320F2.8377万D
主题:controlSUITE中讨论的其他部件

您好,

我正在尝试调试用于F2.8377万D的应用程序,包括要在CLA上运行的代码。 几周前,这一切都很顺利,但我不得不将项目迁移到Mac OS,现在我正在将一些F2.8377万D代码映射到Flash。  

我的问题:我似乎无法正确加载CLA程序。 当我尝试加载符号时,调试器指向0x0万。 我检查了.map文件,似乎ClA1Prog代码在闪存中,并已正确复制到RAM。 我真的不知道如何解决这个问题。 有什么想法吗?  

下面是我的.cmd文件:  

#ifdef CLA_C

//为将要使用的CLA暂存器区域定义一个大小

//由CLA编译器用于本地符号和临时工

//还强制引用标记的特殊符号

//暂存器是。

CLA_ScratchPad_size = 0x200;

--UNDEF_SYM=__CLA_scratchpad_end

--UNDEF_SYM=__CLA_scratchpad_start

#endif //CLA_C

内存

第0页:

/* BEGIN用于“引导至SARAM”引导加载程序模式 */

  开始      :原点= 0x8万,长度= 0x0.0002万

  RAMM0      :原点= 0x0.0122万,长度= 0x0002DE

  RAMD0      :原点= 0x00B000,长度= 0x0.08万

  RAMD1       :原点= 0x00B800,长度= 0x0.08万

  RAMLS0      :原点= 0x0.8万,长度= 0x0.08万

  RAMGS2      :原点= 0x00E000,长度= 0x0.1万

  重置      :原点= 0x3FFFC0,长度= 0x0.0002万

/*闪存扇区*/

  FLASHA      :原点= 0x8.0002万,长度= 0x001FFE /*片上闪存*/

  FLASHB      :原点= 0x8.2万,长度= 0x0.2万 /*片上闪存*/

  FLASHC      :原点= 0x8.4万,长度= 0x0.2万 /*片上闪存*/

  FLASHD      :原点= 0x8.6万,长度= 0x0.2万 /*片上闪存*/

  FLASHE      :原点= 0x8.8万,长度= 0x0.8万 /*片上闪存*/

  FLASHJ      :原始= 0x0B0000,长度= 0x0.8万 /*片上闪存*/

  FLASHK      :原点= 0x0B8000,长度= 0x0.2万 /*片上闪存*/

  FLASHL      :原点= 0x0BA000,长度= 0x0.2万 /*片上闪存*/

  FLASHM      :原点= 0x0BC000,长度= 0x0.2万 /*片上闪存*/

  FLASHN      :原点= 0x0BE000,长度= 0x0.2万 /*片上闪存*/

第1页:

  Boot_RSVD     : Origin = 0x0.0002万,length = 0x0.012万  /* M0的一部分,引导ROM将使用此堆栈*/

  RAMM1       :原点= 0x0.04万,长度= 0x0.04万  /*片上RAM块M1 */

  RAMLS1      :原点= 0x0.88万,长度= 0x0.08万

  RAMLS2   :原点= 0x0.9万,长度= 0x0.08万

  RAMLS3   :原点= 0x0.98万,长度= 0x0.08万

  RAML4      :原点= 0x00A000,长度= 0x0.08万

  RAMLS5      :原点= 0x00A800,长度= 0x0.08万

  RAMGS0_1      :原点= 0x00C000,长度= 0x0.2万

  RAMGS4      :原点= 0x1万,长度= 0x0.1万

  RAMGS5      :原点= 0x1.1万,长度= 0x0.1万

  RAMGS6.      :原点= 0x1.2万,长度= 0x0.1万

  RAMGS7      :原点= 0x1.3万,长度= 0x0.1万

  RAMGS8.      :原点= 0x1.4万,长度= 0x0.1万

  RAMGS9.      :原点= 0x1.5万,长度= 0x0.1万

  RAMGS10      :原点= 0x1.6万,长度= 0x0.1万

  RAMGS11.      :原点= 0x1.7万,长度= 0x0.1万

  RAMGS12.      :原点= 0x1.8万,长度= 0x0.1万

  RAMGS13.      :原点= 0x1.9万,长度= 0x0.1万

  RAMGS14.      :原点= 0x01A000,长度= 0x0.1万

  Cana_MSG_RAM  :原点= 0x4.9万,长度= 0x0.08万

  CANB_MSG_RAM  :原点= 0x04B000,长度= 0x0.08万

  CLA1_MSGRAMLOW :原点= 0x0.148万,长度= 0x0.008万

  CLA1_MSGRAMHIGH :原点= 0x0.15万,长度= 0x0.008万

  CPU2TOCPU1RAM  :原点= 0x03F800,长度= 0x0.04万

  CPU1TOCPU2RAM  :原点= 0x03FC00,长度= 0x0.04万

}

章节

  Ramfuns     :> RAMM0   页面= 0

  cinit      :> FLASHA   页面= 0,ALIGN (4)

  。销钉      :> FLASHA   页面= 0,ALIGN (4)

  文本       :> FLASHB   页面= 0,对齐(4)

  代码启动     :>开始,  第= 0页

  堆栈      :> RAMM1,  第= 1页

  .ebss       :> RAMGS0_1,  第= 1页/*>LS1 LS2*/

  esysmem     :> RAMGS0_1,  页= 1/* LS2 */

  重置      :>重置,  页面=0,类型= DSECT /*未使用,*/

 /*初始化部分进入Flash */

  econst      :> FLASHC,   页面= 0,对齐(4)

  开关      :> FLASHC   页面= 0,对齐(4)

  Cla1ToCpuMsgRAM :> CLA1_MSGRAMLOW, 第= 1页

  CpuToCla1MsgRAM :> CLA1_MSGRAMHIGH, 页面= 1

   /* CLA特定部分*/

  

/* CLA特定部分*/

  Cla1Prog     :负载= FLASHD,

           运行= RAMLS0,

           load_start (_Cla1funcsLoadStart),

           load_end (_Cla1funcsLoadEnd),

           run_start(_Cla1funcsRunStart),

           load_size (_Cla1funcsLoadSize),

           页面= 0,对齐(4)

  CLADataLS1 :> RAMLS1, Page=1/*从这些部分中删除LS1和LS2 */

  CLADataLS2:> RAMLS2,页面=1

  CLADataLS3:> RAMLS3,页面=1

  CLADataLS4:> RAMLS4,页面=1

  CLADataLS5:> RAMLS5,页面=1

  

  Cla1ToCpuMsgRAM :> CLA1_MSGRAMLOW, 第= 1页

  CpuToCla1MsgRAM :> CLA1_MSGRAMHIGH, 页面= 1

  

  /*以下部分定义适用于SDFM示例*/

  采集通道数:> RAMGS14,页面=1,填充=0x0000

  ExcitationChannels :> RAMGS14,page =1,fill =0x0000

  Cpu1ToCpu2ProcessingInfo:> RAMGS14,page =1,fill = 0x0000

  BLETransmissionBuffer  :> RAMGS4,页面=1,填充=0x0000

  LockInBuffersIn1A  :> RAMGS5 page =1,fill = 0x0000

  LockInBuffersIn1B  :> RAMGS6 page =1,fill = 0x0000

  LockInBuffersIn2A  :> RAMGS7,页面=1,填充=0x0000

  LockInBuffersIn2B  :> RAMGS8,页面=1,填充=0x0000

  Cpu2ToCpu1ProcessingInfo:> RAMGS8,页面=1,填充=0x0000

  Cpu2ToCpu1ProcessingInfo2:> RAMGS8,page =1,fill = 0x0000

  Cpu2ToCpu1FilteringInfo:> RAMGS8,页面=1,填充=0x0000

  LockInBuffersOutI  :> RAMGS9,页面=1,填充=0x0000

  LockInBuffersOutQ  :> RAMGS10,页面=1,填充=0x0000

  LUT :> RAMGS11,页=1,填充=0x0000

  FIRFILTERS:> RAMGS11,页面=1,填充=0x0000

  FilteringProcBuffer:> RAMGS12,页面=1,填充=0x0000

  FilteringOutputBuffers:> RAMGS13,页面=1,填充=0x0000

  /* CPU到CPU消息rams sections */

  Cpu2ToCpu1Msg :>CPU2TOCPU1RAM, page =1.

  Cpu1ToCpu2Msg :>CPU1TOCPU2RAM, page =1.

#ifdef __TI_Compiler_version__

  #if __TI_Compiler_version__>= 1500.9万

    组

    {

      .ti.ramfunc

      {-l F021_API_F2837xD_FPU32.lib}

    }负载= FLASHE,

     RUN = RAMGS2,

     load_start(_RamfuncsLoadStart),

     load_size (_RamfuncsLoadSize),

     load_end (_RamfuncsLoadEnd),

     run_start(_RamfuncsRunStart),

     Run_Size (_RamfuncsRunSize),

     Run_End(_RamfuncsRunEnd),

     页面= 0

  #否则

    组

    {

      Ramfuns

      {-l F021_API_F2837xD_FPU32.lib}

    }负载= FLASHE,

     RUN = RAMGS2,

     load_start(_RamfuncsLoadStart),

     load_size (_RamfuncsLoadSize),

     load_end (_RamfuncsLoadEnd),

     run_start(_RamfuncsRunStart),

     Run_Size (_RamfuncsRunSize),

     Run_End(_RamfuncsRunEnd),

     页面= 0

  #endif

#endif

/*使用IPC API驱动程序时,需要以下部分定义*/  

组:> CPU1TOCPU2RAM,页= 1  

    PUTBUFFER  

    PUTWRITEIDX  

    GETREADIDX  

}

   

组:> CPU2TOCPU1RAM,页= 1

    GETBUFFER:  类型= DSECT

    GETWRITEIDX: 类型= DSECT

    PUTREADIDX : 类型= DSECT

}

#ifdef CLA_C

  /* CLA C编译器部分*/

  //

  //必须分配给CLA具有写入访问权限的内存

  //

  CLAskatch   :

           {*。obj (CLAskatch)

           。 += CLA_ScratchPad_Size;

           *.obj(CLAScatch_end)}> RAMLS4, 页= 1

  .scratchpad   :> RAMLS4,   page = 1

  .bss_CLA :> RAMLS4,   页面=1

  .const_CLA     :LOAD = FLASHC

            RUN = RAMLS4,

            Run_start(_Cla1ConstRunStart),

            load_start (_Cla1ConstLoadStart),

            Load_Size (_Cla1ConstLoadSize),

            页面= 1.

#endif //CLA_C

}

感谢您的帮助!

此致,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Francois,

    如果显示的地址为0x0万,则表示没有问题。 如果要在其中一个CLA任务(__mdebugstop())中放置一个断点,重新生成,加载符号,然后运行C28x,执行是否会在CLA任务中停止?

    如果连接到CLA TAP,加载符号并使从闪存到RAM的memcpy正确发生,则CCS将在遇到任务中的断点时自动从C28x切换到CLA调试TAP
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Vishal,

    感谢您的快速响应。 我恐怕还有其他的问题。。。 我不能运行CLA。 如果我尝试运行它,我会收到错误信息:

    无法运行目标CPU:(错误-2060 @ 0x0)设备运行时无法完成请求的操作。 停止设备,然后重试此操作。 (仿真软件包6.0 .579.0)

    有什么建议?

    最佳,

    François。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Vishal,

    我仍然坚持这个问题。 您对如何继续有任何想法吗?

    感谢你的帮助。

    最佳,

    弗朗索瓦。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Francois,

    抱歉,我没有看到您之前的回复。

    Francois-Patou 说:
    无法运行目标CPU:(错误-2060 @ 0x0)设备正在运行时无法执行请求的操作。 停止设备,然后重试此操作。 (仿真包6.0 .579.0)

    您不能运行CLA,即切换到CLA调试分路器并按播放,它将不起作用。 您必须在其中一个CLA任务中遇到断点(__mdebugstop())。 您的任务似乎没有被触发。

    您是否可以尝试CLA数学库中的一个示例-它们都具有闪存构建配置。 至少我们可以确保这不是某种MacOS问题。  C:\ti\controlSUITE\libs\math\clamath\v4_02_00_00\examples