驱动程序配置及编译步骤
1、编写驱动程序:
例如:
#include <linux/module.h>
#include <linux/printk.h>
MODULE_DESCRIPTION("Kernel module architecture"); //驱动描述
MODULE_LICENSE("GPL");//驱动遵守的协议
MODULE_VERSION("1.0");//驱动的版本
MODULE_AUTHOR("GZ@1961"); //驱动的开发者
static int __init gz1961_init(void)
{
//在驱动中打印信息,使用printk,int printk(const char *fmt, ...) 它跟printf类似
//printk(KERN_INFO "gz1961_init\n"); //在执行insmod 时,该输出未显示出来,原因在于printk在使用时,有优先级设置
//优先级要大于控制台设置的消息等级
printk("gz1961_init\n");
return 0;
}
//释放驱动中申请和注册的资源
static void __exit gz1961_exit(void)
{
printk("<6>" "gz1961_exit\n");
}
module_init(gz1961_init);
module_exit(gz1961_exit);
2、编写makefile(注意修改路径):
# Makefile for the kernel gec6818_led device drivers.
# led_module.ko
obj-m += led_module.o
#设置内核源码的路径和编译工具链接路径
KERNELDIR:=/home/cheng/software/6818GEC_v3/kernel
CROSS_COMPILE:=/home/cheng/software/6818GEC_v3//prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-
PWD:=$(shell pwd)
default:
$(MAKE) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o *.order .*.cmd *.ko *.mod.c *.symvers *.tmp_versions
3、执行编译命令:make

浙公网安备 33010602011771号