了解 SocketCAN CAN 網路的 Linux 統一介面
1. 介紹
過去,Linux 上的 CAN 被視為字元設備,類似於串列埠。CAN 驅動程式只能以點對點 (P2P) 的方式與 CAN 控制器通訊,這表示多個程序不允許存取相同的 CAN 設備,並且單一應用程式無法同時控制多個 CAN 通道。SocketCAN 發佈
2006 年,福斯汽車發佈了開源的 SocketCAN 軟體,它是一個基於 Berkeley Socket API 的網路設備介面。就像主機上的每個網路介面卡 (NIC) 被視為一個或多個網路設備一樣,每個 CAN 通道也被視為一個網路設備。它被定義在一個新的協定家族 (PF) 下:PF_CAN。
|
|
SocketCAN 補丁於 Linux Kernel 2.6.25 版本中引入,此後陸續增加了各種 CAN 控制器驅動程式。
SocketCAN 優勢:
以 Kernel 2.6.25 作為里程碑,我們將資訊整理成表格,讓 SocketCAN 的優勢一目瞭然。
2. SUNCAN SocektCAN 驅動程式
目前,SUNIX SDC 系列:SUNCAN,也擁有自己的 SocketCAN 驅動程式。安裝驅動程式後,模組會放置在以下目錄中:
|
|
網路設備列表
安裝驅動程式後,您將在系統中看到新建立的 SUNCAN 設備(can0, can1),它們被識別為網路設備,就像乙太網路卡 (eno1) 和無線網路卡 (wlp0s20f3) 一樣,如下表和圖所示。
|
|
3. SocketCAN 工具: can-utils
can-utils 是一系列為 SocketCAN 設計的 Linux 命令列工具。它由 Linux-CAN 專案維護並託管在 GitHub 上:
https://github.com/linux-can/can-utils
這套工具廣泛應用於汽車和工業通訊測試。
藉由 can-utils,開發者和工程師可以:
1). 監控和記錄:使用 candump 等工具監控和記錄 CAN 訊框。
2). 資料傳輸:使用 cansend 傳輸 CAN 訊框,或使用 cangen、canfdtest 和 cansequence 產生流量。
3). 重播:使用 canplayer 重播先前記錄的流量,或使用 log2asc 和 asc2log 轉換日誌檔案。
4). 分析:使用 canbusload 分析匯流排性能,並使用 canerrsim 模擬匯流排錯誤。
SUNIX 提供了使用 can-utils 在 CAN 通道之間執行簡單資料傳輸測試的使用者指南。此文件包含在 SUNIX SUNCAN 整合安裝包中,讓客戶能夠快速對 SUNCAN 解決方案進行初步測試。
|
|
4. Socket 程式設計
由於 SocketCAN 是基於 Socket API,其編碼方式與 TCP/IP socket 程式設計相同。這對大多數應用程式開發者來說是一個巨大的優勢,因為 socket 程式設計是網路通訊中廣泛使用的技術,也是大多數開發者已經熟悉的技能。因此,無需花費額外時間學習第三方 API 即可輕鬆上手。
官方 SocketCAN 應用程式開發指南:
Kernel.org:
https://docs.kernel.org/networking/can.html
https://docs.kernel.org/networking/j1939.html
python-can doc:
https://python-can.readthedocs.io/en/stable/
SUNCAN SocketCAN 範例程式碼
|
|
C 範例專案目錄:
|
|
|
|
Python 範例程式碼目錄:
|
|
5. 總結
SocketCAN 提供了卓越的可攜性和通用性。通常情況下,除非使用者的環境運行的是早於 2.6.25 的核心版本,或者是一個沒有內建 SocketCAN 支援的輕量級 Linux 發行版,否則幾乎不可能不使用 SocketCAN。
首先,SocketCAN 允許多個程序同時存取單一 CAN 通道。其次,當使用者希望切換 CAN 硬體時,他們可以無縫切換,無需修改任何軟體。第三,幾乎所有的驗證和測試任務都可以使用 can-utils 完成,無需額外開發。
對使用者來說,這只會帶來優勢——幾乎沒有任何理由選擇難以維護的字元設備驅動程式方法。
了解 SocketCAN CAN 網路的 Linux 統一介面
1. 介紹
過去,Linux 上的 CAN 被視為字元設備,類似於串列埠。CAN 驅動程式只能以點對點 (P2P) 的方式與 CAN 控制器通訊,這表示多個程序不允許存取相同的 CAN 設備,並且單一應用程式無法同時控制多個 CAN 通道。SocketCAN 發佈
2006 年,福斯汽車發佈了開源的 SocketCAN 軟體,它是一個基於 Berkeley Socket API 的網路設備介面。就像主機上的每個網路介面卡 (NIC) 被視為一個或多個網路設備一樣,每個 CAN 通道也被視為一個網路設備。它被定義在一個新的協定家族 (PF) 下:PF_CAN。
|
|
SocketCAN 補丁於 Linux Kernel 2.6.25 版本中引入,此後陸續增加了各種 CAN 控制器驅動程式。
SocketCAN 優勢:
以 Kernel 2.6.25 作為里程碑,我們將資訊整理成表格,讓 SocketCAN 的優勢一目瞭然。
2. SUNCAN SocektCAN 驅動程式
目前,SUNIX SDC 系列:SUNCAN,也擁有自己的 SocketCAN 驅動程式。安裝驅動程式後,模組會放置在以下目錄中:
|
|
網路設備列表
安裝驅動程式後,您將在系統中看到新建立的 SUNCAN 設備(can0, can1),它們被識別為網路設備,就像乙太網路卡 (eno1) 和無線網路卡 (wlp0s20f3) 一樣,如下表和圖所示。
|
|
3. SocketCAN 工具: can-utils
can-utils 是一系列為 SocketCAN 設計的 Linux 命令列工具。它由 Linux-CAN 專案維護並託管在 GitHub 上:
https://github.com/linux-can/can-utils
這套工具廣泛應用於汽車和工業通訊測試。
藉由 can-utils,開發者和工程師可以:
1). 監控和記錄:使用 candump 等工具監控和記錄 CAN 訊框。
2). 資料傳輸:使用 cansend 傳輸 CAN 訊框,或使用 cangen、canfdtest 和 cansequence 產生流量。
3). 重播:使用 canplayer 重播先前記錄的流量,或使用 log2asc 和 asc2log 轉換日誌檔案。
4). 分析:使用 canbusload 分析匯流排性能,並使用 canerrsim 模擬匯流排錯誤。
SUNIX 提供了使用 can-utils 在 CAN 通道之間執行簡單資料傳輸測試的使用者指南。此文件包含在 SUNIX SUNCAN 整合安裝包中,讓客戶能夠快速對 SUNCAN 解決方案進行初步測試。
|
|
4. Socket 程式設計
由於 SocketCAN 是基於 Socket API,其編碼方式與 TCP/IP socket 程式設計相同。這對大多數應用程式開發者來說是一個巨大的優勢,因為 socket 程式設計是網路通訊中廣泛使用的技術,也是大多數開發者已經熟悉的技能。因此,無需花費額外時間學習第三方 API 即可輕鬆上手。
官方 SocketCAN 應用程式開發指南:
Kernel.org:
https://docs.kernel.org/networking/can.html
https://docs.kernel.org/networking/j1939.html
python-can doc:
https://python-can.readthedocs.io/en/stable/
SUNCAN SocketCAN 範例程式碼
|
|
C 範例專案目錄:
|
|
|
|
Python 範例程式碼目錄:
|
|
5. 總結
SocketCAN 提供了卓越的可攜性和通用性。通常情況下,除非使用者的環境運行的是早於 2.6.25 的核心版本,或者是一個沒有內建 SocketCAN 支援的輕量級 Linux 發行版,否則幾乎不可能不使用 SocketCAN。
首先,SocketCAN 允許多個程序同時存取單一 CAN 通道。其次,當使用者希望切換 CAN 硬體時,他們可以無縫切換,無需修改任何軟體。第三,幾乎所有的驗證和測試任務都可以使用 can-utils 完成,無需額外開發。
對使用者來說,這只會帶來優勢——幾乎沒有任何理由選擇難以維護的字元設備驅動程式方法。
了解 SocketCAN CAN 網路的 Linux 統一介面
1. 介紹
過去,Linux 上的 CAN 被視為字元設備,類似於串列埠。CAN 驅動程式只能以點對點 (P2P) 的方式與 CAN 控制器通訊,這表示多個程序不允許存取相同的 CAN 設備,並且單一應用程式無法同時控制多個 CAN 通道。SocketCAN 發佈
2006 年,福斯汽車發佈了開源的 SocketCAN 軟體,它是一個基於 Berkeley Socket API 的網路設備介面。就像主機上的每個網路介面卡 (NIC) 被視為一個或多個網路設備一樣,每個 CAN 通道也被視為一個網路設備。它被定義在一個新的協定家族 (PF) 下:PF_CAN。
|
|
SocketCAN 補丁於 Linux Kernel 2.6.25 版本中引入,此後陸續增加了各種 CAN 控制器驅動程式。
SocketCAN 優勢:
以 Kernel 2.6.25 作為里程碑,我們將資訊整理成表格,讓 SocketCAN 的優勢一目瞭然。
2. SUNCAN SocektCAN 驅動程式
目前,SUNIX SDC 系列:SUNCAN,也擁有自己的 SocketCAN 驅動程式。安裝驅動程式後,模組會放置在以下目錄中:
|
|
網路設備列表
安裝驅動程式後,您將在系統中看到新建立的 SUNCAN 設備(can0, can1),它們被識別為網路設備,就像乙太網路卡 (eno1) 和無線網路卡 (wlp0s20f3) 一樣,如下表和圖所示。
|
|
3. SocketCAN 工具: can-utils
can-utils 是一系列為 SocketCAN 設計的 Linux 命令列工具。它由 Linux-CAN 專案維護並託管在 GitHub 上:
https://github.com/linux-can/can-utils
這套工具廣泛應用於汽車和工業通訊測試。
藉由 can-utils,開發者和工程師可以:
1). 監控和記錄:使用 candump 等工具監控和記錄 CAN 訊框。
2). 資料傳輸:使用 cansend 傳輸 CAN 訊框,或使用 cangen、canfdtest 和 cansequence 產生流量。
3). 重播:使用 canplayer 重播先前記錄的流量,或使用 log2asc 和 asc2log 轉換日誌檔案。
4). 分析:使用 canbusload 分析匯流排性能,並使用 canerrsim 模擬匯流排錯誤。
SUNIX 提供了使用 can-utils 在 CAN 通道之間執行簡單資料傳輸測試的使用者指南。此文件包含在 SUNIX SUNCAN 整合安裝包中,讓客戶能夠快速對 SUNCAN 解決方案進行初步測試。
|
|
4. Socket 程式設計
由於 SocketCAN 是基於 Socket API,其編碼方式與 TCP/IP socket 程式設計相同。這對大多數應用程式開發者來說是一個巨大的優勢,因為 socket 程式設計是網路通訊中廣泛使用的技術,也是大多數開發者已經熟悉的技能。因此,無需花費額外時間學習第三方 API 即可輕鬆上手。
官方 SocketCAN 應用程式開發指南:
Kernel.org:
https://docs.kernel.org/networking/can.html
https://docs.kernel.org/networking/j1939.html
python-can doc:
https://python-can.readthedocs.io/en/stable/
SUNCAN SocketCAN 範例程式碼
|
|
C 範例專案目錄:
|
|
|
|
Python 範例程式碼目錄:
|
|
5. 總結
SocketCAN 提供了卓越的可攜性和通用性。通常情況下,除非使用者的環境運行的是早於 2.6.25 的核心版本,或者是一個沒有內建 SocketCAN 支援的輕量級 Linux 發行版,否則幾乎不可能不使用 SocketCAN。
首先,SocketCAN 允許多個程序同時存取單一 CAN 通道。其次,當使用者希望切換 CAN 硬體時,他們可以無縫切換,無需修改任何軟體。第三,幾乎所有的驗證和測試任務都可以使用 can-utils 完成,無需額外開發。
對使用者來說,這只會帶來優勢——幾乎沒有任何理由選擇難以維護的字元設備驅動程式方法。
了解 SocketCAN CAN 網路的 Linux 統一介面
1. 介紹
過去,Linux 上的 CAN 被視為字元設備,類似於串列埠。CAN 驅動程式只能以點對點 (P2P) 的方式與 CAN 控制器通訊,這表示多個程序不允許存取相同的 CAN 設備,並且單一應用程式無法同時控制多個 CAN 通道。SocketCAN 發佈
2006 年,福斯汽車發佈了開源的 SocketCAN 軟體,它是一個基於 Berkeley Socket API 的網路設備介面。就像主機上的每個網路介面卡 (NIC) 被視為一個或多個網路設備一樣,每個 CAN 通道也被視為一個網路設備。它被定義在一個新的協定家族 (PF) 下:PF_CAN。
|
|
SocketCAN 補丁於 Linux Kernel 2.6.25 版本中引入,此後陸續增加了各種 CAN 控制器驅動程式。
SocketCAN 優勢:
以 Kernel 2.6.25 作為里程碑,我們將資訊整理成表格,讓 SocketCAN 的優勢一目瞭然。
2. SUNCAN SocektCAN 驅動程式
目前,SUNIX SDC 系列:SUNCAN,也擁有自己的 SocketCAN 驅動程式。安裝驅動程式後,模組會放置在以下目錄中:
|
|
網路設備列表
安裝驅動程式後,您將在系統中看到新建立的 SUNCAN 設備(can0, can1),它們被識別為網路設備,就像乙太網路卡 (eno1) 和無線網路卡 (wlp0s20f3) 一樣,如下表和圖所示。
|
|
3. SocketCAN 工具: can-utils
can-utils 是一系列為 SocketCAN 設計的 Linux 命令列工具。它由 Linux-CAN 專案維護並託管在 GitHub 上:
https://github.com/linux-can/can-utils
這套工具廣泛應用於汽車和工業通訊測試。
藉由 can-utils,開發者和工程師可以:
1). 監控和記錄:使用 candump 等工具監控和記錄 CAN 訊框。
2). 資料傳輸:使用 cansend 傳輸 CAN 訊框,或使用 cangen、canfdtest 和 cansequence 產生流量。
3). 重播:使用 canplayer 重播先前記錄的流量,或使用 log2asc 和 asc2log 轉換日誌檔案。
4). 分析:使用 canbusload 分析匯流排性能,並使用 canerrsim 模擬匯流排錯誤。
SUNIX 提供了使用 can-utils 在 CAN 通道之間執行簡單資料傳輸測試的使用者指南。此文件包含在 SUNIX SUNCAN 整合安裝包中,讓客戶能夠快速對 SUNCAN 解決方案進行初步測試。
|
|
4. Socket 程式設計
由於 SocketCAN 是基於 Socket API,其編碼方式與 TCP/IP socket 程式設計相同。這對大多數應用程式開發者來說是一個巨大的優勢,因為 socket 程式設計是網路通訊中廣泛使用的技術,也是大多數開發者已經熟悉的技能。因此,無需花費額外時間學習第三方 API 即可輕鬆上手。
官方 SocketCAN 應用程式開發指南:
Kernel.org:
https://docs.kernel.org/networking/can.html
https://docs.kernel.org/networking/j1939.html
python-can doc:
https://python-can.readthedocs.io/en/stable/
SUNCAN SocketCAN 範例程式碼
|
|
C 範例專案目錄:
|
|
|
|
Python 範例程式碼目錄:
|
|
5. 總結
SocketCAN 提供了卓越的可攜性和通用性。通常情況下,除非使用者的環境運行的是早於 2.6.25 的核心版本,或者是一個沒有內建 SocketCAN 支援的輕量級 Linux 發行版,否則幾乎不可能不使用 SocketCAN。
首先,SocketCAN 允許多個程序同時存取單一 CAN 通道。其次,當使用者希望切換 CAN 硬體時,他們可以無縫切換,無需修改任何軟體。第三,幾乎所有的驗證和測試任務都可以使用 can-utils 完成,無需額外開發。
對使用者來說,這只會帶來優勢——幾乎沒有任何理由選擇難以維護的字元設備驅動程式方法。


