WCH沁恒单片机
直播中

fansz

8年用户 1236经验值
擅长:制造/封装
私信 关注
[问答]

求助,请求大神分享一下ch563mcu的调试方法

项目到现在已经有3个月了,基于rtos做的项目,目前死于一个计算中,只能串口打日志,目前是计算任务执行一半或者执行几圈后死于任务调度sp赋值中
官方的debug函数没有任何进入迹象
求一个调试方法,或者硬件中断什么的,能让我打印一下日志,看看堆栈指针,内容,pc指针,寄存器值啥的,通过串口再这样调下去项目要夭折了
  

回帖(4)

张清华

2022-5-25 10:21:04
计算任务用到了浮点运算和一个math库的sqrt
举报

王冬梅

2022-5-25 10:21:15
没办法了,今天一整晚都研究怎么调试方便了,自己改了以下函数DataAbort_P 为DataAbortHand
DataAbort
        IMPORT DataAbortHand
                SUB     LR, LR, #8
                STMFD   SP!, {R0-R12, LR}
;                MRS     R1, SPSR
;                STMFD   SP!, {R1}
                BL      DataAbortHand
;                LDMFD   SP!, {R1}
;                MSR     SPSR_CXSF, R1
                LDMFD   SP!, {R0-R12, PC}^
                B       DataAbort
;
总算能进中断了,接下来研究怎么打印寄存器值和指针值了
举报

李川

2022-5-25 10:21:29
可以试一下这个,串口0输出的PC和SP
LDR R0,=0x0040D000
//========SP==========
MOV R2,R13
    STR R2,[R0]
nop
nop
nop
MOV R1,R2,LSR#8
STR R1,[R0]
nop
nop
nop
MOV R1,R2,LSR#16
STR R1,[R0]
nop
nop
nop
MOV R1,R2,LSR#24
STR R1,[R0]
nop
nop
nop
//========PC==========
MOV R2,R15
    STR R2,[R0]
nop
nop
nop
MOV R1,R2,LSR#8
STR R1,[R0]
nop
nop
nop
MOV R1,R2,LSR#16
STR R1,[R0]
nop
nop
nop
MOV R1,R2,LSR#24
STR R1,[R0]
nop
nop
nop
  
举报

陈炜

2022-5-25 10:21:47
问题图片,lr指针减4对应的是 stmfd sp!,{r2}              ; push old task's pc
生成的汇编是 STMDB    sp!,{r2}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分