SylixOS 驅動調試軟件使用說明
本文檔適用於使用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 驅動調試軟件使用說明