建立一個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