转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/38515423
这篇主要是讲远程视频监控的环境搭建,中间会设计到网络搭建,也会涉及到一些应用和库的移植。
一.配置内核
1.支持UVC(USB摄像头)
make menuconfig
<*> Multimedia support --->
<*> Video For Linux
[*] Video capture adapters (NEW) --->
[*] V4L USB devices (NEW) --->
<*> USB Video Class (UVC)
2.支持无线网卡(Atheros AR9271芯片)
配置:
-> Networking suppor
-> Wireless
<*> cfg80211 - wireless configuration API
<*> Generic IEEE 802.11 Networking Stack (mac80211)
-> Device Drivers
-> Network device support
-> Wireless LAN
-> Atheros Wireless Cards
<*> Atheros HTC based wireless cards support
3.固件支持
把固件htc_9271.fw(可以去网上找,我也会给大家提供)放到单板/lib/firmware
二.移植wpa_supplicant
我们要用无线网卡连接上路由啊,所以需要一个WLAN的管理工具,用于设置登陆密码等。
1. 先编译它的依赖libopenssl
tar xzf openssl-1.0.1d.tar.gz
cd openssl-1.0.1d/
./config shared no-asm --prefix=$PWD/tmp
修改Makefile:
CC= arm-linux-gcc
AR= arm-linux-ar $(ARFLAGS) r
RANLIB= arm-linux-ranlib
NM= arm-linux-nm
MAKEDEPPROG= arm-linux-gcc
make
make install
安装:
把编译出来的头文件应该放入:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
把编译出来的库文件应该放入:
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
把编译出来的库文件应该放入NFS文件系统的lib目录:
/work/nfs_root/fs_mini_mdev_new/lib
2. 要有一个配置文件.config
tar xzf wpa_supplicant-2.0.tar.gz
cd wpa_supplicant-2.0/wpa_supplicant/
cp defconfig .config
修改.config加上一行: CONFIG_LIBNL32=y
修改Makefile:
CC=arm-linux-gcc
make
make DESTDIR=$PWD/tmp install
之后把编译出来的应用拷贝到nfs文件系统的bin目录
3.使用:
mkdir -p /var/run/wpa_supplicant
vi wpa_wpa2.conf (写一个配置文件)
配置文件:适用于 wpa_wpa2
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="test"
psk="xiaojin123"
}
做完以上步骤,插上你USB网卡
wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0
wpa_cli -iwlan0 status // 查看状态
ifconfig wlan0 192.168.1.X
ping 192.168.1.1
如果能ping的通,证明网卡已经连接上了,如果ping不通,证明还有问题,仔细检查上步骤。(测试的时候确保有线网卡和无线网卡不在一个网段)
三.开机自启动应用程序
我们开启开发板的时候要开发板自动启动应用程序,配置IP等等,所以我写了个脚本
首先修改 /etc/init.d# vi rcS
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
insmod /wvm/pwm/wvm_pwm.ko
insmod /wvm/led/wvm_led.ko
insmod /wvm/button/wvm_buttons.ko
insmod /ath9k_hw.ko
insmod /ath9k_common.ko
insmod /ath9k_htc.ko
然后修改 /etc# vi mdev.conf
wlan0 0:0 777 * /sbin/auto_wifi.sh
再然后修改 sbin# vi auto_wifi.sh
#!/bin/sh
if [ $ACTION = "add" ];
then
wpa_supplicant -B -c/etc/wpa_wpa2.conf -iwlan0
wpa_cli -a/sbin/wpa_action.sh -B
else
killall wpa_supplicant
killall wpa_cli
fi
最后修改
#!/bin/sh
IFNAME=$1
CMD=$2
if [ "$CMD" = "CONNECTED" ]; then
echo connect $IFNAME, ifconfig for it > /dev/console
ifconfig wlan0 192.168.1.10 //配置IP
route add default gw 192.168.1.1 //设置网关
all_test& //后台运行应用程序
mjpg_streamer -i "input_uvc.so -f 10 -r 640*480 " -o "output_http.so -c "ruoyun:liufeng" -w www -p 8888"&
fi
if [ "$CMD" = "DISCONNECTED" ]; then
echo disconnect $IFNAME > /dev/console
fi
四.移植libjpeg(mjpg-streamer需要的库)
tar xzvf libjpeg-turbo-1.2.1.tar.gz
cd libjpeg-turbo-1.2.1
mkdir tmp
./configure --prefix=$PWD/tmp --host=arm-linux
make
make install
将库文件赋值到开发板中
五.设置外网访问
1.注册花生壳
2.设置路由器(我的路由器是硕科NW750P,我以它为例)
a.设置动态域名
这里注意 第一点:用户名和密码都是你注册时候填的用户名和密码
第二点:花生壳客户端既然在路由上登陆了,就不要在别处登陆
状态信息上如果出现图中字样,恭喜你成功了b.端口映射
注意 第一点:内网主机IP地址就是你的摄像头的IP地址,内部端口也是摄像头的端口(自己改成8888了,mjpg_streamer默认8080,最好是改了网上有人说运营商有的会关闭8080)
第二点:外部端口设置为80后,把本地WEB管理端口改下,避免冲突
c.DMZ
我的防火墙关了所以开不开这个无关紧要,你要是防火墙是开着的话,把这个DMZ打开
3.测试
a.首先WINDOWS主机ping花生壳如果能ping通代表了启动成功,如果没有请仔细检查路由器是否启动花生壳或者是否重复登录。
b.开发板ping外网,注意ping的是外网而不是路由器的网关,我之前调试一直挂在这里。只有你的开发板能ping的通外网。外网的花生壳才能够连接上你的开发板。我之前DNS设置错了,浪费了很长时间。DNS在/etc/resolv.conf文件中,修改和你主机一致即可。
c.花生壳端口访问,在浏览器上输入花生壳网址就能看到摄像头的情况了(当然mjpg-streamer需要相应的参数这个我下篇文章会详细讲)。