對Linux CAN驅動的理解(1)

2021-07-15 19:26:31 字數 919 閱讀 2166

在ti的am335x系列

cortext-a8

晶元中,can模組採用

d_can

結構,實質即兩路

can介面。

在此分享一下對基於am335x的

linux can

驅動原始碼的理解。下面來分析它的驅動原始碼及其工作方式。

在linux

核心原始碼中,

can裝置驅動檔案如下:

drivers/net/can/d_can/d_can_platform.c

drivers/net/can/d_can/d_can.c

drivers/net/can/d_can/d_can.h

首先分析d_can_platform.c

檔案,驅動執行時,也是先從這裡開始。首先是驅動入口函式:

module_init(d_can_plat_init);

static int __init d_can_plat_init(void)

printk(kern_info d_can_drv_desc "\n");

return platform_driver_register(&d_can_plat_driver);

在驅動入口函式d_can_plat_init()

中,使用

platform_driver_register(&d_can_plat_driver)將結構體變數d_can_plat_driver

註冊為平台驅動。

static struct platform_driver d_can_plat_driver = 

驅動雜記1 對驅動物件,裝置物件,裝置棧的理解

windows核心採用的是物件導向的程式設計方式,但使用的確是c語言。windows核心認為許多東西都是 物件 比如乙個驅動乙個檔案乙個裝置,物件 相當於乙個基類。乙個驅動物件代表了乙個驅動程式,或者說乙個核心模組。驅動物件結構如下 typedef struct driver objectdrive...

wifi驅動的理解(1) 驅動架構

在分析wifi驅動前,分享一下個人對linux驅動的一些了解,其實縱觀linux眾多的裝置驅動,幾乎都是以匯流排為載體,所有的資料傳輸都是基於匯流排形式的,即使裝置沒有所謂的匯流排介面,但是linux還是會給它新增一條虛擬匯流排,如platform匯流排等 介於wifi的驅動實在是太龐大了,同時又是...

對PLC的理解 1

昨晚電工實訓b本來以為就是焊焊板子,沒想到老師居然帶我們學起了plc,記錄一下plc學習過程,基本的知識,不予記錄,將一些值得注意的點或者不容易理解的點寫下來 plc的工作流程 輸入掃瞄 rightarrow 程式執行 rightarrow 輸出掃瞄,這就意味著plc對於輸入輸出都是統一掃瞄統一輸出...