设备驱动之HelloWorld
2015-02-27 11:40
176 查看
早先接触设备驱动开发,便写过一个helloworld,今回首,突然发现不会写了,太可怕,熬夜伤脑啊,赶紧记下。
基本流程:
写hello.c 和 Makefile文件 --->make ——> sudo insmod hello.ko———> dmesg | tail 查看打印的文字 —-> lsmod查看 ———> sudo rmmod hello
插入模块后,/sys/module/下可以看到hello模块
hello.c文件:
Makefile文件:
基本流程:
写hello.c 和 Makefile文件 --->make ——> sudo insmod hello.ko———> dmesg | tail 查看打印的文字 —-> lsmod查看 ———> sudo rmmod hello
插入模块后,/sys/module/下可以看到hello模块
hello.c文件:
#include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void){ printk(KERN_ALERT "Hello , World\n"); //内核空间里没有printf,用printk return 0; } static void hello_exit(void){ printk(KERN_ALERT "Goodbye , World\n"); } module_init(hello_init); module_exit(hello_exit);
Makefile文件:
ifeq ($(KERNELRELEASE),) #KERNELDIR ?= /home/liang/driverModel/linux-3.18.4 #下载的kernel,为编译,无效 KERNELDIR ?= /lib/modules/3.13.0-44-generic/build #当前系统的kernel PWD := $(shell pwd) modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules #make -c 内核路径 M=模块路径 modules modules_install: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install clean: rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions else obj-m := hello.o endif
相关文章推荐
- 设备驱动----1.Linux内核模块-helloworld
- linux设备驱动--HelloWorld
- ubuntu12.04下实现第一个设备驱动模块HelloWorld
- Tiny6410 设备驱动之helloworld
- 实战Linux设备驱动--万事开头难--HelloWorld
- 设备驱动之一---Helloworld
- linux设备驱动--HelloWorld
- Tiny6410 简单的设备驱动helloworld_driver
- Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
- 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的比较和关联
- 关于混杂设备驱动
- Linux ALSA声卡驱动之四:Control设备的创建
- 驱动学习第2天 之 最简单的字符设备驱动testchr
- 写一个块设备驱动15完
- linux驱动学习记录(一)-字符设备框架
- 驱动开发之 设备读写方式:缓冲区方式
- Linux内核大讲堂 (一) 设备驱动的基石驱动模型(5)
- Linux平台总线驱动设备模型
- linux2.6.28-tty设备驱动学习(一)
- linux设备驱动归纳总结(三):5.阻塞型IO实现