猫言猫语

严以律己·宽以待人·自强不息·知行合一

从头编写 Linux RGB Led 驱动(一)

| 从头编写 Linux RGB Led 驱动(一)已关闭评论

我手里有一个山寨的三色二极管,大概长的是这样的模样,我要把它直接插到 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

轻轻松松,这个内核模块已经开始工作了

评论已关闭。