這裡簡單總結下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目錄下會有兩個檔案,...