平台总线是一种虚拟总线,相对于SPI,IIC,USB等实际物理总线,平台总线为其他没有标准总线的设备挂载提供了条件,另外平台总线的引入也在当驱动更换平台时提供了方便(只需要修改对应的平台的设备资源配置即可)。
两个重要的结构体:platform_device,platform_driver
驱动编写流程:
1.注册设备(修改平台文件kconfig并配置进内核,测试时可手动注册设备,通过查看 /sys/devices/platform目录可查看已经注册的设备)
2.注册驱动
示例:
device_register.c
#include<linux/init.h>
#include<linux/module.h>
/*The header of driver register,include struct ,register function and unregister function about driver*/
#include<linux/platform_device.h>
#define DEVICE_NAME "test_device"
MODULE_LICENSE("Dual BSD/GPL");
//MODULE_AUTHOR("ltx");
static void test_release(struct device *dev)
{
printk("test_module release\n");
}
struct platform_device platform_device_test_module = {
.name = DEVICE_NAME,
.id = -1,
.dev = {
.release=test_release,
},
};
static int __init test_init(void)
{
platform_device_register(&platform_device_test_module);
return 0;
}
static void __exit test_exit(void)
{
platform_device_unregister(&platform_device_test_module);
}
//module enter
module_init(test_init);
//module exit
module_exit(test_exit);
driver_register.c
#include<linux/init.h>
#include<linux/module.h>