当前位置: 代码迷 >> 综合 >> 【Linux驱动开发】字符设备驱动开发基础步骤
  详细解决方案

【Linux驱动开发】字符设备驱动开发基础步骤

热度:85   发布时间:2024-01-24 22:23:19.0

一、基础介绍

设备: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