打印
[嵌入式linux]

IMX6ULL开发平台Linux-LED实验(三)

[复制链接]
473|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linzhao789|  楼主 | 2020-8-10 11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
36.5 编写应用测试程序
创建应用测试程序gpioled_test.c,内容如下:
#include "stdio.h"
#include "unistd.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "fcntl.h"
#include "stdlib.h"
#include "string.h"
#define LEDOFF 0
#define LEDON 1
/*
* @description : main 主程序
* @param - argc : argv 数组元素个数
* @param - argv : 具体参数
* @return : 0 成功;其他 失败
*/
int main(int argc, char *argv[])
{
        int fd, retvalue;
        char *filename;
        unsigned char databuf[1];
        if(argc != 3){
                printf("Error Usage!\r\n");
                return -1;
        }
        filename = argv[1];
        /* 打开 led 驱动 */
        fd = open(filename, O_RDWR);
        if(fd < 0){
                printf("file %s open failed!\r\n", argv[1]);
                return -1;
        }
        databuf[0] = atoi(argv[2]); /* 要执行的操作:打开或关闭 */
        /* /dev/led 文件写入数据 */
        retvalue = write(fd, databuf, sizeof(databuf));
        if(retvalue < 0){
                printf("LED Control Failed!\r\n");
                close(fd);
                return -1;
        }
        retvalue = close(fd); /* 关闭文件 */
        if(retvalue < 0){
                printf("file %s close failed!\r\n", argv[1]);
                return -1;
        }
        return 0;
}
gpioled_test.c应用测试程序还是比较简单的,就是对LED驱动的打开、关闭、写操作,在运行程序时需要指定设备文件名称和要执行的操作。
36.6 编译运行测试36.6.1 编译LED驱动文件
和前面章节中驱动测试程序一样需要一个Makefile文件,只是将obj-m的值改为gpioled.oMakefile文件内容如下:
KERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga
CURRENT_PATH := $(shell pwd)
obj-m := gpioled.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”命令编译模块,编译完成生成gpioled.ko,如下图所示:
36.6.2 编译应用测试程序
输入如下命令编译应用测试程序:
arm-linux-gnueabihf-gcc  -o  gpioled_test  gpioled_test.c
编译完成后,会生成gpioled_test可执行文件。如下图所示:
36.6.3 运行测试
启动开发板,将编译好的gpioled.ko驱动模块和gpioled_test应用测试文件拷贝到/lib/modules/4.1.15目录下(检查开发板根文件系统中有没有/lib/modules/4.1.15”这个目录,如果没有的话需要自行创建一下。开发板中使用的是光盘资料里面提供的busybox文件系统,光盘资料的“i.MX6UL终结者光盘资料\08_开发板系统镜像\03_文件系统镜像\01_Busybox文件系统”目录下)。输入下面命令加载模块:
depmod
modprobe gpioled
驱动加载成功后,显示下面的信息:
可以看出模块加载成功,打印了一下基本信息。
然后使用gpioled_test应用测试程序来进行测试LED驱动是否可行。执行下面的命令来打开LED灯:
./gpioled_test /dev/gpioled 1
然后观察开发板上的LED红灯是否点亮,如果点亮的话,说明驱动工作正常。
然后输入下面的命令关闭LED灯:
./gpioled_test /dev/gpioled 0
观察LED灯是否熄灭。
卸载驱动使用下面的命令:
rmmod gpioled



使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

636

主题

716

帖子

1

粉丝