本节主要介绍如何在平台总线中注册设备
1. 设备注册需要用到结构体
platform_device
该结构体的头文件为:include/linux/platform_device.h
主要是用来定义设备的名称、子设备编号。具体结构如下所示:参数说明
“name”:设备名称,驱动初始化前需要和注册驱动的”name”字段匹配参数
“id”:表示子设备编号,一个设备额如果有多个子设备,则需写入子设备数量,如果只有一个则用-1表示。
“device”:表示结构体内嵌的设备结构体。
“num_resource”:表示设备使用的资源数组。
2. 设备注册流程
- 在平台文件中注册设备
平台文件路径为:arch/arm/mach-exynos/mach-itop4412.c(内核源码路径下)。具体注册操作如下:
#ifdef CONFIG_LED_CTL
struct platform_device s3c_device_led_ctl = {
.name = "led",
.id = -1,
};
#endif
- 将宏定义的LED_CTL添加到drivers/char/Kconfig
config LED_CTL
bool "Enable LED config"
default y
help
Enable LED config
添加完后使用make menuconfig即可查看到新添加进内核的新选项,如下图所示:
- 打开平台文件:arch/arm/mach-exynos/mach-itop4412.c ;添加led设备的代码:
#ifdef CONFIG_LED_CTL
&s3c_device_led_ctl,
#endif
3. 重新编译内核,重新烧写内核到开发板
重启开发板使用命令ls /sys/device/platform
,查看到新注册的”led“设备。如下图所示
参考:
itop4412驱动实验手册