112 lines
4.5 KiB
NASM
112 lines
4.5 KiB
NASM
|
;//###########################################################################
|
||
|
;//
|
||
|
;// FILE: F2837xD_CodeStartBranch.asm
|
||
|
;//
|
||
|
;// TITLE: Branch for redirecting code execution after boot.
|
||
|
;//
|
||
|
;// For these examples, code_start is the first code that is executed after
|
||
|
;// exiting the boot ROM code.
|
||
|
;//
|
||
|
;// The codestart section in the linker cmd file is used to physically place
|
||
|
;// this code at the correct memory location. This section should be placed
|
||
|
;// at the location the BOOT ROM will re-direct the code to. For example,
|
||
|
;// for boot to FLASH this code will be located at 0x3f7ff6.
|
||
|
;//
|
||
|
;// In addition, the example F2837xD projects are setup such that the codegen
|
||
|
;// entry point is also set to the code_start label. This is done by linker
|
||
|
;// option -e in the project build options. When the debugger loads the code,
|
||
|
;// it will automatically set the PC to the "entry point" address indicated by
|
||
|
;// the -e linker option. In this case the debugger is simply assigning the PC,
|
||
|
;// it is not the same as a full reset of the device.
|
||
|
;//
|
||
|
;// The compiler may warn that the entry point for the project is other then
|
||
|
;// _c_init00. _c_init00 is the C environment setup and is run before
|
||
|
;// main() is entered. The code_start code will re-direct the execution
|
||
|
;// to _c_init00 and thus there is no worry and this warning can be ignored.
|
||
|
;//
|
||
|
;//###########################################################################
|
||
|
;// $TI Release: F2837xD Support Library v3.05.00.00 $
|
||
|
;// $Release Date: Tue Jun 26 03:15:23 CDT 2018 $
|
||
|
;// $Copyright:
|
||
|
;// Copyright (C) 2013-2018 Texas Instruments Incorporated - http://www.ti.com/
|
||
|
;//
|
||
|
;// Redistribution and use in source and binary forms, with or without
|
||
|
;// modification, are permitted provided that the following conditions
|
||
|
;// are met:
|
||
|
;//
|
||
|
;// Redistributions of source code must retain the above copyright
|
||
|
;// notice, this list of conditions and the following disclaimer.
|
||
|
;//
|
||
|
;// Redistributions in binary form must reproduce the above copyright
|
||
|
;// notice, this list of conditions and the following disclaimer in the
|
||
|
;// documentation and/or other materials provided with the
|
||
|
;// distribution.
|
||
|
;//
|
||
|
;// Neither the name of Texas Instruments Incorporated nor the names of
|
||
|
;// its contributors may be used to endorse or promote products derived
|
||
|
;// from this software without specific prior written permission.
|
||
|
;//
|
||
|
;// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||
|
;// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||
|
;// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||
|
;// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||
|
;// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||
|
;// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||
|
;// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||
|
;// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||
|
;// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
|
;// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
|
;// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
|
;// $
|
||
|
;//###########################################################################
|
||
|
|
||
|
***********************************************************************
|
||
|
|
||
|
WD_DISABLE .set 0 ;set to 1 to disable WD, else set to 0
|
||
|
|
||
|
.ref _c_int00
|
||
|
.global code_start
|
||
|
|
||
|
***********************************************************************
|
||
|
* 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.
|
||
|
;//
|