波特率: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

毕设之华美路由器实现无线视频监控相关推荐

  1. 无线视频监控系统 工业路由器组网

    工业路由器组网下无线视频监控系统广泛应用于工地.工厂.办公楼.商场.等安全.安防远程监控场所,全方位无死角24小时远程掌握现场状态. 工业路由器组网无线视频监控系统 计讯物联5G/4G工业无线路由器, ...

  2. 远程无线视频监控知识

    1.什么是网络无线视频监控? 网络无线视频系统通常指的是安全监视和远程监控领域内用于特定应用的IP监视系统,该系统使用户能够通过IP网络(LAN/WAN /Internet/3G)实现无线视频监控及视 ...

  3. 建筑工地无线视频监控 工业级无线路由器应用

    近年来全球建筑产业逐渐发展,建筑工地安全.合理化管理得到相关部门重视,计讯物联建筑工程施工现场远程视频监控管理可推进建筑市场与施工现场的联动机制,进一步提升建筑工程智能化管理水平,解决项目工程的安全问 ...

  4. 油田智能化远程监控系统_十种远程无线视频监控系统拓扑图

    有人问,既然无线视频监控系统如此普及,是不是所有地方都能用到无线视频监控设备呢? 例如在大街上.学校里,工厂中.写字楼内,建筑工地上.公园中.住宅小区里.江河岸边.港口码头.甚至是森林.戈壁滩等等.只 ...

  5. cad监控图标_干货!多种不同环境的无线视频监控系统拓扑图

    有人问,既然无线视频监控系统如此普及,是不是所有地方都能用到无线视频监控设备呢? 例如在大街上.学校里,工厂中.写字楼内,建筑工地上.公园中.住宅小区里.江河岸边.港口码头.甚至是森林.戈壁滩等等.只 ...

  6. android jmf,基于JMF与Android的无线视频监控系统的设计与实现

    摘要: 视频监控系统是一种防范能力很强的综合系统,是安防领域的重要组成部分.随着无线网络与流媒体传输技术的飞速发展,视频监控系统也朝着无线化,高清化,智能化的方向发展.针对这一需求,通过研究JAVA多 ...

  7. 实现国标GB/T28181流媒体服务解决方案安防4G摄像头互联网直播方案EasyGBS之水库管理无线视频监控解决方案

    国标GB28181视频流媒体服务EasyGBS负责将GB28181设备/平台推送的PS流转成ES流,然后提供RTSP.RTMP.FLV.HLS多种格式进行分发,实现web浏览器.手机浏览器.微信.PC ...

  8. 无线视频监控系统设计

    文末下载完整资料                            1 引言    无线视频监控系统是安全防范系统的组成部分,它是一种防范能力较强的综合系统.无线视频监控以其直观.方便.信息内容丰 ...

  9. 基于H.264的嵌入式无线视频监控系统

    http://www.eccn.com/design_2012041214510447.htm 1 引言 对图像监控系统,用户常常对使用环境提出一些特殊需求,他们希望能够监控距离比较远的对象,这些对象 ...

最新文章

  1. 如何修改配置以修复ThinkPad 小红帽滚轮失效?
  2. layer的一种用法,页面多选时用地址传递值过多时,用弹出层画一个form表单,然后通过提交表单传值
  3. 学计算机一般要off,必须要学的电脑知识
  4. foo php,php – $foo === TRUE和TRUE === $foo有什么区别?
  5. 开发日记-20190819 关键词 随便聊聊
  6. 醉了,RPC 超时设置也能引起线上事故!
  7. 基于ABP落地领域驱动设计-06.正确区分领域逻辑和应用逻辑
  8. java json utf-8_Java 编码 和JSON
  9. 2202知识图谱推荐系统,终终终于于于于于于于于于更新了
  10. 跟小静学MVC3[03]--相关语法特性小补习
  11. Navicat Premium 12注册机破解方法
  12. 航班网站php项目,php的实时航班api调用代码实例
  13. 分享给学弟学妹们的一些成为全栈工程师的方向和方法
  14. 职场小白手收藏篇:职场应聘的面试技巧
  15. Matlab的fprintf函数使用百分号问题
  16. 用MATLAB设计FIR滤波器
  17. 对回合制游戏的探讨以及想法
  18. Git使用教程(5)-Git常用命令
  19. Arcgis影像镶嵌数据集色彩平衡遇到的问题
  20. CAN调谐器与SILICON调谐器(又称为铁壳调谐器和硅片调谐器)

热门文章

  1. Android常见风控检测位置
  2. STW78N65M5-ASEMI原厂代理意法MOS管STW78N65M5
  3. SQL Server数据库同步方式总结 VS Beedup
  4. mysql防止不可重复读_mysql怎么解决不可重复读
  5. 我的总结——实训的七天_Java 李晖晖
  6. ElasticSearch使用详解
  7. 华为董事长孙亚芳:任正非的文章是公司成长的缩影
  8. linux文字转图形界面,Linux字符界面转图形界面
  9. cos(a+b)的展开证明
  10. 计算机网络是管理信息系统运行的基础,网络运行管理系统