建立一个ccs7.4的汇编工程(以TMS320F28335为例)


1.在窗口的空白处右键——New——CCS Project,出现下面窗口:

 

 2.在窗口中输入自己芯片型号,这里以TMS320F28335为例;

3.在窗口中点击,选择自己的仿真器型号,这里以

Texas Instruments XDS100v2 USB Debug Probe为例;

4.在窗口输入工程名firstasm;

 

5.在窗口选择编译器版本,这里选Tl v16.9.6.LTS;

6.在窗口中选择Empty Assembly-only Project之后点击Finsh之后可以在Project Explorer窗口中看到我们刚建立的空工程:

7.接着添加工程源文件:点击工程名——右键——New——Source File,出现下面窗口:

 

 8.在中输入源文件名main.asm;

 

9.在中选择None——点击Finish;

 

下面是关键步骤,让工程编译成功关键:

首先分析:工程建立好后会自动将28335_RAM_lnk.cmd文件放到工程中,这个CMD文件是将DSP配置为boot to SARAM的引导模式(即我们通常调试DSP的模式)。该CMD文件中:

。。。

   BEGIN      : origin = 0x000000, length = 0x000002     /* Boot to M0 will go here                      */

。。。

/* Setup for "boot to SARAM" mode:
The codestart section (found in DSP28_CodeStartBranch.asm)
re-directs execution to the start of user code. */

    codestart        : > BEGIN,     PAGE = 0

 。。。

上面这两句语句指明了程序入口地址为0x00 0000,且入口标签为code_start。要满足上面的条件有两种解决方式:

方式一:将文件DSP28_CodeStartBranch.asm(注意这个文件的代码在文章末位有)添加到工程中,之后在main.asm中添加如下语句即可,代码如下:

.global _c_int00
_c_int00:
NOP
NOP

ESTOP0

方式二:直接在main.asm中添加代码:

code_start:
NOP
NOP
ESTOP0

 

附录:DSP28_CodeStartBranch.asm的代码:

;// TI File $Revision: /main/1 $
;// Checkin $Date: August 18, 2006 13:45:55 $
;//###########################################################################
;//
;// FILE: DSP2833x_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 DSP2833x 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: DSP2833x Header Files V1.01 $
;// $Release Date: September 26, 2007 $
;//###########################################################################


;***********************************************************************

WD_DISABLE .set 1 ;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.
;//===========================================================================

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM