毕设之华美路由器实现无线视频监控
来源:互联网 发布:广西南宁移动网络缴费 编辑:程序博客网 时间:2024/05/16 23:34
波特率:57600
棕:远离网卡近USB GND 绿:紧挨GND RX->TX 黑:远离GND TX->RX
给HAME A100刷固件
目的:
1. 给HAME A100刷固件
2. 配置上UVC驱动
3. 修改内核自带的UVC驱动,使其支持我们自制的二合一摄像头
4. 移植mjpg-streamer
5. 实现开机自启动、热拔插功能
便携的无线监控设备 = 路由器(HAME A100) + USB摄像头(二合一摄像头) + 手机
HAME A100:
CPU: RT5350
FLASH: 8M SPI FLASH
SDRAM: 32M
固件:
可以理解为我们自己的内核和文件系统
一,环境的搭建
a,解压100ask_toolchain.bz2:
sudo tar xjvf 100ask_toolchain.bz2
b,安装工具连:
cd toolchain/
sudo tar jxf buildroot-gcc342.tar.bz2 -C /opt
修改环境变量:
vim /etc//environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/buildroot-gcc342/bin"
sudo reboot
mipsel-linux-gcc -v //测试
c,安装内核压缩工具:
cd lzma-4.32.0beta5
./configure
make
sudo make install
d,安装rootfs工具:linux 2.6
cd ..
cd mksquash_lzma-3.2
make
sudo make install
二,配置与编译固件
sudo tar xjvf 100ask.bz2
cd 5350_source/
vim .config
-- CONFIG_CROSS_COMPILER_PATH="/opt/buildroot-gcc342/bin"
make clean
make
sudo tar xjvf 100ask.bz2
结果:
flash_100ask_IP_Camera_debug_V1.0.4.bin
2.1 配置上UVC驱动
cd linux-2.6.21.x/
make menuconfig
配置:
Device Drivers --->
Multimedia devices --->
<*> Video For Linux
Video Capture Adapters --->
<*> USB Video Class (UVC)
make 就可以编译内核了
2.2 修改UVC驱动
用hame_a100\源码\2th_uvc目录下的《uvc_driver.c》和《uvc_video.c》替换原内核目录drivers/media/video/uvc下的相应文件
make 就可以重新编译内核了
四,移植mjpg-streamer
1. 交叉编译libjpeg
sudo tar xzvf libjpeg-turbo-1.2.1.tar.gz
cd libjpeg-turbo-1.2.1
mkdir tmp
./configure --prefix=/work/graduate_design/libjpeg-turbo-1.2.1/tmp/ --host=mipsel-linux
make
make install
cd tmp/lib/
cp *so* /work/graduate_design/5350_source/romfs/lib -d
2. 交叉编译mjpg-streamer
sudo tar xzvf mjpg-streamer-r63.tar.gz
cd mjpg-streamer-r63/
将如下文件做如下修改:
./Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
./plugins/input_uvc/Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
该文件还要修改:
a.将
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
改为
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I /work/graduate_design/5350_source/linux-2.6.21.x/include -I /work/graduate_design/libjpeg-turbo-1.2.1/tmp/include
b.将
input_uvc.so: $(OTHER_HEADERS) input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
改为
input_uvc.so: $(OTHER_HEADERS) input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
$(CC) $(CFLAGS) -ljpeg -L /work/graduate_design/libjpeg-turbo-1.2.1/tmp/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
./plugins/input_gspcav1/Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
./plugins/input_testpicture/Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
./plugins/output_autofocus/Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
./plugins/output_http/Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
编译:
make clean
make
cp *so* /work/graduate_design/5350_source/romfs/lib -d
cp mjpg_streamer /work/graduate_design/5350_source/romfs/bin/
3. 测试
1)烧写固件
1. 连接好串口,并搭建好相应的环境后,启动路由器
Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
7: Load Boot Loader code then write to Flash via Serial.
9: Load Boot Loader code then write to Flash via TFTP
2. 选择如上选项的1;
Please Input new ones /or Ctrl-C to discard
Input device IP (192.168.1.155) ==:192.168.1.155// 设备IP,与服务器IP同一个网段
Input server IP (192.168.1.105) ==:192.168.1.105// 服务器IP
Input Linux Kernel filename (flash_100ask_IP_Camera_debug_V1.0.4.bin) ==:flash_100ask_IP_Camera_debug_V1.0.4.bin
2)
mjpg_streamer -i "input_uvc.so -f 10 -r 320*240" -o "output_http.so -w www"
手机上的地址为192.168.169.1 端口为8080
如果在浏览上查看,则地址为:http://192.168.1.17:8080/?action=stream
2)运行手机上的MjpegMonitor软件;
五,热拔插
现在还没有热插拔功能,拔掉摄像头之后再擦就不行了
mdev.conf的格式:
<device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>]
device regex:正则表达式,表示哪一个设备
uid: owner
gid: 组ID
octal permissions:以八进制表示的属性
@:创建设备节点之后执行命令
$:删除设备节点之前执行命令
*: 创建设备节点之后 和 删除设备节点之前 执行命令
command:要执行的命令
1)增加热拔插配置语句
在5350_source/user/rt2880_app/scripts/internet.sh文件里修改如下:
在echo "sd[a-z] 0:0 0660 */sbin/automount.sh \$MDEV" >> /etc/mdev.conf后面加上:
echo "video[012345]? 0:0 777 * /bin/mjpg-streamer.sh /dev/\$MDEV" >> /etc/mdev.conf
2)实现mjpg-streamer.sh
#!/bin/sh
NAME=mjpg_streamer
PROG=/bin/$NAME
DEVICE=$1
FPS=10
RESOLUTION=320*240
if [ $ACTION = "add" ];
then
# USB video in
if [ -e $DEVICE ];then
$PROG -i "input_uvc.so -d $DEVICE -f $FPS -r $RESOLUTION" -o "output_http.so -w www" &
else
# not find device
exit -2
fi
sleep 3
# check if mjpg_streamer is running
pgrep $NAME
if [ $? -ne 0 ];then
# try to mjpg_streamer YUYV format
$PROG -i "input_uvc.so -d $DEVICE -y -f $FPS -r $RESOLUTION" -o "output_http.so -w www" &
fi
else
killall -9 $NAME
fi
增加该脚本的权限:chmod 777 romfs/bin/mjpg-streamer.sh
再次编译查看效果:make
实验得知插拔之后也能够自动启动应用
六,开机自启动
当开机时候摄像头就插上了,热插拔功能并不能够开机就启动应用程序
1).写一个脚本文件run.sh
#!/bin/sh
NAME=mjpg_streamer
PROG=/bin/$NAME
DEVICE=/dev/video0
FPS=10
RESOLUTION=320*240
if [ -e $DEVICE ];then
$PROG -i "input_uvc.so -d $DEVICE -f $FPS -r $RESOLUTION" -o "output_http.so -w www" &
sleep 3
# check if mjpg_streamer is running
pgrep $NAME
if [ $? -ne 0 ];then
# try to mjpg_streamer YUYV format
$PROG -i "input_uvc.so -d $DEVICE -y -f $FPS -r $RESOLUTION" -o "output_http.so -w www" &
fi
else
# not find device
exit -2
fi
增加权限:chmod 777 romfs/bin/run.sh
2).让系统自动运行这个脚步文件
将运行run.sh脚本的命令添加到internet.sh中即可
vi user/rt2880_app/scripts/internet.sh
在echo "/sbin/mdev" > /proc/sys/kernel/hotplug这一行下面增加一行:
/bin/run.sh
七,将固件烧写到flash
Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
7: Load Boot Loader code then write to Flash via Serial.
9: Load Boot Loader code then write to Flash via TFTP.
You choosed 2 // 不同之处
2: System Load Linux Kernel then write to Flash via TFTP.
Warning!! Erase Linux in Flash then burn new one. Are you sure?(Y/N)
Please Input new ones /or Ctrl-C to discard
Input device IP (192.168.1.155) ==:192.168.1.155
Input server IP (192.168.1.105) ==:192.168.1.105
Input Linux Kernel filename (flash_100ask_IP_Camera_debug_V1.0.4.bin) ==:flash_100ask_IP_Camera_debug_V1.0.4.bin
本实验中注意事项:
华美路由器串口波特率:57600
棕:远离网卡近USB GND 绿:紧挨GND RX->TX 黑:远离GND TX->RX
给HAME A100刷固件
目的:
1. 给HAME A100刷固件
2. 配置上UVC驱动
3. 修改内核自带的UVC驱动,使其支持我们自制的二合一摄像头
4. 移植mjpg-streamer
5. 实现开机自启动、热拔插功能
便携的无线监控设备 = 路由器(HAME A100) + USB摄像头(二合一摄像头) + 手机
HAME A100:
CPU: RT5350
FLASH: 8M SPI FLASH
SDRAM: 32M
固件:
可以理解为我们自己的内核和文件系统
一,环境的搭建
a,解压100ask_toolchain.bz2:
sudo tar xjvf 100ask_toolchain.bz2
b,安装工具连:
cd toolchain/
sudo tar jxf buildroot-gcc342.tar.bz2 -C /opt
修改环境变量:
vim /etc//environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/buildroot-gcc342/bin"
sudo reboot
mipsel-linux-gcc -v //测试
c,安装内核压缩工具:
cd lzma-4.32.0beta5
./configure
make
sudo make install
d,安装rootfs工具:linux 2.6
cd ..
cd mksquash_lzma-3.2
make
sudo make install
二,配置与编译固件
sudo tar xjvf 100ask.bz2
cd 5350_source/
vim .config
-- CONFIG_CROSS_COMPILER_PATH="/opt/buildroot-gcc342/bin"
make clean
make
sudo tar xjvf 100ask.bz2
结果:
flash_100ask_IP_Camera_debug_V1.0.4.bin
2.1 配置上UVC驱动
cd linux-2.6.21.x/
make menuconfig
配置:
Device Drivers --->
Multimedia devices --->
<*> Video For Linux
Video Capture Adapters --->
<*> USB Video Class (UVC)
make 就可以编译内核了
2.2 修改UVC驱动
用hame_a100\源码\2th_uvc目录下的《uvc_driver.c》和《uvc_video.c》替换原内核目录drivers/media/video/uvc下的相应文件
make 就可以重新编译内核了
四,移植mjpg-streamer
1. 交叉编译libjpeg
sudo tar xzvf libjpeg-turbo-1.2.1.tar.gz
cd libjpeg-turbo-1.2.1
mkdir tmp
./configure --prefix=/work/graduate_design/libjpeg-turbo-1.2.1/tmp/ --host=mipsel-linux
make
make install
cd tmp/lib/
cp *so* /work/graduate_design/5350_source/romfs/lib -d
2. 交叉编译mjpg-streamer
sudo tar xzvf mjpg-streamer-r63.tar.gz
cd mjpg-streamer-r63/
将如下文件做如下修改:
./Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
./plugins/input_uvc/Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
该文件还要修改:
a.将
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
改为
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I /work/graduate_design/5350_source/linux-2.6.21.x/include -I /work/graduate_design/libjpeg-turbo-1.2.1/tmp/include
b.将
input_uvc.so: $(OTHER_HEADERS) input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
改为
input_uvc.so: $(OTHER_HEADERS) input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
$(CC) $(CFLAGS) -ljpeg -L /work/graduate_design/libjpeg-turbo-1.2.1/tmp/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
./plugins/input_gspcav1/Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
./plugins/input_testpicture/Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
./plugins/output_autofocus/Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
./plugins/output_http/Makefile 将 CC=gcc 修改为 CC=mipsel-linux-gcc
编译:
make clean
make
cp *so* /work/graduate_design/5350_source/romfs/lib -d
cp mjpg_streamer /work/graduate_design/5350_source/romfs/bin/
3. 测试
1)烧写固件
1. 连接好串口,并搭建好相应的环境后,启动路由器
Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
7: Load Boot Loader code then write to Flash via Serial.
9: Load Boot Loader code then write to Flash via TFTP
2. 选择如上选项的1;
Please Input new ones /or Ctrl-C to discard
Input device IP (192.168.1.155) ==:192.168.1.155// 设备IP,与服务器IP同一个网段
Input server IP (192.168.1.105) ==:192.168.1.105// 服务器IP
Input Linux Kernel filename (flash_100ask_IP_Camera_debug_V1.0.4.bin) ==:flash_100ask_IP_Camera_debug_V1.0.4.bin
2)
mjpg_streamer -i "input_uvc.so -f 10 -r 320*240" -o "output_http.so -w www"
手机上的地址为192.168.169.1 端口为8080
如果在浏览上查看,则地址为:http://192.168.1.17:8080/?action=stream
2)运行手机上的MjpegMonitor软件;
五,热拔插
现在还没有热插拔功能,拔掉摄像头之后再擦就不行了
mdev.conf的格式:
<device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>]
device regex:正则表达式,表示哪一个设备
uid: owner
gid: 组ID
octal permissions:以八进制表示的属性
@:创建设备节点之后执行命令
$:删除设备节点之前执行命令
*: 创建设备节点之后 和 删除设备节点之前 执行命令
command:要执行的命令
1)增加热拔插配置语句
在5350_source/user/rt2880_app/scripts/internet.sh文件里修改如下:
在echo "sd[a-z] 0:0 0660 */sbin/automount.sh \$MDEV" >> /etc/mdev.conf后面加上:
echo "video[012345]? 0:0 777 * /bin/mjpg-streamer.sh /dev/\$MDEV" >> /etc/mdev.conf
2)实现mjpg-streamer.sh
#!/bin/sh
NAME=mjpg_streamer
PROG=/bin/$NAME
DEVICE=$1
FPS=10
RESOLUTION=320*240
if [ $ACTION = "add" ];
then
# USB video in
if [ -e $DEVICE ];then
$PROG -i "input_uvc.so -d $DEVICE -f $FPS -r $RESOLUTION" -o "output_http.so -w www" &
else
# not find device
exit -2
fi
sleep 3
# check if mjpg_streamer is running
pgrep $NAME
if [ $? -ne 0 ];then
# try to mjpg_streamer YUYV format
$PROG -i "input_uvc.so -d $DEVICE -y -f $FPS -r $RESOLUTION" -o "output_http.so -w www" &
fi
else
killall -9 $NAME
fi
增加该脚本的权限:chmod 777 romfs/bin/mjpg-streamer.sh
再次编译查看效果:make
实验得知插拔之后也能够自动启动应用
六,开机自启动
当开机时候摄像头就插上了,热插拔功能并不能够开机就启动应用程序
1).写一个脚本文件run.sh
#!/bin/sh
NAME=mjpg_streamer
PROG=/bin/$NAME
DEVICE=/dev/video0
FPS=10
RESOLUTION=320*240
if [ -e $DEVICE ];then
$PROG -i "input_uvc.so -d $DEVICE -f $FPS -r $RESOLUTION" -o "output_http.so -w www" &
sleep 3
# check if mjpg_streamer is running
pgrep $NAME
if [ $? -ne 0 ];then
# try to mjpg_streamer YUYV format
$PROG -i "input_uvc.so -d $DEVICE -y -f $FPS -r $RESOLUTION" -o "output_http.so -w www" &
fi
else
# not find device
exit -2
fi
增加权限:chmod 777 romfs/bin/run.sh
2).让系统自动运行这个脚步文件
将运行run.sh脚本的命令添加到internet.sh中即可
vi user/rt2880_app/scripts/internet.sh
在echo "/sbin/mdev" > /proc/sys/kernel/hotplug这一行下面增加一行:
/bin/run.sh
七,将固件烧写到flash
Please choose the operation:
1: Load system code to SDRAM via TFTP.
2: Load system code then write to Flash via TFTP.
3: Boot system code via Flash (default).
4: Entr boot command line interface.
7: Load Boot Loader code then write to Flash via Serial.
9: Load Boot Loader code then write to Flash via TFTP.
You choosed 2 // 不同之处
2: System Load Linux Kernel then write to Flash via TFTP.
Warning!! Erase Linux in Flash then burn new one. Are you sure?(Y/N)
Please Input new ones /or Ctrl-C to discard
Input device IP (192.168.1.155) ==:192.168.1.155
Input server IP (192.168.1.105) ==:192.168.1.105
Input Linux Kernel filename (flash_100ask_IP_Camera_debug_V1.0.4.bin) ==:flash_100ask_IP_Camera_debug_V1.0.4.bin
本实验中注意事项:
华美路由器串口波特率:57600
华美路由器引出线的名称: 棕:远离网卡近USB GND 绿:紧挨GND RX->TX 黑:远离GND TX->RX
下面是做实验的图片:
因为内核实在太大了,所以这里的资源只是上传除内核外的其他资源,内核再想办法:http://download.csdn.net/detail/chengdong1314/9518535
0 0
- 毕设之华美路由器实现无线视频监控
- 韦东山第三期视频监控编译华美路由器A100固件问题----已经编译通过
- 毕设之s3c2440视频监控系统总结
- 【智能路由器】视频监控
- 无线视频监控小车
- RT5350无线视频监控
- RT5350无线视频监控
- RT5350无线视频监控
- RT5350无线视频监控
- 高手解析:巧设无线路由器 广泛无线范围【绿色】
- android手机与arm平台实现无线视频监控
- android手机与arm平台实现无线视频监控
- 无线视频监控Mjpg-Streamer之框架分析
- 列车无线视频监控系统
- 远程无线视频监控知识
- 远程无线视频监控知识
- 工地无线视频监控解决方案
- 无线路由器破解之cdlinux
- 数据库增删改查之更
- Spring AOP @AspectJ 入门实例
- HDU 1042 N! (大数阶乘,紫书上的方法超时!!还是Java大法好!!)
- eclipse运行go文件,报错“Resource donesnt have a corresponding Go paceage.”
- 【C++】:C++map的妙用之 计算字符串加和
- 毕设之华美路由器实现无线视频监控
- 人工智能之人工神经网络
- ubuntu设置vim高亮和缩进
- 第7周 C语言程序设计(新2版) 练习1-19 颠倒字符串中的字符
- Java学习笔记(七)之―认识Java API
- 存储过程详解
- 在Android studio IDE中采用自己编写的Android.mk
- Java基础之static和final的用法
- 教你使用Spy++查看软件的流氓行径(talimama/Dandelion.exe)