在树莓派中添加pin4驱动的步骤
注:以下步骤在虚拟机中进行
1.因为引脚驱动为字符设备,所以需要将引脚驱动文件放进以下目录:
/home/zhaohaip/SYSTEM/linux-rpi-4.14.y/drivers/char
并将驱动代码拷贝进入该文件夹:
cp /mnt/hgfs/1.kernol/pin4driver.c .
2.在该目录下修改Makfile
vi Makefile
以模块(module)方式编译,所以类型为:obj-m
obj-m += pin4driver.o
3.在驱动目录下编译编译
/home/zhaohaip/SYSTEM/linux-rpi-4.14.y
编译命令为:
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make modules
4.将驱动文件拷到树莓派当中
zhaohaip@ubuntu:~/SYSTEM/linux-rpi-4.14.y/drivers/char$ scp pin4driver.ko pi@192.168.10.104:/home/pi
5.将可执行文件拷贝到树莓派中
scp test_kernel pi@192.168.10.104:/home/pi
注:接下来的步骤在CRT中进行
6.下载内核模块,并且查看驱动是否下载成功
pi@raspberrypi:~ $ sudo insmod pin4driver.ko
pi@raspberrypi:~ $
pi@raspberrypi:~ $
pi@raspberrypi:~ $ ls /dev/pin4
/dev/pin4
pi@raspberrypi:~ $ ls /dev/pin4 -l
crw------- 1 root root 231, 0 Feb 19 08:35 /dev/pin4
pi@raspberrypi:~ $
主设备号为231,次设备号为0,与我们代码设置的一致。
static int major = 231;
static int minor = 0;
static char *moudule_name = "pin4";
7.运行其代码
直接运行会出现打开驱动失败,如下:
pi@raspberrypi:~ $ ./test_kernel
open pin4 failed.
reson: Permission denied
其原因为对pin4驱动无权限,需要改变其权限,让所有人都能对其访问。
pi@raspberrypi:~ $ sudo chmod 666 /dev/pin4 //666则是让所有人都能对其有权限
pi@raspberrypi:~ $ ./test_kernel
open success.
8.利用dmesg查看驱动printk打印的内容
pi@raspberrypi:~ $ dmesg |grep pin_4
[ 2728.304412] pin_4 open
[ 2728.304719] pin_4 write