1. 程式人生 > >SylixOS 驅動調試軟件使用說明

SylixOS 驅動調試軟件使用說明

不能 .net 清單 過程 初始化 使用手冊 實現 使用步驟 nio

1.適用範圍

本文檔適用於使用SylixOS進行驅動模塊開發的客戶人員和技術工程師。

2.工作準備

BSP驅動開發軟件;

CAN驅動模塊代碼;

CAN應用程序測試代碼。

3.原理概述

翼輝BSP驅動開發軟件是一種用於調試驅動程序的軟件庫,它通過替換系統IO接口,利用軟件庫內的中間線程做中轉,將內核態的驅動程序構建為用戶態,使驅動程序的調試如普通應用程序一樣簡單。

4.使用說明

下面以AM4378板卡的CAN設備驅動為例,說明BSP驅動開發軟件的使用過程。使用步驟如下:

4.1構建用戶態驅動工程

1.在RealEvo-IDE下創建APP工程(can_debug),創建過程請參考《RealEvo-IDE使用手冊》第2.4章節——創建SylixOS APP工程。

2.創建成功後,將CAN設備驅動代碼拷貝至APP工程內,並將驅動模塊的moudle_init函數替換為應用程序的main函數,其它代碼不變。替換結果如程序清單4. 1所。

程序清單4. 1 APP工程替換結果

int main (int argc, char **argv)
{
    printf("Hello SylixOS!\n");

    /*
     * 打開 CAN0 還是 CAN1 的總線驅動,是在 bspboard.h 中配置
     */
    CAN_CHAN *pcanchan = LW_NULL;
    pcanchan = __canChanCreate(0);
    /* 對應 CAN0 設備 */
    canDevCreate("/dev/can0", pcanchan, 128, 128);

    return (0);
}

4.2替換系統註冊接口

1.將CAN驅動代碼中的系統註冊接口替換為驅動調試庫內相應的接口,CAN驅動需要向系統註冊設備和註冊CAN中斷服務函數,因此替換結果如圖4.1所示。

技術分享圖片

圖4.1 替換CAN系統註冊接口

替換規則是將需要替換函數的前面加上"debug"字符串,其他驅動代碼也是相同規則。

2 .然後在APP程序內添加對應的函數聲明,並進行編譯,CAN驅動需要的函數聲明如程序清單4. 2所示。

程序清單4. 2 函數聲明

extern INT32 debugcanDevCreate(PCHAR pcName,
CAN_CHAN *pcanchan,
UINT uiRdFrameSize,
UINT uiWrtFrameSize);
extern ULONG debugAPI_InterVectorConnect (ULONG ulVector,
                                          POVID pvArg,
                                          CPCHAR pcName);

4.3部署調試庫和用戶態驅動工程

將已有的調試庫文件(libIoDevDebug.so)和編譯好的APP程序下載到目標板卡上,下載步驟為:

1 .使用RealEvo-IDE的一鍵部署功能實現庫文件下載,右鍵驅動調試庫(IoDevDebug)工程,選擇菜單"Properties"打開工程屬性頁,選擇"SylixoS Project→Device Setting"選項卡,可查看和更改部署配置。如圖4.2所示。

技術分享圖片

圖4.2 工程部署設置

1. 在"Device Name"欄裏設置與目標板卡一致的IP地址。

2. 可以在"Upload Setting"欄目裏設置庫文件的本地路徑和將要下載到目標板卡的遠端路徑,庫文件需要下載至目標板的"/lib/"目錄內,選擇默認配置即可。

3. 依次點擊"Apply"和"OK"按鈕設置成功。

4. 設置完成後,右鍵庫文件工程,選擇菜單" SylixOS→Upload"部署。部署成功後,會在目標板的"/lib/"目錄下看到libIoDevDebug.so文件

5. 部署APP程序與部署庫文件類似,只需將右擊庫文件工程替換成右擊APP工程即可。部署成功後,會在目標板的"/apps/"目錄下看到can_dbeug目錄。

4.4 APP工程添加動態鏈接庫

APP工程需要添加調試庫的路徑,調試時才能夠找到調試庫中提供的接口,添加步驟如下:

1. 右擊APP工程(can_debug),選擇菜單" Properties",在彈出窗口上點擊" SylixOS Project"下的" Linker Setting",在工作空間中選擇要添加的庫文件(libIoDevDebug.so),如圖4.3所示。

技術分享圖片

圖4.3 添加動態庫設置

1.添加完成後,在" Library Path"選項卡下可以看到已經加入了庫文件路徑,需要註意的是不能添加"strip/"目錄下的libIoDevDebug.so文件,因為"strip/"目錄下的文件不帶調試信息。

4.5 調試選項配置

調試選項配置步驟如下:

1. 右擊APP工程(can_debug),選擇菜單"Debug As→Debug Configurations",在彈出的窗口中進行以如圖4.4所示操作來新建一個調試項目。

技術分享圖片

圖4.4 新建調試項目

2. 點擊Debugger選項卡,設置添加動態庫路徑,如圖4.5所示。

技術分享圖片

圖4.5 添加動態庫路徑

動態庫路徑是在4.4小節中配置的,此處無法修改,選擇默認即可。

3.配置完成後點擊Debug按鈕即可進入調試界面(確保AM4378板卡正在運行SylixOS)。

4.6 驅動程序調試

4.6.1 調試main函數

點擊"Debug"按鈕後的調試界面如下所示。圖4.6可以看出程序已經進入到CAN設備初始化函數(main函數)、並且可以使用單步執行、進入執行、全速運行等功能。

技術分享圖片

圖4.6 調試main函數

4.6.2調試系統IO接口和中斷服務程序

1. 在__canIoCtl函數內設置斷點,該函數在打開CAN設備時會被調用。

2. 在__canIsr函數內設置斷點,該函數是CAN設備中斷服務函數。

設置斷點位置如圖4.7所示。

技術分享圖片

技術分享圖片

圖4.7 設置斷點位置

3. 點擊RealEvo-IDE菜單欄下的技術分享圖片(Resume)按鈕使程序全速運行,運行結束後CAN設備註冊成功,可以在目標板的shell命令行內使用"devs"命令查看到CAN0設備節點。

4. 執行CAN測試程序,該測試程序會打開CAN0設備,並發送數據產生中斷,在執行的過程中,可以發現程序停在了剛剛設置斷點的位置。如圖4.8所示。

技術分享圖片

圖4.8 打開函數斷點位置

5. 繼續運行,可以看到程序會停在中斷服務程序內,如圖4.9所示。

技術分享圖片

圖4.9 中斷服務程序斷點位置

5. 總結

通過上面的測試可以說明,BSP驅動開發軟件可以實現對驅動模塊的調試,並可以調試中斷服務程序,用戶態的驅動調試結果最終可以回歸到內核態相應的調用位置,以維持系統驅動的功能完整性。


SylixOS 驅動調試軟件使用說明