MT7688双摄像头双电机驱动小车(4)驱动测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DFSAE/article/details/78819927

主目录:

http://blog.csdn.net/DFSAE/article/details/78715815


这篇是对上一篇写的驱动程序进行测试,这里的测试是写了个简单的应用测试软件,对其接口进行测试。这里的编译固件及安装的过程挺重要,后面的应用软件也是使用这个过程。另外, 在更改原来的目录之后,把摄像头和串口驱动的测试也放到了这篇了。


本篇目录

一.电机驱动测试

1.测试目标

2.测试代码

3.驱动模块测试软件编译

4.驱动模块测试软件的安装及运行

二.摄像头驱动测试

1.硬件连接

2.开启mjpg-streamer

3.测试结果

三.串口测试

1.硬件连接

2.测试


一.电机驱动测试

1.测试目标

这里电机驱动测试代码只是为了测试电机驱动功能是否正常,和双摄像头驱动小车的主线程序无关。
这段测试代码测试了左右电机正转,反转,0-100占空比的调整;以及一些不正确参数的情况。没有测试读取值= =。

2.测试代码

对驱动测试,其实只需要把驱动当做一个文件对待,对它进行读写就可以了。

具体代码如下:

int main(int argc, char *argv)  
{  
    int pwm_fd;  
    int i = 0;

    //打开驱动
    pwm_fd = open(PWM_DEV, O_RDWR);  
    if (pwm_fd < 0) {  
        printf("open pwm fd failed\n");  
        return -1;  
    }

    //向前转测试,转动PWM控制从0-100
    printf("forward test\n");
    buf[0] = buf[2] = 1; //forward  
    for (i = 0; i < 20; i++)
    {
    buf[1] = i*5;
    printf("buf[1]:%d\n", buf[1]);
    buf[3] = 100 - i*5;
    printf("buf[1]:%d\n", buf[3]);
    write(pwm_fd, buf, sizeof(buf));
    sleep(3);
    }

    //向后转测试,转动PWM控制从0-100
    printf("-------------------------\n");
    printf("backward test\n");
    buf[0] = buf[2] = 2; //backward  
    for (i = 0; i < 20; i++)
    {
    buf[3] = i*5;
    printf("buf[3]:%d\n", buf[1]);
    buf[1] = 100 - i*5;
    printf("buf[1]:%d\n", buf[1]);
    write(pwm_fd, buf, sizeof(buf));
    sleep(3);
    }   

    //50%PWM输出
    printf("--------------\n");
    printf("keep test\n");
    buf[0] = buf[2] = 0; //keep
    buf[1] = buf[3] = 50; 
    write(pwm_fd, buf, sizeof(buf));

    //一些错误参数的测试
    printf("--------------\n");
    printf("error dirction arg\n");
    buf[0] = buf[2] = 3; 
    buf[1] = buf[3] = 50;
    write(pwm_fd, buf, sizeof(buf));
    printf("error duty arg\n");
    buf[0] = buf[2] = 1; 
    buf[1] = buf[3] = -1;
    write(pwm_fd, buf, sizeof(buf));
    buf[1] = buf[3] = 101;
    write(pwm_fd, buf, sizeof(buf));

    close(pwm_fd);

    return 0;  
}  

3.驱动模块测试软件编译

注意:这里的编译方式其实就是应用软件的编译方式,做法和这里相同。

1>.把生成好的测试软件的代码放到openwrt/package/目录下。

然后在进入make menuconfig配置环境下,在Utilities->pwm_test,选中*
这里写图片描述

2>.接着执行make/package/软件名/compile V=99

后面两部执行过一次后面重复编译的时候可以省略
make package/软件名/install V=99
make package/index V=99

3>.编译没有报错,完成后生成的固件放在目录openwrt/bin/ramips/packages/base中。

4.驱动模块测试软件的安装及运行

1>.把生成的固件传送到硬件上,目录具体哪里其实无所谓,我放到/package下了。

2>.再在硬件上执行安装命令:opkg install /package/xxx.ipk –force-depends

注:前面的/package是固件放的目录,XXX为编译出来测试程序的名字,因为版本不同名字可能有差异。

3>.运行测试软件,输入命令pwm_test

这个命令在装完后好像就被放到了/user/sbin/目录下了。
控制台打印的信息结果如下,但重要的是看2路PWM的输出和IO控制的数据是否和每个阶段都一样。
这里写图片描述

4>.关于怎么看驱动输出是否正确

最高配置可以配置一个示波器,查看PWM的输出是否正确,IO口是否电平正确。
最低配置可以用一个万用表,测试PWM对地两端的电压,和电源电压的比值就是PWM的占空比;IO则直接用电平观察得到。


二.摄像头驱动测试

1.硬件连接

摄像头采用的是USB免驱的摄像头,因此只要插入到硬件板的2个USB插槽上就好了。
前面第一篇的时候就已经把摄像头相关的模块都编译进内核了,因此这里也就不用重新安装模块了。
插上后,终端会显示提示:
这里写图片描述
这时候已经检测出免驱摄像头了。
同时在/dev目录下也可以看到增加了一个video0
这里写图片描述

2.开启mjpg-streamer

一般的USB免驱摄像头支持两种输出方式:YUV格式和mjpeg格式。mjpeg格式比起YUV格式要小很多,而且失真不太,因此我们可以用这种格式传送(测了一下YUV格式就有个点卡了)。
在插上摄像头后,输入命令:
-i “input_uvc.so -d /dev/video0” -o “output_http.so -w www”
参数分析:
-i为指定输入
input_uvc.so 为uvc设备。-d指定位置到 /dev/video0
-o指定输出
“output_http.so -w www”是指到网页端。

更多参数请查看mjpg_streamer -h命令

输入命令后摄像头就被成功开起来了。
这里写图片描述

3.测试结果

这时,就可以在网页端查看摄像头传上来的图像了。
在浏览器(务必是火狐浏览器)地址栏输入:
192.168.55.1:8080/?action=stream
然后就能看到视频了

三.串口测试

MT7688自带提供有一些基本功能的实现驱动。这里我们使用串口2来做拓展。

1.硬件连接

需要将MT7688的板子外接到串口模块,RXD2,TXD2这两个线,同时需要在结根地线,共地一下。
然后在电脑上用串口调试软件打开串口模块的串口,选择波特率9600,

2.测试

串口默认的波特率是9600,驱动是/dev/tty2。
我们现用命令行测试一下是否可用:
在命令行输入:
echo “hello world!” > ttyS2
然后在串口调试软件中显示。说明调试成功。
这里写图片描述

没有更多推荐了,返回首页