嵌入式课程设计基于ARM9的视频监控系统.docx
《嵌入式课程设计基于ARM9的视频监控系统.docx》由会员分享,可在线阅读,更多相关《嵌入式课程设计基于ARM9的视频监控系统.docx(15页珍藏版)》请在冰豆网上搜索。
![嵌入式课程设计基于ARM9的视频监控系统.docx](https://file1.bdocx.com/fileroot1/2023-5/27/535f17da-67d5-4170-aaeb-8fb279a11703/535f17da-67d5-4170-aaeb-8fb279a117031.gif)
嵌入式课程设计基于ARM9的视频监控系统
基于ARM9的视频监控系统
摘 要
论述了基于ARM微核的微处理器上的嵌入式Linux操作系统的移植技术,结合具体实例给出了在特定硬件平台上的实现过程,并且详细说明了如何建立交叉开发环境的方法。
对其他嵌入式操作系统的开发同样具有参考意义。
关键词 :
操作系统;ARM;Linux
Abstract
PortingtechniqueofembeddedLinuxoperatingsystembasedonARMisdiscussedinthispaper.Theportingprocessonthespecialhardwareplatformisimplementedandcross2compileenvironmentisbuildedwiththeconcreteexamples.TheembeddedLinuxportingishelpfultoexploitotherembededoperatingsystem.
Keywords:
operatingsystem;ARM;Linux
1.课程设计目的
1)掌握Linux开发坏境的搭建;
2)了解Linux内核的配置和文件系统的制作;
3)掌握bootloader、内核和文件系统的移植;
4)巩固本学期所学的关于“嵌入式Linux操作系统”方面的知识。
2.课程设计题目描述和要求
2.1设计的意义
伴随着嵌入式技术、图像处理技术和无线网络传输技术的发展,传统模拟视频监控系统和基于PC的远程视频监控系统由于自身的不足,已经无法满足现代社会应用中不断涌现出来的新需求,于是基于嵌入式技术的无线网络数字视频监控系统就应因而生了。
例如远程监控、远程教学、远程医疗诊断、远程购物、远程探视、电视电话会议等应用都迫切需要高质量的网络视频传输的支持。
考虑到了所用的硬件设备大部分都已经具备和我们所学到的知识及本身的能力有限,选择基于ARM9的视频监控系统作为我们本次的课程设计题目是比较实际而且比较容易掌握嵌入式开发的基本方法,这也为将来实现无线视频监控系统打下坚实的基础[1]。
2.2设计实现功能要求
1)利用USB摄像头进行采集图像数据的采集;
2)利用S3C2440对所采集到图像数据进行压缩;
3)通过以太网卡模块将压缩后的图像信息发送到网络上。
2.3设计用到的设备
1)带有串口和并口的计算机
2)友善之臂开发板
3)USB摄像头
4)JTAG调试器
5)串口线
3.课程设计报告内容
3.1系统的工作原理
系统可以分为4个模块:
图像采集模块、图像存储模块、图像处理与系统控制模块、图像数据发送模块。
系统在S3C2440的控制下从USB摄像头采集图像数据,然后经过DMA方式将图像数据传输到内存缓冲区中,由软件将图像数据读出并对图像数据进行压缩和打包处理后存入Flash中,最后经过以太网络发送到远程接收端服务器。
本系统的设计难点是如何保证内存中图像数据的读取与USB摄像头的同步以及图像数据的实时处理。
系统采用S3C2440作为嵌入式处理器,由于S3C2440高达400MHz的处理能力,完全可以完成图像数据的实时处理需求,比一般采用添加图像硬件处理模块减少了系统的成本[2]。
3.2建立Linux开发环境
3.2.1安装Fedora9.0
3.2.2建立交叉编译环境
搭建交叉编译环境是嵌入式开发的第一步,也是必备的一步。
搭建交叉环境的方法很多,不同的体系结构、不同的操作内容甚至是不同版本的内核,都会用到不用的交叉编译器,选择合适的交叉编译器对于嵌入式开发是非常重要的。
由于我们本次用到的是linux2.6.32.2内核,故我们选择了编译器arm-linux-gcc-4.3.2[3]。
以下安装交叉编译器的步骤:
1、下载交叉编译器arm-linux-gcc-4.3.2,下载地址:
http:
//www.handhelds.org/download/projects/toolchain/arm-linux-gcc-4.3.2.tar.bz2
2、复制arm-linux-gcc-4.3.2.tar.bz2到目录tmp/下并解压:
#cd/tmp
#tarxvzfarm-linux-gcc-4.3.2.tar.bz2
3、把编译器路径加入系统环境变量,运行命令
#gedit/root/.bashrc
编辑/root/.bashrc文件,在最后一行设置:
exportPATH=$PATH:
/usr/local/arm/4.3.2/bin
3.2.3解压安装源代码和工具
1、下载linux2.6.32.2内核源代码
下载地址:
http:
//www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.2.tar.gz
2、复制内核代码至目录/tmp/linux并解压
#tar–xvzflinux-2.6.32.2.tar.gz
3、解压目标文件系统
这里我们使用现有的根文件系统资源root_qtopia-20100108.tgz,将它复制至目录/usr/src并解压
#tar–xvzfroot_qtopia-20100108.tgz
4、安装目标文件系统映象制作工具mkyaffs2image
要把上一步中的root_qtopia目录烧写入目标板中使用,就需要使用相应的mkyaffs2image工具,它是一个命令行的程序,使用它可以把主机上的目标文件系统目录制作成一个映象文件,以烧写到开发板中[4]。
#tarxvzf/tmp/linux/mkyaffs2image.tgz–C/
3.2.4配置网络文件系统NFS服务
1、设置共享目录
运行命令#gedit/etc/exports
编辑nfs服务的配置文件,添加以下内容:
/opt/FriendlyARM/mini2440/root_qtopia*(rw,sync,no_root_squash)
其中:
/opt/FriendlyARM/mini2440/root_qtopia表示nfs共享目录,它可以作为开发板的根文件系统通过nfs挂接;*表示所有的客户机都可以挂接此目录rw表示挂接此目录的客户机对该目录有读写的权力;no_root_squash表示允许挂接此目录的客户机享有该主机的root身份[5]
2、启动NFS服务
在命令行下运行:
#/etc/init.d/nfsstart
3.3定制Linux内核
Linux内核是一个社区共同开发的作品,具备一个现代操作系统的所有功能,并能对绝大多数硬件提供支持。
然而,我们本次设计有很多功能都没有用到的,为了尽可能减少编译出来的内核体积,在配置内核时,只需要配置需要用到的模块。
常用的配置内核的方法有makeconfig,makemenuconfig和makexconfig这里我们使用最广泛的makemenuconfig[6]。
执行“makemenuconfig”,可进入配置内核界面:
1、配置CPU平台选项
在主菜单里面,选择SystemType,按回车进入,使用上下方向控制键一直找到S3C2440机器平台选项,可以进入S3C2400Machines子菜单,可以看到里面有很多常见的使用S3C2440的目标板平台选项,在此选“FriendlyARMMini2440developmentboard”[7]
2、配置万能驱动USB摄像头
在DeviceDrivers菜单里面,选择Multimediadevices,回车进入,选择如图“*”号选项,并选择Videocaptureadapters进入
出现如图菜单,找到如图选项并进入
出现如图菜单,选择如图“*”号选项,再选GSPCAbasedwebcams进入
这里我们选择所有类型USB摄像头的支持
1)配置网卡驱动
要配置网卡驱动,首先要配置网络协议支持.在主菜单中,选择Netwokingsupport,回车进入子菜单,选择Networkingoptions并进入下一级菜单,如图配置选项
选择完毕,一直退回到主菜单,并选择进入DeviceDrivers菜单。
找到Networkdevicesupport,选择进入下一级菜单,找到并进入Ethernet(10or100Mbit)选项[8],选中:
<*>GenericMediaIndependentInterfacedevicesupport
<*>DM9000support
2)配置串口驱动
在Characterdevices菜单中,选择进入Serialdrivers--->,选择如图选项,来配置串口驱动
3)配置yaff2s文件系统的支持
要使用yaffs2文件系统,需要先配置nandflash驱动支持,在Devicedrivers菜单中选择MTD选项,按回车进入,找到NANDDeviceSupport选项并进入,如图选择NandFlash驱动支持
返回到内核配置主菜单,找到Filesystems选项进入,然后找到选项Miscellaneousfilesystems并进入,再找到YAFFS2支持选项,如图选择
4)配置NFS文件系统
在FileSystem菜单中,选择NetworkFileSystems文件系统的支持且进入,选择如图选项,这样配置编译出的内核就可以通过NFS启动系统了。
完成内核的配置并保存好,接着执行命令:
#makedep;生成依赖文件
#makezImage;生成压缩的内核影象文件
3.4制作目标文件系统映象
进入/opt/FriendlyARM/mini2440工作目录,执行以下命令:
#cd/opt/FriendlyARM/mini2440
#mkyaffs2imageroot_qtopiaroot_qtopia.img
3.5移植bootloader
(1)打开DNW程序,接上USB电缆,根据菜单选择功能号[v]开始下载supervivi
(2)点击“USBPort->Transmit/Restore”选项,并选择打开文件supervivi开始下载。
(3)下载完毕,BIOS会自动烧写supervivi到NandFlash分区中,并返回到主菜单。
3.6移植Linux内核
(1)在BIOS主菜单中选择功能号[k],开始下载linux内核zImage
(2)点击“USBPort->Transmit”选项,并选择打开相应的内核文件zImage开始下载.
(3)下载完毕,BIOS会自动烧写内核到NandFlash分区中,并返回到主菜单
3.7移植根文件系统
(1)在BIOS主菜单中选择功能号[y],开始下载yaffs根文件系统映象文件
(2)点击“USBPort->Transmit/Restore”选项,并选择打开相应的文件系统映象文件
(3)下载完毕,BIOS会自动烧写内核到NandFlash分区中,并返回到主菜单
总结
本次设计参考了众多书籍及网络上的理论知识,在理解的基础上结合思考及实践,根据现有的硬件设备,对完整的内核代码进行了相应的裁减,配置出适合我们所设计的系统的内核。
整个过程看似有点按部就班,但真正操作起来并没有那么简单,很多时候都会出现一些莫名其妙的错误,以致无法进行下一步的操作。
这时就需要回归到理论方面的知识中去,经过多次尝试及同学的帮助才能得以解决。
参考文献
[1]李新峰、何广生。
基于ARM9的嵌入式Linux开发技术。
电子工业出版社,2008
[2]孙天泽。
嵌入式Linux操作系统。
人民邮电出版社。
2009
[3]ARM9Linux实验教程。
深圳英蓓特公司出品,2005
[4]杨水清、张剑。
ARM嵌入式Linux系统开发技术详解。
电子工业出版社,2008
[5]俞建新、王健、宋健建。
嵌入式系统基础教程。
机械工业出版社,2009
[6]Larry D;Jon N Boa Webserver 2000
[7]张丹;蔡树向;尤丹丹 基于S3C2410和Linux嵌入式系统Web服务器的研究与设计[期刊论文]-科技广场 2008(08)
[8]彭道刚;张浩 基于ARM和Linux的嵌入式Web Server设计与实现[期刊论文]-机电一体化 2008(10)