内核驱动最简demo

Posted Li-Yongjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内核驱动最简demo相关的知识,希望对你有一定的参考价值。

hello.c

/**
 * 当一个模块设备驱动被加载到内核时,通常要做的一些事情包括:设备复位,初始化RAM,初始化中断,初始化输入输出端口等。
 * 这些动作在内核空间进行,通过这两个函数进行:module_init 和 module_exit,
 * 它们和用户空间用于安装和卸载模块的命令 insmod 和 rmmod 对应。
 * 也可以说,用户空间命令 insmod 和 rmmod 使用内核空间的函数 module_init 和 module_exit 进行。
*/

#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)

    printk("Hello world!\\n");
    return 0;


static void hello_exit(void)

    printk("Bye, hello world!\\n");


module_init(hello_init);
module_exit(hello_exit);

/**
 * 1. module_init(),module_exit():
 * 实际上 hello_init 和 hello_exit 可以换成任何其他名称。
 * 为了使系统能够正确的识别它们时加载和卸载函数,需要把它们作为 module_init 和 module_exit 的参数
 * 
 * 2. printk():
 * 他和我们熟悉的 printf() 很相似,只不过它只在内核空间有效。
*/

Makefile

obj-m = hello.o

all:
	make -C /lib/modules/$(shell uname -r)/build/ M=$PWD modules
clean:
	make -C /lib/modules/$(shell uname -r)/build/ M=$PWD clean

以上是关于内核驱动最简demo的主要内容,如果未能解决你的问题,请参考以下文章

内核驱动最简demo

arm-linux学习:最简驱动模块

BLDC驱动入门最简教程

BLDC驱动入门最简教程

添加自己的驱动程序到Linux内核(详解)

RK356x U-Boot研究所(驱动篇)4.1 驱动模型DM浅析(以UCLASS_DEMO为例)