Windows CE串口驅動簡析(4)-PDD層實現:CPdd2410Serial1和CPdd2410Serial2(基於WinCE5.0 SMDK2410 BSP的Serial驅動)

最後就需要實現針對特定串口的CPdd2410Uart的繼承類CPdd2410Serial1和CPdd2410Serial2.分別對應於串口UART0和UART2.
1.CPdd2410Serial1
CPdd2410Serial1主要進行了端口初始化,針對UART0進行IO Port的設置,同時還實現了Modem的一些函數.
(1)構造函數CPdd2410Serial1和析構函數~CPdd2410Serial1
CPdd2410Serial1初始化m_pIOPregs(IO控制寄存器虛擬地址)和fIsDSRSet(DSR屬性).
~CPdd2410Serial1釋放 m_pIOPregs.

2.Init
獲取UART0的串口寄存器基址,映射IO地址空間,獲取邏輯中斷號,獲取DSR,DTR地址,DSR/DTR端口號,最後調用基類Init函數.

3.SetDefaultConfiguration
SetDefaultConfiguration用來配置PORT H,設置引腳功能爲UART0的RXD0,TXD0,GPH6爲DTR,GPH7爲DSR,使能RTS0,CTS0等.

4.InitModem
InitModem直接調用基類InitModem函數.

5.GetModemStatus
GetModemStatus獲取Modem狀態,首先調用基類GetModemStatus,然後讀取DSR端口狀態獲取相應狀態調用事件回調函數.

6.SetDTR
SetDTR用來設置DTR引腳.

2.CPdd2410Serial2
CPdd2410Serial2與CPdd2410Serial1類似,由於DTR,DSR使用GPH6,GPH7(UART2的Rx & Tx),所以DTR,DSR使能的時候不能使用UART2.
除了DTR,DSR部分,其餘實現與CPdd2410Serial1類似.

3.CSerialPDD * CreateSerialObject
CreateSerialObject創建了UART0或UART2的實例(UART1被用作調試串口)返回給MDD層調用.調用方式請見之前的文章:
http://blog.csdn.net/shevsten/archive/2010/06/08/5655749.aspx

4.DeleteSerialObject
對應的還有一個刪除串口實例的函數DeleteSerialObject.

到這裏串口驅動就簡單分析到這裏,簡單介紹了驅動架構和詳細介紹了用戶需要實現的CSerialPDD的繼承類CPdd2410Uart和CPdd2410Serial1/2. 關於MDD和PDD COMMON層的具體實現沒有過多涉及,如有興趣請參考相應代碼.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章