在CCS (Code Composer Studio) 中, 通常會有以下的目錄及檔案. 這裡簡單的說明目錄和檔案, 並且標示在使用版本控制的時候, 那些檔案需要 check in, 那些不需要.
.settings 目錄
這是一個標準的 Eclipse 目錄, 用來存放 project 的相關設定.
必需 check in.
.ccsproject 檔案
CCS 自訂的專案檔案. 以 HTML 的格式, 記錄 CCS 對這個專案的設定. 以下舉一個例子說明, 某專案的 .ccsproject 檔案內容可能如下, 綠色的部份是另外加上的說明註解
<?xml version="1.0" encoding="UTF-8" ?>HTML 表頭, 說明這是一個 HTML 文件
<?ccsproject version="1.0"?>CCS 自我參考用的版本號碼
<projectOptions>CCS 自我參考用的版本號碼
<deviceVariant value="Cortex M.LM4F120H5QR"/>設備代碼
<deviceFamily value="TMS470"/>設備家族
<deviceEndianness value="little"/>設備屬於 little endian, 低位元組在前面
<codegenToolVersion value="5.0.4"/>Tool Chain 版本
<isElfFormat value="true"/>輸出的 binary 是 elf 格式
<linkerCommandFile value="lm4f120h5qr.cmd"/>連結器的命令檔, 在最後面還會有說明
<rts value="libc.a"/>指定 C 的 run time library
<templateProperties value="id=com.ti.common.project.core.emptyProjectWithMainTemplate,"/>
</projectOptions>
必需 check in.
.cproject
Eclipse 的專案檔案.
必需 check in.
.project
Eclipse 的專案檔案.
必需 check in.
.launches
debug session 時所建立的目錄.
不需 check in.
Debug 目錄
編譯 debug 組態時所建立的目錄.
不需 check in.
Release 目錄
編譯 release 組態時所建立的目錄.
不需 check in.
lm4f120h5qr.cmd
Linker Command file, 不同的處理器, 會有不同的記憶體映射配置. 以下用一個例子說明, 檔案中的註解已經先去除. 綠色的部份是另外加上的說明註解.
--retain=g_pfnVectors 這部份沒有查到正式的資料, 不過可以推測的是, 這是要要求 linker 在做最佳化的時候, 保留這塊變數. 儘管沒有被參考到.
MEMORY 記憶體定義區塊
{
FLASH (RX) : origin = 0x00000000, length = 0x00040000 Flash 的定址空間從 0 開始, 長度為 256 K, 可以讀取執行, 不能寫入
SRAM (RWX) : origin = 0x20000000, length = 0x00008000 SRAM 的定址空間從 0x20000000 開始, 長度為 32K, 可以讀取執行寫入
}
SECTIONS 記憶體子區塊內容定義
{
中斷向量表放在開頭的地方, 其他子區塊循序堆放
.intvecs: > 0x00000000
.text : > FLASH
.const : > FLASH
.cinit : > FLASH
.pinit : > FLASH
.init_array : > FLASH
.vtable : > 0x20000000
.data : > SRAM
.bss : > SRAM
.sysmem : > SRAM
.stack : > SRAM
}
堆疊位址在 SRAM 的最後面, 長度為 512 bytes
__STACK_TOP = __stack + 512;
必需 check in.
startup_ccs.c
實務上, 我們一定也會定義一個中斷向量表, 如同 Linker Command file 內所引用到的, --retain=g_pfnVectors, 這個 g_pfnVectors 就是中斷向量表. 它的內容是各種中斷發生的時候, 所對應到的中斷處理函式.
這個檔案中, 通常也會包含一些預設的 中斷處理函式.
必需 check in.