《VxWorks設備驅動開發詳解》筆記——第六章 字符設備驅動+第七章 串口驅動

第六章 字符設備驅動

1.字符設備以字節流的方式對數據進行操作,數據只能順序讀寫。I2C、SPI、UART等接口類型的設備都可以作爲字符設備進行驅動;

2.對於UART設備,建議使用TTY中間層作爲緩衝,以提高設備使用率;

3.SPI的4根信號線:數據輸出線SDOUT、數據輸入線SDIN、片選SCS、時鐘SCK。SPI是一種全雙工的通信工作模式;

4.底層驅動只能提供一種機制,策略需要由用戶自己選擇。

第七章 串口驅動

1.串口是一種常用的、典型的字符設備。因其常用,所以VxWorks在IO子系統層之下提供了一個TTY內核驅動中間層,用於管理串口驅動;

2.TTY中間層存在的必要性:VxWorks將底層驅動中維護的讀寫緩衝區從底層驅動中分離出來,改由內核本身進行維護,這個進行維護的模塊就是TTY中間層。其管理本來應由底層驅動管理的數據讀寫緩衝區,提供回調函數供底層驅動從緩衝區中讀數據以及將從硬件接收的數據緩存入緩衝區中;

3.TTY中間層與底層串口驅動之間的關係:

  • TTY中間層向底層驅動提供兩個內核緩衝區讀寫函數,使得底層驅動可以從TTY層讀取需要通過串口發送的數據以及向TTY層寫入從串口設備接收的數據;
  • 底層驅動向TTY中間層提供一個數據發送觸發函數,從而使得當內核寫緩衝區從空變爲非空時,可以通知到底層驅動,將這些新存入的數據發送出去。(注意:要求底層驅動發送觸發函數和實際數據發送函數在實現上必須做到:一旦被觸發,那就必須將寫緩衝區中已存在的所有數據,包括在發送過程中寫入的數據都發送完畢。只有當getchar()返回空時,才結束本次發送操作)

4.底層驅動中自定義數據結構中成員的確定是在驅動編寫的過程中不斷完善的,有些成員要到實際代碼編寫後才能確定,有時爲了實現某種功能,需要添加一個變量進行配合,這時就需要考慮到底是以全局變量還是成員變量的形式存在,可能需要對原先定義的結構增添、更改或刪除成員。因此,驅動自定義數據結構體的設計很少一蹴而就;

5.輪詢是一種盲目的消耗資源方式,與輪詢相比,中斷是一種事件通知機制。當發生一箇中斷時,一定是某個條件得到滿足,而發生一次輪詢時,可以什麼事都沒發生;

6.對於串口設備(以及其他大多數設備),中斷通常有3種來源:

  • 設備接收到新數據;
  • 設備已發送完需發送的數據;
  • 設備在數據收發過程中發生了錯誤;

 

-

 

 

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