移动物体监控系统(Part1)——声音报警子系统开发
前言:
笔者最近正在总结以前做过的《移动物体监控系统》项目内容,想记录一下并分享给大家一些项目操作流程及经验,本项目总共分为四个部分为大家展示,供大家参考,如有不足,请指正!大家可以进入我的主页观看其他相关内容。
一、项目背景及功能:
(1)使用在机场,用于监测空中飞鸟,保证飞机起飞环境的安全性;
(2)使用在家庭,本该无人的时间段,有人闯入家中,可以第一时间得到通知,保护家庭财产的安全;
二、项目实现的功能:
(1)对移动物体的检测。可以对移动物体进行监测;
(2)实时声音报警。如果用户开启了移动监测模式并开启了实时报警,当现场环境发生变化时,系统当场开启声音报警,并把现场的视频、截图保存下来,留下证据;
(3)远程可视。无论使用者身在何处,都可以利用身边的电脑、手机远程看到监控环境的状况。
三、项目环境搭建
硬件设备:PC机、Tiny6410开发板(S3C6410处理器)、使用Linux支持良好的UVC摄像头、USB下载线、网线;
软件环境:PC机上安装VMware,在VMware中安装RedHat Linux系统,SecureCRT;
四、软硬件环境搭建好以后,接下来开始进入实际操作环节:
1、OSS和ALSA架构
OSS是“开放音频系统”的缩写,是Linux系统早期比较常用一种音频架构,由于到后期,OSS架构开始收费不开源,加上他自身设计的不足,对混音的支持本来就不是很好,所以Linux内核逐渐取消或减弱了对OSS架构的支持。经过后期发展,ALSA架构逐渐流行起来了,ALSA(Advanced Linux Sound Architecture)是“Linux系统高级音频架构”的缩写,架构示意图如下所示:

ALSA架构示意图
虽然现在Linux内核对OSS架构的支持有所减弱,但是还依然存在着早期大量的优秀软件,他们是基于OSS开发的,所以为了兼容OSS架构,大部分系统采用ALSA-OSS封装架构进行音频设备的控制,它既可以使用目前流行且混音控制效果良好的ALSA架构,也可以使用早期优秀的基于OSS架构开发的经典程序,具体的架构示意图如下:

ALSA-OSS封装架构
2、声卡驱动开发
为了能够使用6410开发板上的声卡,我们需要在Linux内核中配置声卡驱动模块。
(1)在Linux终端中执行“make menuconfig ARCH=arm”,进入“Device Drivers --->”,配置声卡底层驱动采用ALSA;并且选上支持ALSA-OSS封装的驱动选项;
(2)重启6410开发板。在SecureCRT窗口下,键入“reboot”、“tftp 0xc0008000 uImage”命令,重启开发板,发现在/dev/dsp、/dev/mixer并没有找到驱动文件,说明并没有真正意义上的安装成功;
(3)进行手动安装。在6410开发板光盘中可以找到“s5pv6410_hdmi.ko”、“s5pv6410_wm8960.ko”、“wm8960.ko”三个驱动文件,安装时必须先安装wm8960.ko这个驱动,才能安装其他两个,否则安装不成功。
3、嵌入式播放器移植
(1)移植madplay前的准备。madplay的移植须要下面的几个包:
libid3tag-0.15.1b.tar.gz (用于读取和编写ID3标签的库)
libmad-0.15.1b.tar.gz (高精度 MPEG 音频解码库)
zlib-1.2.3.tar.gz (提供数据压缩用的库)
(2)解压zlib-1.1.4.tar.gz。
a. 在linux终端下执行“tar xvzf zlib-1.1.4.tar.gz”解压zlib-1.1.4.tar.gz,进入zlib-1.1.4文件;
b. 在zlib-1.1.4文件下执行“mkdir _install”建立_install文件,通过键入“./configure –prefix=${PWD}/_install”(当前目录{PWD}下)配置完成:
c. 在文件中配置Makefile,修改如下内容:
CC=arm-linux-gcc
LDSHARED=arm-linux-gcc -shared -Wl,-soname,libz.so.1
CPP=arm-linux-gcc -E
AR=arm-linux-ar
RANLIB=arm-linux-ranlib
d. 执行“make”、“make _install”命令、在_install/lib/下可以看到libz.a这个文件,但由于libz.a是静态库,我们需要的是动态库libz.so,所以重新键入“./configure –shared-- –prefix=${PWD}/_install”,并重新修改Makefile,重新执行编译,可以在_install/lib/下可以看到libz.so。
(3) 编译libid3tag。与上述(2)中步骤类似,键入“tar xvzf libid3tag-0.15.1b.tar.gz”解压文件,进入libid3tag-0.15.1b文件中,在该文件下建立一个“mkdir _install”文件,键入“./configure –host=arm-linux(指明交叉工具链) –prefix=${PWD}/_install”,执行“make”、“make _install”命令,同时产生了静态库、动态库。
(4)编译libmad。键入“tar xvzf libmad-0.15.1b.tar.gz”解压文件,进入libmad-0.15.1b文件中,在该文件下建立一个“mkdir _install”文件,键入“./configure –host=arm-linux(指明交叉工具链) –prefix=${PWD}/_install”,执行“make”时出错,图中表明-fforce –mem不支持arm-linux-gcc的编译:

键入“vi Makefile”进入Makefile,找到-fforce –mem并删除它,键入“make _install”命令,同时产生了静态库、动态库。
(5) 编译madplay。
a. 键入“tar xvzf madplay-0.15.2b.tar.gz”解压文件
b. 进入madplay-0.15.2b文件中,在该文件下建立一个“mkdir _install”文件,键入“./configure –host=arm-linux(指明交叉工具链) –prefix=${PWD}/_install”
c. 执行“make”、“make _install”,即可在/_install/bin/中产生madplay。
(6)接着,需要查看midplay在编译时需要的链接库。linux终端下键入“arm-linux-readlf –d _install/bin/madplay”查找到madplay运行时所需要的链接库:libmad.so.0,libid3tag.so.0,libm.so.6,如下图所示:

(7)分别进入上述(2)、(3)、(4)中的_install文件,将其目录下的文件拷贝到linux内核中/home/rootfs/lib目录下,而libc.so.6动态库在/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/ 目录下,一样拷到根文件系统;
(8)通过samba从windows复制一首MP3后缀的歌曲到PC的Linux中NFS文件系统根目录,重命名为1.MP3,在开发板的文件系统里进行测试madplay。在SecureCRT串口里面输入madplay 1.mp3,就可以听到悦耳的歌曲了。
到此,《移动物体监控系统》的第一部分----声卡报警子系统开发便完成了。
接下来,进行《移动物体监控系统》的第二部分----摄像头子系统开发的经验分享!!!具体内容,详见我的下篇文章。
文章内容如有雷同,纯属巧合;涉及雷同的内容,作者可私聊我,我自会添上“引用”声明,感谢大家关注!
———————————————————————————————————————狂撕代码者9527
posted on 2020-08-17 11:11 Mr_Zhang2426 阅读(292) 评论(0) 收藏 举报
浙公网安备 33010602011771号