linux设备驱动学习(一)——简单的helloworld模块
生活随笔
收集整理的這篇文章主要介紹了
linux设备驱动学习(一)——简单的helloworld模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在內核驅動中新建hello文件夾
1.需要.c文件與Makefile文件
在..../drivers/hello目錄下新建xxx.c?和Makefile文件
.c文件樣例:
#include <linux/module.h>
#include <linux/kernel.h>
static char *name="likui"; module_param(name,charp,S_IRUGO);
static int count=520; module_param(count,int,S_IRUGO);
static int __init init_hello_module(void) { printk(KERN_INFO"Hello, %s! This is????start %d/n",name,count);?? return 0;?? }
static void __exit exit_hello_module(void) { printk(KERN_INFO "Hello, %s! This is exit/n",name); }
MODULE_LICENSE("Dual BSD/GPL"); module_init(init_hello_module); module_exit(exit_hello_module);
Makefile文件樣例: KVERS = $(shell uname -r)
# Kernel modules obj-m += helloworld.o
# Specify flags for the module compilation. #EXTRA_CFLAGS=-g -O0
build: kernel_modules
kernel_modules: make -C /lib/modules/$(KVERS)/build M=$(CURDIR) modules
clean: make -C /lib/modules/$(KVERS)/build M=$(CURDIR) clean
2.編譯與清除 在hello目錄下執行make編譯,make?clean為清除編譯文件
static char *name="likui"; module_param(name,charp,S_IRUGO);
static int count=520; module_param(count,int,S_IRUGO);
static int __init init_hello_module(void) { printk(KERN_INFO"Hello, %s! This is????start %d/n",name,count);?? return 0;?? }
static void __exit exit_hello_module(void) { printk(KERN_INFO "Hello, %s! This is exit/n",name); }
MODULE_LICENSE("Dual BSD/GPL"); module_init(init_hello_module); module_exit(exit_hello_module);
Makefile文件樣例: KVERS = $(shell uname -r)
# Kernel modules obj-m += helloworld.o
# Specify flags for the module compilation. #EXTRA_CFLAGS=-g -O0
build: kernel_modules
kernel_modules: make -C /lib/modules/$(KVERS)/build M=$(CURDIR) modules
clean: make -C /lib/modules/$(KVERS)/build M=$(CURDIR) clean
2.編譯與清除 在hello目錄下執行make編譯,make?clean為清除編譯文件
make之前
總結
以上是生活随笔為你收集整理的linux设备驱动学习(一)——简单的helloworld模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言结构体指针的使用方法
- 下一篇: linux设备驱动学习(二)——字符设备