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.

关于调试28377S CLA 的一些问题!

Other Parts Discussed in Thread: CONTROLSUITE

调试28377s cla功能的时候发现task1 触发后可以正常执行,程序加入断点触发后可以停在断点,点击运行程序会执行到MSTOP,这些都是正常的,当我在程序中执行完task1 紧接着执行task2 发现程序可以进入task2,无论我task2里加不加断点,程序都会停留在TASK2的首句程序,不会自动执行到MSTOP,我点击全速运行按钮或者单步按钮程序都只会执行一句话,而不会执行到MSTOP,这是为什么啊?搞了好几天了,没查出问题,cmd文件使用的官方flash_cla.cmd,由于电脑加密无法贴出程序,请大家们帮忙解答,会是什么原因?

  • 建议检查一下对应的CLA寄存器,确认CLA确实已经进入了执行task2?

  • 我 LOAD了Symbol   程序触发执行后会停留在task2  的C程序中 可以看到程序运行的光标停留在此处,而且MIRUN寄存器中task2 一直是1 ,正常情况task执行结束后MIRUN会自动清零的,谢谢解答!

  • 我是按照下面这个步骤操作的:

    1,连接C28x,Load program;

    2,连接CLA,Load symbol;

    对象是同一个.out可执行文件

    求解答!可能的原因是什么,按理说只要触发TASK后会自动执行到MSTOP 为什么会停留在程序中不自动执行?

  • 可以把你的两个task的代码拷出来检查一下吗?另外,是否可以顺便把.map文件也一起放上?

  • 你如果同时打开对应的汇编文件查看,是否可以看到程序停留在哪里,具体的语句和地址?这比较像是你的task2没有正确分配地址,你可以检查一下MPC的值是多少吗?上面需要.map文件的目的也是确认代码和内存映射的关系是否正确。

    有没有使用一个CLA例程直接测试?或者关闭task1,仅仅使能task2并触发会怎样?

  • 我尝试把task1可以正常执行的程序 复制到task2中 然后执行task2会出现同样的问题,t我把task2的程序屏蔽掉只执行几句话,还是同样的问题,应该不是task2程序的问题!

    公司电脑是加密的,软件不能拷贝出来! 你和我说下详细点可能的原因我去查查看能不能解决!  谢谢你了!

  • c程序和汇编程序我是同时查看的,运行光标会停留在C和汇编程序中,此时MPC的的值和汇编程序光标停留的地址一样的 ,单步程序可以正常执行,MPC也会保持一致!

    cla例程可以正常执行!单独运行TASK2也会出现同样问题!

  • 你有威信吗,我拍图片发给你帮我看一下,我上传图片老是失败,我的734273802

  • 图片可以看到了吗

  • 停下在首条语句,它的内容具体是什么?

    关于地址和内存映射,我想,如果你不能提供简易代码和.map文件的话,只能请你自己检查task2的MPC是多少,然后看.map文件或者汇编代码以及memory expression里MPC对应的地址(基地址加上MPC作为偏移量)里,是否有正确的代码和内容。

    我没有看到图片,你需要先保存图片,然后在回复的编辑框里,通过点击下图中的“插入/编辑附件”添加图片才能帖出来。

    不过刚刚试了下,好像是这个功能出现了点问题。

  • 这是MAP文件相关数据,执行task2会停留在下面这个赋值语句:

    cla_temp5_fioat=Iq_limit_to_cla;  

    汇编语句对应如下:

    Cla1Task2(),cla1funcsRUNstart,c:

    0000A000;73C0151C  MMOV32  MR0,@0X151C,UNCF

  • 求大神帮我看看,万分感谢!

  • 我的cla运行地址是RAMLS5  地址为0x00A000  测试发现只要运行地址为首地址0x00A000的TASK   被触发后都会停留在首句程序!

    0xA000是LS4,长度为0x800,0xA800是LS5,长度为0x800,你可以把.cmd文件中关于这两个地址的分配情况和Cla Prog的段映射关系发出来检查吗?

    另外,请将CLA初始化代码也一起copy或粘个照片看看,特别是Cla1Regs.MVECT1和Cla1Regs.MVECT2的配置,以及MemCfgRegs.LSxMSEL和MemCfgRegs.LSxCLAPGM两个寄存器的配置。

  • CMD 文件我修改过!谢谢帮我看一下,万分感谢!

  • Okay,你们俩的问题是完全一样的,请参考刚刚我在这里的答复。

    http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/119930.aspx

  • 请仔细阅读我在另外一个帖子里最后的回复,按照建议进行测试,并告知结果,谢谢!

  • 按照你的方法修改后测试正常了!万分感谢!

    还有个问题咨询一下:

    问题1:

    例程中初始化RAMLS0  和RAMLS1  作为CLA的数据空间cmd如下:

    CLADataLS0  : >  RAMLS0 , PAGE =1

    CLADataLS1  : >  RAMLS1 , PAGE =1

    现在我仅初始化了RAMLS0  作为CLA的数据空间修改cmd如下:

    CLADataLS0  : >  RAMLS0 , PAGE =1

    CLADataLS1  : >  RAMLS0 , PAGE =1

    CLADataLS1 这个段是否必须要放在RAMLS1对应的空间, 这样会有影响吗?

    问题2:

    我仅初始化了RAMLS0 作为CLA的数据空间,RAMLS0对应空间长度0x800,在CMD文件中我分配了0x700给RAMLS0,另外0x100分配给RAMLS2 供其它段使用

     RAMLS0   :origin = 0x008000 , length = 0x000700

    //RAMLS1  

      RAMLS2   :origin = 0x008700 , length = 0x001600

    //RAMLS3 

    这样做会有其它影响吗?

  • 多谢更新,关于你的两个问题:

    liu liupeng 说:

    问题1:

    例程中初始化RAMLS0  和RAMLS1  作为CLA的数据空间cmd如下:

    CLADataLS0  : >  RAMLS0 , PAGE =1

    CLADataLS1  : >  RAMLS1 , PAGE =1

    现在我仅初始化了RAMLS0  作为CLA的数据空间修改cmd如下:

    CLADataLS0  : >  RAMLS0 , PAGE =1

    CLADataLS1  : >  RAMLS0 , PAGE =1

    CLADataLS1 这个段是否必须要放在RAMLS1对应的空间, 这样会有影响吗?

    没有影响,CLADataLS1 可以放在LS0~LS5之间的任意一个,如果它们没有被其它段占用的话。同时你需要确保,CLADataLS0和CLADataLS1两个段的大小没有超过RAMLS0 指定的实际内存大小。

    liu liupeng 说:

    问题2:

    我仅初始化了RAMLS0 作为CLA的数据空间,RAMLS0对应空间长度0x800,在CMD文件中我分配了0x700给RAMLS0,另外0x100分配给RAMLS2 供其它段使用

     RAMLS0   :origin = 0x008000 , length = 0x000700

    //RAMLS1  

      RAMLS2   :origin = 0x008700 , length = 0x001600

    //RAMLS3 

    这样做会有其它影响吗?

    地址从0x008000开始的RAMLS0,你已经在上面提到的MemCfgRegs.LSxMSEL和MemCfgRegs.LSxCLAPGM这两个寄存器中配置成了CLA的数据空间后,其长度固定为0x800的内存就只能被CLA作为数据空间使用,比如可以是CLA的.bss和.const等等,但不能被C28x的其它段使用。请参考CLA对应的.cmd文件如下(C:\ti\controlSUITE\device_support\F2837xD\v190\F2837xD_common\cmd文件夹下的2837xD_FLASH_CLA_lnk_cpu1.cmd):

    .scratchpad : > RAMLS1, PAGE = 1
    .bss_cla : > RAMLS1, PAGE = 1
    .const_cla : LOAD = FLASHB,
    RUN = RAMLS1,
    RUN_START(_Cla1ConstRunStart),
    LOAD_START(_Cla1ConstLoadStart),
    LOAD_SIZE(_Cla1ConstLoadSize),
    PAGE = 1


    后续还有新问题,麻烦另起一个独立的帖子,谢谢!

  • 好的,万分感谢你!

  • 请问楼主是怎么解决这个问题的,我目前也遇到相同的问题,CLA任务可以触发但就是无法全速运行,盼复,谢谢!!!
  • 请您将您的问题详细描述后重新发帖,请不要跟踪旧贴,谢谢