四 註冊裝置

2021-07-23 03:28:09 字數 1328 閱讀 5733

註冊裝置的結構體platform_device位於linux目錄中的include/linux,使用命令「vim include/linux/platform_device.h」開啟」platform_device」所在檔案。

struct platform_device ;
name代表裝置名稱,通過ls sys/devices會顯示;id表示裝置id,用於插入匯流排並且具有相同name的裝置編號,若只有乙個裝置那麼就為-1;dev為結構體中內嵌的device結構體;u32代表裝置使用的資源資料;resource代表裝置使用的資源陣列。結構體的引數不一定全部使用,對於較為常用的有裝置名name和裝置編號id,以及資源陣列*resource。

結合迅為開發板將裝置新增到平台匯流排上作乙個詳細介紹:

平台檔案位於linux目錄下 arch/arm/mach-exynos中,使用」vim arch/arm/mach-exynos/mach-itop4412.c」開啟平台檔案。對於驅動程式一般可以參考已有的驅動程式,由於led的驅動程式相對簡單,在檔案中查詢」leds_ctl」,仿照這段**加」hello_ctl」:

#ifdef config_hello_ctl

struct platform_device s3c_device_hello_ctl=;

#endif

同時在檔案mach_itop4412.c中再搜尋leds_ctl,查詢裝置初始化**,仿照新增即可:

#ifdef config_hello_ctl

&s3c_device_hello_ctl,

#endif

同時還需要確定一下,是否有」hello_ctl」巨集定義,只有定義這個巨集,在生成核心的時候才能把該驅動編譯進核心。使用「vim drivers/char/kconfig」仿照leds_ctl新增hello_ctl:

config

hello_ctl

tristate "enable hello config"

default y

help

enable

hello config

接著在menuconfig中將其配置好,使用命令make menuconfig,進入device drivers/character devices,空格選擇enable hello config,配置上巨集定義」hello_ctl」,配置後儲存退出,重新編譯核心,燒寫到開發板。

5 註冊裝置

5.1 介紹 註冊裝置使用結構體platform device,該結構體在標頭檔案 vim include linux platform device.h 中 kernel3.0路徑中 5.2 新增裝置到平台匯流排 模仿led驅動 vim arch arm mach exynos mach itop...

裝置註冊 驅動註冊以及雜項裝置註冊之間的關係

1.裝置宣告是在平台檔案 home leizi android itop4412 kernel 3.0 arch arm mach exynos mach itop4412.c中,如下圖,並且裝置名稱是led two.核心編譯之後,s3c device leds ctl被註冊到核心中,並不名稱是le...

字元裝置的註冊

核心中每個字元裝置都對應乙個 cdev 結構的變數,下面是它的定義 struct cdev 乙個 cdev 一般它有兩種定義初始化方式 靜態的和動態的。靜態記憶體定義初始化 struct cdev my cdev cdev init my cdev,fops my cdev.owner this m...