开发环境:VM+Ubuntu
编译环境:linux3.4
交叉编译工具:arm-linux-gcc 4.4.3
GPIO内核驱动程序链接:https://download.youkuaiyun.com/download/ddffyhg/11022291
用户应用程序链接:https://download.youkuaiyun.com/download/ddffyhg/11022286
注意:开发板的linux的版本和pc端Ubuntu的版本可以不一致,但是得与编译驱动的linux内核版本一致
开发板:linux 3.4
pc端下载的linux内核:/home/linux/Documents/lichee/linux3.4
1.物理连接如下:
硬件平台使用的是nanopi-m1,GPIO输出引脚对应的物理引脚是pin7
LED灯正极---------->PIN7(linux 213引脚)
LED灯负极---------->GND
2.在PC端lichee/linux3.4/drivers/char/目录下放置gpio的驱动文件gpio.c
3.修改Makefile文件,在文件末尾添加
obj-m += gpio.o
4.在lichee目录下重新编译内核
./build.sh -p sun8iw7p1 -b nanopi-h3 -m kernel
编译成功后,在lichee/linux3.4/drivers/char/目录下会生成gpio.ko文件
5.将gpio.ko文件拷贝至开发板
gpio.ko文件为编译通过的驱动文件,app.c文件为对应的用户应用程序。
6.挂载内核模块:
insmod gpio.ko
查看内核模块列表:
lsmod
查看是否有设备节点:
ls /dev/gpio*
编译应用程序:
gcc -o app app.c
执行应用程序:
./app
运行结果:
由于手头没有LED灯,使用传感器的电源指示灯代替:
卸载内核模块:
rmmod gpio
实现GPIO内核驱动模块的控制功能。