移动物体监控系统(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)    收藏  举报

导航