这个问题真不想再回答了.dsp2812上电默认是开内部看门狗的. 所以上来先关看门狗就好了.
添加DSP281x_CodeStartBranch.asm到工程中.
;//###########################################################################
;//
;// FILE: DSP281x_CodeStartBranch.asm
;//
;// TITLE: Branch for redirecting code execution after boot.
;//
;//###########################################################################
;//
;// Ver | dd mmm yyyy | Who | Description of changes
;// =====|=============|======|===============================================
;// 1.00| 11 Sep 03 | L.H. | Updated based on D.A source to allow
;// | | | disabling the watchdog before branching to
;// | | | the C init routine. This is useful if the
;// | | | watchdog is timing out before main() is reached.
;//###########################################################################
***********************************************************************
WD_DISABLE .set 1 ;set to 1 to disable WD, else set to 0
.ref _c_int00
***********************************************************************
* Function: codestart section
*
* Description: Branch to code starting point
***********************************************************************
.sect "codestart"
code_start:
.if WD_DISABLE == 1
LB wd_disable ;Branch to watchdog disable code
.else
LB _c_int00 ;Branch to start of boot.asm in RTS library
.endif
;end codestart section
***********************************************************************
* Function: wd_disable
*
* Description: Disables the watchdog timer
***********************************************************************
.if WD_DISABLE == 1
.text
wd_disable:
SETC OBJMODE ;Set OBJMODE for 28x object code
EALLOW ;Enable EALLOW protected register access
MOVZ DP, #7029h>>6 ;Set data page for WDCR register
MOV @7029h, #0068h ;Set WDDIS bit in WDCR to disable WD
EDIS ;Disable EALLOW protected register access
LB _c_int00 ;Branch to start of boot.asm in RTS library
.endif
;end wd_disable
.end
; end of file CodeStartBranch.asm
|