20##级计算机专业实习报告
题目:基于嵌入式的视频监控实验
班级:
组长:
组员:
日期:20##年7月6日
目录
一、实验目的................................................................................................................... 2
二、实验设备及工具........................................................................................................ 2
三、实验要求................................................................................................................... 2
四、实验过程................................................................................................................... 3
一)实验分析............................................................................................................ 3
二)设计流程............................................................................................................ 3
1、烧写U-Boot.................................................................................................. 3
2、测试U-Boot.................................................................................................. 4
3、移植spcview,配置网络摄像头..................................................................... 6
4、BOA服务器配置和CGI程序......................................................................... 6
5、BOA服务器的配置....................................................................................... 7
五、遇到问题及解决方法:............................................................................................ 10
1、tftp下载时权限问题:...................................................................................... 10
2、websever调试页面跳转问题:........................................................................... 10
六、实验感悟:.............................................................................................................. 11
一、实验目的
通过本课程设计使学生加深理解、巩固课堂教学和平时实验内容,使学生初步完成基于web的嵌入式视频监控的设计,强化学生的知识实践意识、提高动手能力,发挥学生的想象力和创新能力,从而培养工程应用型人才。
二、实验设备及工具
硬件环境:Up-TECH s2410/p270 DVP 嵌入式开发平台,摄像头,PC机
软件环境:用Spcaserv来架设、Pc机操作系统REDHAT LINUX 9.0+ARM-LINUX
网络环境:我们得有一个网络环境,比如我来测试我所做的网络监视系统是否成功,至少在局域网内有两台机器。
三、实验要求
1、实时监控功能:实时监控摄像头所监视的范围;数据流采集功能:实时采集监控数据流
2、提交课程实验报告,实验报告应包括:系统设计要求,设计过程,调试过程,关键程序代码。
四、实验过程
一)实验分析
本系统由摄像机、嵌入式WEB服务器(Linux)、传输网络和监控端(PC机)组成。摄像机用来采集监控现场的视频。嵌入式WEB服务器是整个监控系统的核心。其主要功能包括:为监控端提供WEB访问页面;对监控端的访问进行有效性、安全性检查;响应监控端的请求,为监控端提供所需要的视频图像。在监控端可以通过浏览器界面访问服务器,监控端的功能则是显示现场视频。
二)设计流程
1、烧写U-Boot
将编译得到的u-boot.bin拷贝到XP的D盘下,将我们光盘中的sjf2410-s.exe文件也拷贝到D盘下。连接好开发板的电源、JTAG下载线,打开开发板的电源。在电脑桌面的左下角点击开始,找到运行:在打开的菜单中输入cmd,并回车:
这样将会打开一个DOS对话框。在打开的DOS对话框中进入D盘:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\Administrator>D:
D:\>
这样就进入了D盘,运行如下命令进行烧写:
D:\>sjf2410-s.exe /f:u-boot.bin
这样就会启动烧写程序。在烧写程序中需要我们做一些选择,要分别输入三次0,然后才开始真正的烧写,烧写完毕后,输入2推出程序。如下面的内容:
D:\>sjf2410-s.exe /f:u-boot.bin
+------------------------------------+
| SEC JTAG FLASH(SJF) v 0.7 |
| (S3C2410X & SMDK2410 B/D) |
| PROVIDED BY KENT 20050628 |
| kent@up-tech.com |
+------------------------------------+
Usage: SJF /f:<filename> /d=<delay>
> S3C2410X(ID=0x0032409d) is detected.
[SJF Main Menu]
0:K9S1208 prog 1:K9F2808 prog 2:28F128J3A prog 3:AM29LV800 Prog
4:Memory Rd/Wr 5:Exit
Select the function to test:0
[K9S1208 NAND Flash JTAG Programmer]
K9S1208 is detected. ID=0xec76
0:K9S1208 Program 1:K9S1208 Pr BlkPage 2:Exit
Select the function to test :0
[SMC(K9S1208V0M) NAND Flash Writing Program]
Source size:0h~21237h
Available target block number: 0~4095
Input target block number:0
target start block number =0
target size (0x4000*n) =0x24000
STATUS:Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
Epppppppppppppppppppppppppppppppp
0:K9S1208 Program 1:K9S1208 Pr BlkPage 2:Exit
Select the function to test :2
D:\>
2、测试U-Boot
现在U-Boot已经烧写到开发板上了,可以启动开发板检测是否烧写好。连接好开发板和主机之间的串口、网口,断开开发板的JTAG下载线,启动开发板。如果烧写成功,会在串口终端上出现如下内容:
U-Boot 1.3.2 (Dec 5 20## - 10:35:38)
DRAM: 64 MB
Flash: 512 kB
NAND: 64 MiB
*** Warning - bad CRC or NAND, using default environment
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
[UP-2410-S #]
注意上面内容中红色的部分,主要是因为我们没有把环境变脸写入Flash。运行如下命令将环境变量写入Flash中:
[UP-2410 #]saveenv
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done
[UP-2410 #]
运行printenv查看环境变量:
[UP-2410 #]printenv
bootargs=root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
bootcmd=tftp; bootm
bootdelay=3
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
ipaddr=192.168.1.131
serverip=192.168.1.132
netmask=255.255.255.0
bootfile="uImage"
stdin=serial
stdout=serial
stderr=serial
Environment size: 265/16380 bytes
[UP-2410 #]
可以看到我们在up2410.h中定义的环境变量都正确地保存下来了。然后检测网络功能:
[UP-2410 #]ping 192.168.1.135
host 192.168.1.135 is alive
[UP-2410 #]
返回host 192.168.1.135 is alive,说明网卡已经通了。
可以尝试运行U-Boot的命令,对所移植的U-Boot进行测试。
3、移植spcview,配置网络摄像头
1)从http://mxhaard.free.fr/spca50x/Download下载spcaview源码,将其解压并进入源码目录。
[root@vm-dev webcam]# tar -vxzf spcaview-20061208.tar.gz
[root@vm-dev webcam]# ls
bak driver runtime spcaview-20061208 spcaview-20061208.tar.gz
[root@vm-dev webcam]#
2) 修改Makefile文件
[root@vm-dev spcaview-20061208]# vi Makefile
CC=arm-linux-gcc
CPP= arm-linux-g++
Spcaserv:$(OBJSERVER)
$(CC) $(SERVFLAGS) –O spcaserv $(OBJSERVER) $(SERVLIBS)
3) 保存并退出,编译程序
[root@vm-dev spcaview-20061208]# make spcaserv
4) 将spcaview-20061208文件夹中的http-java-applet文件夹的内容拷贝到/var/www/下,将生成的spcaserv下载到开发板上。
4、BOA服务器配置和CGI程序
首先解压该文件:
yqliu29@up-tech:~/app/web$ tar zxvf boa-0.94.13.tar.gz
然后进入源代码目录:
yqliu29@up-tech:~/app/web$ cd boa-0.94.13/src/
修改文件compat.h的第120行:
yqliu29@up-tech:~/app/web/boa-0.94.13/src$ vi compat.h
修改后,第120行的内容如下:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
即只是去掉了该行的两个’##’字符。
然后修改boa.c:
yqliu29@up-tech:~/app/web/boa-0.94.13/src$ vi boa.c
找到该文件的225~227行,注释掉这几行,不然运行的时候会出错。
源文件的修改就完成了,现在开始编译。
首先,运行configure程序对源文件进行配置:
yqliu29@up-tech:~/app/web/boa-0.94.13/src$ ./configure
配置完成后,修改Makefile:
yqliu29@up-tech:~/app/web/boa-0.94.13/src$ vi Makefile
修改第31行和32行如下:
CC = arm-linux-gcc
CPP = arm-linux-gcc -E
修改完成后,保存文件,运行Make进行编译:
yqliu29@up-tech:~/app/web/boa-0.94.13/src$ make
编译完成后,会在该目录下生成我们需要的可执行文件boa。
然后,编译我们的CGI程序。CGI程序供两个,一个是run.c,另一个是stop.c,分别运行如下命令进行编译:
yqliu29@up-tech:~/app/web$ arm-linux-gcc -o run.cgi run.c
yqliu29@up-tech:~/app/web$ arm-linux-gcc -o stop.cgi stop.c
编译完成后,会在目录下生成run.cgi和stop.cgi两个应用程序。
5、BOA服务器的配置
Boa运行时需要在/etc/boa目录下有一个boa.conf文件,该文件的全部内容如下:
Port 80
#Listen 192.68.0.5
User root
Group 0
ErrorLog /var/log/boa/error_log
AccessLog /dev/null
ServerName www.your.org.here
DocumentRoot /var/www
DirectoryIndex index.html
KeepAliveMax 1000
KeepAliveTimeout 10
MimeTypes /etc/mime.types
DefaultType text/plain
CGIPath /bin:/usr/bin:/usr/local/bin
AddType application/x-httpd-cgi cgi
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
另外,在/etc目录下还需要一个mime.types文件,可以直接从主机上的/etc目录拷贝过来。
运行时需要的目录如下:
/var/www 这个是我们的html文件存放的目录
/var/www/cgi-bin 这个是CGI程序存放的目录
/var/log/boa/error_log 这个是boa服务器存放错误日志的地方
因此,把我们上面提到的index.html、adc.html和adc.xml三个文件拷贝到开发板的/var/www目录下;把刚才编译得到的run.cgi和stop.cgi拷贝到/var/www/sgi-bin目录下;还要在/var/log/boa目录下建立一个error_log文件,命令如下:
[root@up-tech /var/log/boa]pwd
/var/log/boa
[root@up-tech /var/log/boa]touch error_log
这样,服务器的配置就完成了,把刚才编译得到的boa可执行文件拷贝到/bin目录下,然后执行boa命令,就可以启动boa服务器了:
[root@up-tech /var/log/boa]boa
运行boa不提示错误,并在进程中有该进程
[/mnt/yaffs/web]./boa
[/mnt/yaffs/web]ps
PID Uid VmSize Stat Command
1 root 520 S init
2 root SW [keventd]
3 root SWN [ksoftirqd_CPU0]
4 root SW [kswapd]
5 root SW [bdflush]
6 root SW [kupdated]
9 root SW [mtdblockd]
10 root SW [khubd]
31 bin 372 S portmap
37 root 600 S inetd
49 root 852 S -sh
50 root 756 S -sh
51 root 756 S -sh
52 root 756 S -sh
90 nobody 840 S ./boa
106 root 692 R ps
[/mnt/yaffs/web]
此时确保你的网线连接正确,这时在IE浏览器中输入开发板的ip地址就可以看到如下的界面
如果你的电脑上没有安装java虚拟机的话,他会提示你安装虚拟机,安装光盘中的jre-6u10-windows-i586-p-s.exe文件就可以了。
1) 建立节点 mknod /dev/video0 c 81 0
2) 运行程序
[/mnt/yaffs/web]./spcaserv -d /dev/video0 -s 320x240 -f jpg
size width: 320 height: 240
Spcaview version: 1.1.7 date: 06:11:2006 (C) mxhaard@magic.fr
video /dev/video0
Camera found: Generic Vimicro 303b
VIDIOCGPICT brightnes=32768 hue=0 color=0 contrast=32768 whiteness=0depth=24 palette=4
Bridge found: ZC301-2
is_spca SPCA505
is_spca SPCA506
is_spca SPCA501
is_spca SPCA508
is_spca SPCA504
is_spca SPCA500
is_spca SPCA504B
is_spca SPCA533
is_spca SPCA504C
is_spca SPCA561
is_spca SPCA536
is_spca SN9C102
is_spca ZR364XX
is_spca ZC301-2
quality 1 autoexpo 1 Timeframe 0
StreamId: 0 Camera
try palette 21 depth 8
Available palette 21
try palette 19196 depth 65535
Couldnt set palette first try 1075923708
Damned second try fail
try palette 19196 depth 65535
Couldnt set palette first try 1075923708
Damned second try fail
try palette 56536 depth 65535
Couldnt set palette first try 1073863896
Damned second try fail
try palette 288 depth 65535
Couldnt set palette first try 288
Damned second try fail
probe size in
Available Resolutions width 640 heigth 480
Available Resolutions width 384 heigth 288
Available Resolutions width 352 heigth 288
Available Resolutions width 320 heigth 240
Available Resolutions width 192 heigth 144
Available Resolutions width 176 heigth 144
Format asked 21 check 8
VIDIOCSPICT brightnes=32768 hue=0 color=0 contrast=32768 whiteness=0depth=8 palette=21
VIDIOCGPICT brightnes=32768 hue=0 color=0 contrast=32768 whiteness=0depth=8 palette=21
grabbing method READ asked
VIDIOCSWIN height 240 width 320
########init ##########
depth 8Waiting .... for connection. CTrl_c to stop !!!!
此时刷新一下IE就可以看到在线的视频了
五、遇到问题及解决方法:
1、tftp下载时权限问题:
up-tech:/ #tftp -r ad -g 192.168.1.152
tftp: can't open 'ad': Read-only file system
解决方法:
up-tech:/ #cd root
up-tech:~ #tftp -r ad -g 192.168.1.152
2、websever调试页面跳转问题:
访问网页时,跳转出现错误
502 Bad Gateway
The CGI was not CGI/1.1 combliant
解决方法:
修改.cgi权限为777,即修改为可执行
六、实验感悟:
本实验将当前嵌入式系统技术应用于网络视频监控系统,设计了一种基于嵌入式
Linux和S3C2410的低成本的网络视频采集传输系统。在这次实验中,从U_boot的烧写到最终视频采集的完成,我们从中学习了很多,进一步了解了嵌入式开发的过程,增强了我们对嵌入式开发的兴趣。最后,在此感谢 老师对我们实验的指导和支持,同时也感谢我们同学在实验过程中对我们实验的帮助。