主目录:
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
然后在串口调试软件中显示。说明调试成功。