天天看点

i.MX6ULL终结者设备树下的Platform驱动运行测试

文章目录

    • 1 编译驱动程序
    • 2 编译应用测试程序
    • 3 运行测试

1 编译驱动程序

和前面章节中驱动测试程序一样需要一个Makefile文件,只是将obj-m的值改为led_driver.o,Makefile文件内容如下:

KERNELDIR := /home/topeet/kernel
CURRENT_PATH := $(shell pwd)
obj-m := led_driver.o
build: kernel_modules
kernel_modules: 
        $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:
        $(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
           

首先我们在终端输入两个命令(设置两个环境变量):

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
           

然后执行“make”命令编译模块,编译完成生成led_driver.ko模块文件。

2 编译应用测试程序

应用测试程序直接使用上一章44.3.2编译好的led_test应用程序即可。

3 运行测试

启动开发板,将编译好的led_driver.ko模块文件和led_test应用程序拷贝到/lib/modules/4.1.15目录下(检查开发板根文件系统中有没有“/lib/modules/4.1.15”这个目录,如果没有的话需要自行创建一下。开发板中使用的是光盘资料里面提供的busybox文件系统,光盘资料的“i.MX6UL终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\01_Busybox文件系统”目录下)。输入下面命令加载模块:

depmod
modprobe led_driver
           

驱动加载成功后,在/sys/bus/platform/drivers/目录下查看驱动是否存在,我们在 led_driver.c 中设置 led_driver (platform_driver 类型)的 name 字段为“imx6ul-led”,因此会在/sys/bus/platform/drivers/目录下存在名为“imx6ul-led”这个文件,结果如图 3.1所示:

i.MX6ULL终结者设备树下的Platform驱动运行测试

图 3.1

同理,在/sys/bus/platform/devices/目录下也存在 led 的设备文件,也就是设备树中 gpioled 这个节点,如图 3.2所示:

i.MX6ULL终结者设备树下的Platform驱动运行测试

图 3.2

当设备和驱动匹配成功后,会有如图 46.3.3.3信息输入:

i.MX6ULL终结者设备树下的Platform驱动运行测试

图 3.3

设备和驱动匹配成功后,使用led_test应用程序来测试一下,命令如下:

./led_test /dev/dtsplatled 1		//打开LED灯
./led_test /dev/dtsplatled 0		//关闭LED灯
           

通过这两条命令来验证一下LED的platform平台下的设备和驱动是否正确。

卸载模块命令:

rmmod led_driver //卸载驱动模块

i.MX6ULL终结者设备树下的Platform驱动运行测试