一、基础介绍
设备:chrdevbase 虚拟设备
功能:chrdevbase 设备有两个缓冲区,向 chrdevbase 设备的写缓冲区中写入数据,从读缓冲区中读取数据。
文件:
|
c_cpp_properties.json
|
头文件路径配置等
|
|
chrdevbase.c
|
chrdevbase 驱动文件(模块)
|
|
chrdevbaseApp.c
|
chrdevbase测试APP(main函数)
|
|
Makefile
|
编译文件 |
二、驱动文件
chrdevbase.c基础功能函数
1、打开设备函数
2、关闭/释放设备函数
3、驱动入口函数(注册字符设备驱动)
4、驱动出口函数(注销字符设备驱动)
5、向设备写数据函数
6、从设备读数据函数
7、module_init 和 module_exit 指定驱动入口和出口函数
8、LICENSE 和作者信息
9、定义 设备号、设备名
三、测试APP文件
编写测试 APP 就是编写 Linux 应用,需要用到 C 库里面和文件操作有关的一些函数,比如 open、read、write 和 close 这四个函数。
chrdevbaseApp.c基础功能
1、打开设备(open)
2、从设备驱动读出数据(read)
3、向设备驱动写入数据(write)
4、关闭设备(close)
四、Makefile文件
// Linux 内核源码目录,使用绝对路径
KERNELDIR := /home/pjw/linux/Kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek
//通过运行“pwd”命令来获取当前所处路径
CURRENT_PATH := $(shell pwd)
obj-m := chrdevbase.obuild: kernel_modules
//编译模块命令
kernel_modules: $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
五、编译
1、驱动模块编译:make后生成 chrdevbaes.ko 文件。
2、测试APP编译,使用以下命令生成 chrdevbaseApp 的可执行程序。
arm-linux-gnueabihf-gcc chrdevbaseApp.c -o chrdevbaseApp
六、运行
1、加载驱动模块
insmod chrdevbase.ko
2、创建设备节点文件
mknod /dev/chrdevbase c 200 0
3
、
chrdevbase
设备操作测试
./chrdevbaseApp /dev/chrdevbase 2
4、卸载驱动模块
rmmod chrdevbase.ko