九色91_成人精品一区二区三区中文字幕_国产精品久久久久一区二区三区_欧美精品久久_国产精品99久久久久久久vr_www.国产视频

Hello! 歡迎來到小浪云!


Linux 驅動開發——Socket CAN模型


avatar
小浪云 2025-01-06 125

1. 控制器局域網協議 (CAN)

can是指控制器局域網(controller area network)協議。它最初由德國電氣公司博世在1986年開發,主要應用于汽車通信系統。如今,can通信協議已成為iso國際標準化的串行通信協議之一。根據不同的網絡和距離需求,can協議可以配置不同的速度,最高可達1mbit/s。整個can協議被劃分為三個層次,對應于iso模型的不同部分,具體如圖1.1所示:

  1. CAN對象層 (The Object Layer)

    這一層是CAN協議的最高層,負責定義通信的對象及其屬性。它決定了數據在網絡中的結構和組織方式。

  2. CAN傳輸層 (The Transfer Layer)

    傳輸層位于協議的中間層,承擔著數據傳輸的責任。它負責確保數據的可靠傳輸,并處理錯誤檢測和糾正,以保證通信的穩定性和準確性。

  3. CAN物理層 (The Physical Layer)

    物理層是CAN協議的最底層,它定義了數據在網絡中的傳輸方式和電氣特性。這一層面向硬件,負責實際的信號傳輸和接收。

Linux 驅動開發——Socket CAN模型

圖1.1

對象層和傳輸層包括所有由ISO/OSI模型定義的數據鏈路層的服務和功能。 

1.1 對象層的作用范圍包括:

(1)查找被發送的報文。

(2)確定由實際要使用的傳輸層接收哪一個報文。

(3)為應用層相關硬件提供接口

1.2 傳輸層的作用主要:

(1)傳送規則,也就是控制幀結構、執行仲裁、錯誤檢測、出錯標定、故障界定。

(2)總線上什么時候開始發送新報文及什么時候開始接收報文均在傳輸層里確定。

(3)位定時的一些普通功能也可以看作是傳輸層的一部分。

(4)傳輸層的修改是受到限制的。

1.3 物理層的作用:

在不同節點之間根據所有的電氣屬性進行位信息的實際傳輸。當然,同一網絡內,物理層對于所有的節點必須是相同的。盡管如此,在選擇物理層方面還是很自由的。 

2. Linux下Socket CAN驅動模型

Linux下Socket CAN驅動屬于網絡設備的一部分。Linux下Socket CAN分層模型見圖2.1: 

Linux 驅動開發——Socket CAN模型

圖2.1

Linux下Socket CAN的驅動模型見圖2.2:

Linux 驅動開發——Socket CAN模型

圖2.2

3. Socket CAN驅動框架的重要數據結構

3.1 struct net_device_ops結構體

Linux 驅動開發——Socket CAN模型

Struct net_device_ops定義了網絡設備的操作方法,.ndo_open開啟網絡設備的操作,.ndo_stop停止網絡設備,.ndo_start_xmit發送網絡數據,.ndo_change_mtu網絡設備一次最大傳輸單元。

3.2 struct can_frame 結構體

Linux 驅動開發——Socket CAN模型

其中can_id表示can frame的id,can_dlc表示can frame數據的長度,data[CAN_MAX_DLEN]表示攜帶的數據。

3.3 struct platform_driver 結構體

Linux 驅動開發——Socket CAN模型

其中probe是驅動初始化函數入口,初始化本地結構體,remove是驅動卸載函數入口。

4. Linux下NAPI機制

CAN協議所對應的ISO模型見圖1.1:linux下網絡數據接收機制NAPI:混合使用中斷與輪詢,而不使用純粹的中斷事件驅動模型。這樣就提高了系統的性能,當設備產生一個數據接收中斷后,新機制的軟中斷處理函數就會輪詢設備的入口隊列,直到入口隊列中沒有數據了,再開啟中斷。NAPI數據接收的流程為:
a、接收中斷來臨
b、關閉接收中斷
c、以輪詢方式接收所有數據包直到收空
d、開啟接收中斷

NAPI驅動程序各部分的調用關系見圖4.1:

Linux 驅動開發——Socket CAN模型

圖4.1

5. 數據發送接收流程

Linux下Socket CAN在用戶空間提供socket接口,在內核空間實現CAN Frame協議,并協同CAN控制器驅動控制CAN控制器的驅動,實現CAN通信。

5.1 發送流程

Linux 驅動開發——Socket CAN模型

圖5.1

5.2 接收流程

Linux 驅動開發——Socket CAN模型

相關閱讀

主站蜘蛛池模板: 国产精品久久久久久久久久久久久久 | 99爱在线视频 | 久久久噜噜噜久久中文字幕色伊伊 | 成人国产精品久久久 | 美女视频三区 | 国产91在线观看 | 欧美精品91 | 国产视频h | 婷婷国产一区二区三区 | 国产精品久久久 | 久久久久网站 | 精品欧美一区二区三区久久久 | 欧美日韩国产一区二区三区 | 日韩中文一区二区三区 | 青青久草 | 国内精品免费久久久久软件老师 | 成人中文字幕在线观看 | 日日干天天干 | 国产欧美精品区一区二区三区 | 日韩在线播放视频 | 365夜爽爽欧美性午夜免费视频 | 超碰在线播 | 亚洲成a| 久久国产精品偷 | 四虎在线播放 | 国产中文 | 国产成人综合在线 | 毛片a级| 久久在线看 | 涩涩视频网站在线观看 | 自拍视频国产 | 自拍偷拍视频网 | av中文在线观看 | 久久美女网 | 日韩国产欧美在线观看 | av一级毛片| 国产视频一区在线 | aaa精品 | 免费国产视频在线观看 | 欧美888| 亚洲一区二区三区四区五区中文 |