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.

如何进入汇编中断程序中的汇编宏单元进行调试?



如何进入汇编中断程序中的汇编宏单元进行调试?

可以在c语言跳转进入的汇编中断程序中进行调试,可以单步执行一条汇编宏指令,但是想进入宏汇编程序中 进行调试,请问怎么办?

谢谢

  • 你好!

    C2000的算法库使用宏的方式放在.h文件中,调试时候是不能跳到.h文件中的,因为宏不是代码,仅仅是符号的替代。

    如你所说,只能进行汇编级别的调试,不能进行C级别的调试。

  • 那个宏是汇编语言写的,后缀也是.asm,不可以进入那个宏调试吗?我在那个宏里修改了一条语句,得不到我要的结果。可是我讲那个修改过的宏在程序里取代那个宏指令之后,运行,发现可以得到我要的那个结果,请问这是怎么回事?应该在宏里修改是可以的,为什么运行不行,非要把那个宏里的程序抄过来代替那条宏指令之后才可以得到我要的结果呢?

    谢谢解答!

  • .asm是汇编语言的文件。

    建议楼主给我们把例子贴上,尽量简短,不要贴整个大段大段的代码,谢谢!

  • 宏:

    PWMDRV_LLC_ComplPairDB .macro n

    _PWMDRV_LLC_ComplPairDB_Duty:n:   .usect "PWMDRV_LLC_ComplPairDB_Section",2,1,1 ; input terminal for PWM duty percentage
    _PWMDRV_LLC_ComplPairDB_Period:n:  .usect "PWMDRV_LLC_ComplPairDB_Section",2,1,1 ; input terminal for PWM period value

      MOVW DP, #_PWMDRV_LLC_ComplPairDB_Duty:n:  
      MOVL XAR0, @_PWMDRV_LLC_ComplPairDB_Duty:n: 
      MOVL XAR1, @_PWMDRV_LLC_ComplPairDB_Period:n: 

      MOVL ACC, *XAR1
      SFR  ACC, #14                  ;  MOVW DP, #_EPwm:n:Regs.TBPRD
      MOV  @_EPwm:n:Regs.TBPRD, AL     

      MOVL XT, @_EPwm:n:Regs.TBPRD
      QMPYL ACC, XT, *XAR0                              
      SFR  ACC, #8         

      MOVW DP, #_EPwm:n:Regs.CMPA
      MOV  @_EPwm:n:Regs.CMPA.half.CMPA, AL  
       
        .endm

    调用宏的汇编程序:(汇编程序

    .cdecls   C,LIST,"DSP2833x_Device.h"
    .include "PWMDRV_LLC_ComplPairDB.asm"
    _PWM_ISR:

      .if(INCR_BUILD = 2)

      
      PWMDRV_LLC_ComplPairDB 1;宏调用
      
     .endif

    如果只执行“汇编程序”,得到的结果和将“汇编程序”中的宏调用指令用具体的宏汇编代替后的结果,两者不一致,不知道为什么!!!

    请给予解答!谢谢!

  • 楼主这个问题解决没?

    macro 和普通的汇编不太一样,CCS编译的时候不支持增量编译,需要全部清空project后重新编译。

    这可能是导致“我在那个宏里修改了一条语句,得不到我要的结果。可是我讲那个修改过的宏在程序里取代那个宏指令之后,运行,发现可以得到我要的那个结果”的原因。

    楼主也可以看看反汇编,看看是为什么导致。

  • 我的程序是在CCS3.3下编的,目的是在EPWM1A端口产生一个波形,为了便于请教问题,我把程序付出来。因为被程序搞得有些头疼,就改名为caodao文件。

    这个程序的目的是通过EPWM1A口产生一个方波信号。

    在中断程序HVLLC_DPL_ISR.asm程序中用到了一个PWMDRV_LLC_ComplpairDB.asm 宏文件。我经过实验发现,将这个宏文件放入到程序include文件夹中和放到SRC文件夹中,编译运行后的结果是不一样的。请问这是什么原因呢?

     

    caodan.rar
  • 补充下,那个程序我忘看改个句子了,程序重新 粘贴。

    你说那个增量编译不行,其实是可以的。

    可以通过修改include里的宏文件来编译运行,得到不同的结果。不知道你说的增量编译是不是CCS5.2里的“小锤子”。

    顺便问下,你说的反汇编窗口,就是在汇编程序里能显示指针等信息的窗口,怎么设置出来,以前知道,现在忘了,谢谢!

    caodan.rar
  • 经过调试,你说的macro修改后,需要清空project的说法是对的。谢谢 !

  • 恩。楼主问题原因找出来没?

    我做了一下验证试验。

    1、这是新手容易忽视的,所以提醒一下。

    macro可以放在.h文件或者.asm文件中;当放在.h文件中的时候,修改.h文件后直接进行增量编译的时候,编译器并不会认为该.h文件被修改,需要重新完全编译(如附件)

    2、关于楼主您谈到的“将这个宏文件放入到程序include文件夹中和放到SRC文件夹中,编译运行后的结果是不一样的"

    我没有发现,如附件,楼主可以重新做一下实验,比对一下汇编下机器码是否相同。(如附件)

    111.zip