嵌入式Win CE中CAN總線控制器的驅動設計與實現
3.3 CAN_IntrThread函數的設計實現
在SJAl000控制器中,報文的發(fā)送和接收是采用中斷方式來完成的。內核函數InterruptInitialize()外部中斷事件和將邏輯中斷號綁定,這一步就會使能該中斷。當該中斷發(fā)生時,ISR就觸發(fā)該事件生效。完成以上工作后,驅動程序中的IST就可以使用WaitForsin-gleObject()函數等待中斷的發(fā)生。中斷處理結束后,IST需要調用InterruptDone()告訴操作系統中斷處理結束。中斷服務線程CAN_IntrThread函數程序流程圖如圖4所示。本文引用地址:http://cafeforensic.com/article/152474.htm
其他的流接口函數根據win cE流接口驅動程序模型進行編寫。
4 驅動程序的封裝及加載
通過上面的工作,能夠編譯得到一個DLL函數,但它的接口函數還沒有導出,還需要告訴鏈接程序需要輸出什么樣的函數。為此,必須建立一個def文件,使用WindoWS下自帶的記事本程序編輯一個文件名為“Can.def”的文件:
最后需要編寫自己的CEC文件。主要是添加一個Build Method,任務是復制注冊表到Win CE的系統目錄下面。加一個bib File,其主要功能是把編譯的can.dll文件添加到系統內核中去。保存寫好的CEC文件,在.Platform Buildm中添加CEC特征到系統選項中去。生成系統時,添加自己的CEC特性,可以包含剛編寫的can驅動程序。
評論