我手里有一个山寨的三色二极管,大概长的是这样的模样,我要把它直接插到 RK3288 Linux 开发板上,然后通过内核模块来控制他,我希望它可以像交通灯那样工作,同时希望通过编写一个驱动程序来入门 Linux 内核模块,这将会是一系列的文章,但最终结果我也不知道能不能写完。
我使用的 kernel 版本是 4.4,使用的是 rockchip 在 github 上的官方下载地址:https://github.com/rockchip-linux/kernel,如果你使用的是其他开发板,也可以从自己的供应商软件仓库去下载内核,假设我们通过 git 把官方 kernel clone 到了 ~/kernel 目录下。
然后我们需要在 drivers 下新增一个名为 rgb_led 目录,并且新建必要的 Makefile 文件和 rgb_led.c 文件,文件内容如下:
obj-y += rgb_led.o
#include
#include
static int __init rgb_led_init(void) {
printk(KERN_ALERT "init rgb led\n");
return 0;
}
static void __exit rgb_led_exit(void) {
printk(KERN_ALERT "exit rgb led\n");
}
MODULE_LICENSE("GPL");
module_init(rgb_led_init);
module_exit(rgb_led_exit);
我们还需要编辑 ~/kernel/drivers/Makefile 文件,在开始的地方添加一行
obj-y += rgb_led/
然后就可以编译并使用这个我们修改过的内核来启动,启动后我们就可以看到提示信息:
# dmesg | grep rgb
init rgb led
轻轻松松,这个内核模块已经开始工作了