You are on page 1of 24

ARM Linux

ARM9 S3C2410
USB
Linux

ARM9 Linux V4L

Abstract
With the rapid development of the electronic technology, multimedia technology and network
technology, video surveillance system is going to the embedded, digital, networked direction.
Taking full advantage of LSI and networks of scientific and technological achievements, the
embedded video surveillance system achieves delicate volume, stable performance, facilitates the
communication of the surveillance equipment.
The project is in arm microprocessor platform, and porting embedded linux system in it. It
completes video capturing, compression, transmission and control tasks. The hard devices select
the ARM9 (S3C2410) as the main processor in the system; and the USB camera as the device of
video capture. In order to reduce the cost of the product, Based on the architecture and with the
open source software in linux, the whole embedded video surveillance system is implemented.

Keywords: Video Surveillance Embedded system ARM9 Linux video for linux

1 ..................................................................................................................................................4
1.1 ...............................................................................................................................4
1.2 ..................................................................................................................4
1.3 ..................................................................................................................5
2 .................................................................................................................5
2.1 ..............................................................................................................5
2.2 ......................................................................................................................6
3 .....................................................................................................................7
2.1 LINUX ....................................................................................................8
2.2 ..............................................................................................................9
2.3 BootLoader ......................................................................................................................9
3.4 Linux .....................................................................................................11
3.5 ................................................................................................................12
4 ...............................................................................................................13
4.1 Linux .............................................................................................13
4.2 ................................................................................................14
4.3Linux ..........................................................................................15
4.4USB ................................................................................16
5 Linux .........................................................................................................................17
5.1 ........................................................................................................17
5.2 v4l ..................................................................................................................17
5.3 LCD ..................................................................................................19
6 ..................................................................................................20
6.1 TCPIP .............................................................................................................21
6.2 webserver ..............................................................................22
6.3 .........................................................................................................................23

1
1.1

Linux

Linux Linux Linux


Linux

1.2
()

1.3

Linux
Linux
:
(1) ;
(2) Linux
(3) USB Linux ;
(4) Vidoo4Linux ;
(5) webserver
(6)

2
2.1
LCD
5

PC

ov511 s3C2410
ARM , UP-NET ARM2410-S
10/l00M USB

ARM CPU SDRAM FLASH :RS-232


(COM1)USB HOST TFTLCD
RS-232 ; USB USB
LCD
2-1

USB

SDRAM

S3C2410X

NAND

SRAM

Flash

Jtag

2-1

2.2
Linux ARM
::Linux


;
TCP/IP API
API : API
SOCKET
USB
2-2

USB

Bootloader
2-2

3
Linux Linux
PC Linux Redhat9.0
Linux

2.1 LINUX
Linux UNIX POSIX
Linux Linux
Linux

Linux
Linux

Microsoft Windows
Limix GPL
Linux GPL CC++Java

Linux
Linux Linux Unix Unix
Linux gccg++

Linux
Intenet Linux
x86AlphaSparcMipspowerPCARM

Linux

Linux Linux UNIX


Linux

Linux

Linux IMB Linux


100K

2.2

PC

2.95.3 arm-linux-gcc

arm-linux-gcc2.95.3.tar.gz arm-linuxgcc2.95.3.tar.gz tar zxv arm-linuxgcc2.95.3.tar.gz /etc/bash.rc


arm-linux-

2.3 BootLoader

Bootloader

Bootloader

2-1bootloader
Bootloader
Bootloader Bootloader
Bootloader
CPU Bootloader

Bootloader Vivi UBoot


VIVi ARMg BootLoaderVIVi mizi
BootLoader ARM9 VIVi :
() Linux VIVi
VIVi VIVi

VIVi /include s3c2440.h


Platform/smdk2440.h
VIVi
:
(l) mizi VIVi vivi vi Makefile
(2)
LINIUXINCLUDEDIR: include
CROSSCOMPILE:
ARMGCCLIBS: lib
(3) arch/s3c2440/smdk.c nandflash
(4)
(5)#makemenucofig VIVi
(6)#make vivi VIVi VIVi
vivi
10

Vivi JTAG Nandflash Ox00 Vivi

3.4 Linux
Linux
Linux
makemenucoonfig

(1)makeclean
(2)makedep
(3)makezlmage
/arch/arm/boot zImage
minicom Bootloader Linux
flash tftp
tftp flash kernel zImage

11

3.5
NANDFlash
Flash
Flash

Linux (
)Linux
Linux

RAMFSJFFS2CRAMFS
CRAMFS Linux2.4

Flash
Flash RAM
RAM CRAMFS
image kernel/script/cramfs image
mkcramfs
/mnt image root.cramfs
./mkcramfs /mnt root.cramfs
CRAMFS kemel make menuconfig
MTD(MemoryTechnologyDeviee)
insmod
CRAMFS
mtdblock0 31 30
kernel/include/linux/mtd/mtd.h
CRAMFS :
tftp flash root root.cramfs

12

4
4.1 Linux

API

(1)
(2)
(3)
(4)
Linux
(cb)
2

Linux
(1)
(DMA )

(2) IO
13

(3) Linux
Linux

4.2
I/O

(1) open IO
open open IO
open

