最近在学习讯为的linux驱动,学习了接近两个月的时间,一直对设备注册和驱动注册方式方法有一些模糊,今天刚注册CSDN,第一篇文章就理清一下设备注册和驱动注册的思路,方便后面的学习,仅仅个人理解:
1.设备注册
设备注册方式:
1、以module方式注册设备:这个是教程开始讲解的,大概目的是为了让学者对设备 注册有更加深刻的认识,而非项目实际中运用方法。
2、采用虚拟平台方式注册设备(目前用的最多的也是这种):
a.进入kernel文件目录,进入你想将设备添加到的目录,vim Kconfig 命令添加你需要添加的设备,例如:vim drivers/char/Kconfig
config LEDS_CTL
bool “Enable LEDS config”
default y
help
Enable LEDS config
b.进入平台文件,添加设备结构体:vim arch/arm/mach-exynos/mach-itop4412.c
#ifdef CONFIG_LEDS_CTL
struct platform_device s3c_device_leds_ctl = {
.name = “leds”,
.id = -1,
};
#endif
和
#ifdef CONFIG_LEDS_CTL
&s3c_device_leds_ctl,
#endif
c.进入kernel根目录,make menuconfig命令进入配置界面,勾选你刚才添加的设备,退出保存,最后 make zImage,生成zImage,重新烧写开发板zImage文件,至此,设备注册完成。
2.驱动注册:
1.虚拟总线驱动注册函数platform_driver_register(struct platform_driver *)
struct platform_driver {
int (*probe)(struct platform_device *);
int (*remove)(struct platform_device *);
void (*shutdown)(struct platform_de