platform裝置驅動框架

2021-05-23 20:58:06 字數 1663 閱讀 5004

這裡簡單總結下platform匯流排的裝置驅動**的框架。

1、建立資料夾platform

2、在資料夾下編寫裝置檔案device.c

#include

#include

#include

#include

#include

#include

module_author("wjb");

module_license("dual bsd/gpl");

static struct platform_device *my_device;

static int __init my_device_init(void)

static void my_device_exit(void)

module_init(my_device_init);

module_exit(my_device_exit);

3、在資料夾下編寫驅動檔案driver.c

#include

#include

#include

#include

#include

#include

module_author("wjb");

module_license("dual bsd/gpl");

static int my_probe(struct device* dev)

static int my_remove(struct device* dev)

static struct platform_driver my_driver = ,

};static int __init my_driver_init(void)

static void my_driver_exit(void)

module_init(my_driver_init);

module_exit(my_driver_exit);

4、makefile檔案

ifneq ($(kernelrelease),)

obj-m := device.o driver.o

else

kdir := /lib/modules/2.6.30-1/build

all:

make -c $(kdir) m=$(pwd) modules

clean:

rm -f *.ko *.0 *.mod.o *.mod.c *.symvers

endif

5、make

執行make命令,將得到device.ko, driver.ko。

6、新增裝置

使用insmod device.ko和insmod driver.ko命令新增裝置。

這時候,在/sys/bus/platform/devices下,我們發現我們新增的裝置my_dev已經存在了。

另外,在/sys/bus/platform/drivers下,我們發現我們新增的驅動my_dev也已經存在了。

在/sys/bus/platform/devices/my_dev/driver下,有裝置my_dev,這說明my_dev裝置和my_dev驅動已經聯絡起來了。

另外,在/sys/bus/platform/drivers/my_dev/device下,有驅動my_dev,這也說明my_dev裝置和my_dev驅動已經聯絡起來了。

platform裝置驅動

platform bus是一種虛擬匯流排,作用就是將裝置資訊和驅動程式進行分離,platform bus會維護兩條線,一條是裝置,一條是驅動。當乙個裝置被註冊到匯流排上面的時候,匯流排會去搜尋對應的驅動,反之如果驅動被註冊到匯流排,匯流排也會去找對應的驅動。描述裝置資訊的方式有2種,一種是通過手動填...

platform驅動框架

裝置結構體 struct dev struct dev dev 定義個裝置結構體變數 static int open struct inode inode,struct file filp static ssize t write struct file filp,const char user b...

linux驅動之platform裝置驅動實驗

platform機制 把硬體相關的 固定的,如板子的網絡卡 中斷位址 和驅動 會根據程式作變動,如點哪乙個燈 分離開來,即要編寫兩個檔案 dev.c和drv.c platform裝置和platform驅動 platform會存在 sys bus 裡面,如下圖所示,platform目錄下會有兩個檔案,...