int (*open)(struct innod*,struct file* )


(2)close close

int (*release)(struct innod*,struct file* )


(3)read IO

ssize_t(*read)(struet flle*,char*,size_st,loff_t*):
(4)write IO

ssize_t(*write)(struet flle*,const char*,size_st,loff_t*):


(5)ioctl

14

int (*ioctl)(struct inode*,struct file*,unsighed int,unsighed long)

4.3Linux
Linux
;.o (module)

/dev
mknod

/proc/devices
4-1

Open read write

/etc/modules.conf

Mknod

Insmod

read writ

4-1

15

4.4USB
ov511 zc301 zc301
ov511
s3c2410 ov511
Linux Video for Linux( V4L)

USB

Linux
/dev/video0 81
mknod /dev/video0 C 81 0 4-2

4-2

16

5 Linux
5.1
USB

Linux Video4Linux
APIVideo4Linux

Linux V4L OV511


Linux V4L (API)
OV5n Linux Video4Linux
Minor range

/dev/video
0-63

/dev/radio
64-127
AM/FM
/dev/vtx
193-224

/dev/vbi
224-239
VBI
/dev/video usb hub
usb host cat/proc/devices video capture device
81 ls -l/dev video0 0 mknod
/dev/video0 c 81 0V4L /dev/video USB
/dev/v4l/video0 V4L In -s/dev/v4l/video0
/dev/video0 V4L video video0

5.2 v4l
5.2.1Video4linux
Video4linux
1 video_capability

17

name[32] //
maxwidth maxheightminwidthminheight
Channels //
type // capture VID_TYPE_CAPTURE

Int camere_get_capability(camera_device*vd){
if(ioctl(vdfdVIDIOCGCAP&(vdcapability))<0){
Permr(camer_get_cability:):
Return -1;
}
Return 0; }
2video_picture
video-picnire

Int camere_get_picture(camere_device*vd){
if(ioetl(vdfdVIDIOCGPICT&(vdPicture))<0){
Perror(camera _get_picture:)
Return -1;
}
Return 0}
(3) video-picture VIDIOCGPICT
VdPicture.colour=65535;
if(ioctl(vdfdVIDIOCGPICT&(vdpicture))<0){
Perror(camere_get_pIcture:):
Return -1;}
(4) channel vdc ability :
for(i=0 :I <vdcapability.channels: i++)
{
Vdchannel[i].channel=i:
if(ioetl(vdfdVIDIOCGCHAN&(vdchannel[i]))<0){
18

Perror(camera_get_channel:):
Return -1;}

5.2.2

: read() mmap()read
mmap ()
mmap () I/O

mmap()
mmap () mmap ():
ioctl VIDIOCSFBUF
video_mbuf, video_mmap

memset(&(vd->videombuf)0sizeof(vd->videombuf))
vd->map=(unsigned

char*)mmap(0 vd->mbuf.size PROT_READ|

PROT_WRITEMAPSHAREDvd->fdff_t offset)
0
offset
(PROT_READ()PROT_WRITE()PROT_EXEC(
)) MAP_SHARED MAP_PRIVATE
mmap()
ioctl VIDIOCMCAPTURE
VIDIOCSYNC

1

5.3 LCD
USB
19

/dev/video0
fd = open ("/dev/video0", O_ RDWR); fd
( 1)
ioct1 ( fd, VIDIOCGCAP, & vid_caps) struct video capability
vid_caps
ioctl(fd, VIDIOCGPICT, & vid_tic) voideo_picture

LCD

TCP
TCP

20

6.1 TCPIP
TCPIP NI NJT-

TCPIP TCP UDP TCP


UDP IP TCP UDP

(1)
TCP

(2)
TCP
TCP
(3)
TCP

(4)
TCP TCP
TCP (window)
TCP
(5)
TCP
TCP

21


Socket()

Bind()

Socket()

Listen()

connect()

Accept()

Recv()

send()

Send()

recv()

Close()

Recv()

6-1 TCP

6.2 webserver
Webserver HTTP Server HTTP HTTP
TCP/IP
HTTP Universal Resource LocationURL
URL +
Linux socket webserver
socket()
bind() IP
connect()listen()
socket
accept() socket

webserver 80 80
22


accept()
YUV420P JPEG
JPEG
if((size=(yuv420p_to_jpeg(&imagebmp,imageptr,640,480,20)))<0)
{
printf("Error:write jpeg error!");
}
if(!fork())
{
if(revbuf[5]==' ')
send(nsockfd, imagebmp, size, 0);
}
PC IP IP
PC IE IP http://192.168.0.115:81/
JPEG

6.3
ARM Linux
Webcam
webcam_server Linux webcam_server-0.50.tar.gz GNU
./configure Makefile src
Makefile CC /usr/local/arm/3.4.3/bin/arm-linux-gcc make
webcam_server 2410
Windows Active webcam PC IP
IP Active webcam Tools->Create Web Page
settings
Video Device Network IP CameraPreview Frame Rate8 framesper
secCamera ModelActive WebCam HTTP ServerIP Adress or URL192.168.0.115

23

IP Port8888
PC 1
320240.AWLive
C:\Program Files\Active WebCam\Gallery Active WebCam Video
Record

24

You might also like