早先的Linux会使用单独的文件注册设备,现在大多是使用引入的虚拟平台,使用虚拟平台来注册设备会容易很多。
如果大家在网上看到大段的注册设备的代码,可简单了解一下,知道有这么个东西就成,不用去深究。不要去学习“屠龙技”,现在基本都是直接在平台文件中注册设备。
如下图所示,使用命令“vim arch/arm/mach-exynos/mach-itop4412.c”,打开平台文件。
如下图所示,仿照LEDS代码添加一个设备“hello_ctl”。
这里还需要确认一下,是否有“HELLO_CTL”宏定义,只有定义了这个宏,在生成内核的时候才会将其编译到内核。
在前面关于 Kconfig 实验中,已经添加了“HELLO_CTL”宏,如下图所示,使用命令“vimdrivers/char/Kconfig ”打开前面定义过“HELLO_CTL”的配置文件。
如下图所示,已经定义。
接着到 menuconfig 中将其配置上,使用命令“make menuconfig”,进入“Device Drivers--->”→“Character devices --->”→“Enable HELLO config”,如下图所示,配置上宏定义“HELLO_CTL”。
配置后保存退出。这样就确认了宏定义“HELLO_CTL”已经出现。
接着再次打开“arch/arm/mach-exynos/mach-itop4412.c”平台文件,添加 hello 设备的代码。
保存退出,重新编译内核,烧写到开发板。
开发板启动之后,使用命令“ls /sys/devices/platform/”可以查看到新注册的“hello_ctl”设备,如下图所示。