網頁

2013年12月18日 星期三

[CCS] Using static library

通常, 我們會把一個專案, 分成幾個小部份, 或稱為模組. 在 firmware 的環境中, 會把它具體表現在 library. 之所以是 static, 是因為它不是 dynamic, 它是和主程式部份連結在一起, 並不是需要的時候才動態載入. Firmware 通常不用動態載入, 因為它需要比較複雜的記憶體管理.

1. 建立 static library

從 File 選項, 選擇 New, 在專案選項中, 選擇 CCS Project. 在 output type, 選擇 Static Library. 在下面的 Project templates 中, 選擇 Empty Project, 稍後再自己加入檔案.

 01-create-library

2. 加入 library 檔案

在左邊的 Project Explorer 窗格中, 找到專案名稱( TrialLib), 然後按右鍵 New/File 加入檔案. 在 File Name 的編輯框中, 輸入 TrialLib.c. 用同樣的方法加入 TrialLib.h

02-add-c-file

3. library 的 .c file 內容

打開 TrialLib.c 的內容, 加入以下內容

#include <stdint.h>
#include <stdbool.h>

unsigned int increment(unsigned int a)
{
    return (++a);
}

unsigned int addition(unsigned a, unsigned int b)
{
    return (a+b);
}

03-edit-c-file

4. library 的 .h 的內容

在 TrialLib.h, 加入以下內容

#ifndef TRIAL_LIB_H
#define TRIAL_LIB_H

unsigned int increment(unsigned int a);

unsigned int addition(unsigned int a, unsigned int b);

#endif

04-edit-h-file

 

5. 編譯 library

在專案名稱上面按右鍵, 選擇 build project. 編譯後的訊息如下圖. 注意在 Project Explorer 中, 增加了 Debug 目錄, 可以在其中找到 TrialLib.lib, 這就是我們所要連結的 library 檔案. 另外, 我們編譯的版本是 debug, 如果選擇 release, 在追蹤程式執行的時候, 將會有無原始碼的警告.

05-make-library

6. 建立主執行專案

從 File 選項, 選擇 New, 在專案選項中, 選擇 CCS Project. 在 output type, 選擇 Executive. 在下面的 Project templates 中, 選擇 Empty Project (with main.c).

06-create-executive

7. 編輯 main.c

在 main.c 中, 加入以下程式碼, 這個專案目前是無法編譯, 還需要加入 triallib.h 的參考, 以及 triallib.lib 做連結

#include <stdint.h>
#include <stdbool.h>

#include "TrialLib.h"

int main(void) {
    volatile unsigned int result, a, b;

    a = 10;
    b = 55;

    result = increment(a);

    result = addition(a,b);

    while (1) ;

}

07-edit-main

 

8. 設定 include path

在專案名稱上按右鍵, 選擇 Properties, 打開專案屬性. 依序打開 Build/Option.

08-include-option

在 Add dir to #include search path ….的右方, 按下 + , 跳出 Add directory path 對話框

09-include-option-folder

按下 Workspace 按紐

10-include-option-folder-selection

選擇 TrialLib 目錄. 按下 OK. 回到對話框. 再按一次 OK, 回到 Include Options 畫面, 再按一次 OK.

9. 加入 library 檔案

在專案名稱上按右鍵, 選擇 Add Files, 出現 Add files to Trial4 的對話框,

11-link-add-files

瀏覽至 TrialLib 的 debug 目錄, 選擇 Triallib.lib, 並按下開啟檔案. 開啟 File Operation 對話框.

12-link-file-location 

選擇 Link to files, 並確定 Create link locations relative to : WORKSPACE_LOC, 然後按下 OK.

這樣會讓 CCS 在連結階段, 自動到 TrialLib 的目錄去尋找 Triallib.lib 這個檔案.

 

10. 重新編譯.

這樣應該就可以編譯成功, 並且執行.

11. 注意事項

1. library 和 executive 的 C/C++ 的選項要一致. 否則在 link 的階段會發生錯誤.

2. 如果不小心修改到 TrialLib 的專案, 並且產生 triallib.lib, 那麼編譯 Trial4 的專案就會含入這個修改.

沒有留言:

張貼留言

請提供您寶貴的意見