• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于物聯(lián)網(wǎng)的實時語音通信研究及其應(yīng)用

    2014-03-07 14:49陳先財孫俊杰張久鵬張偉
    物聯(lián)網(wǎng)技術(shù) 2014年2期
    關(guān)鍵詞:實時物聯(lián)網(wǎng)嵌入式

    陳先財+孫俊杰+張久鵬+張偉

    摘 要:物聯(lián)網(wǎng)是新一代信息技術(shù)的重要組成部分,語音的實時通話在物聯(lián)網(wǎng)時代中更加體現(xiàn)出科技的不斷應(yīng)用與創(chuàng)新。文章主要介紹了物聯(lián)網(wǎng)下的音頻實時通信技術(shù)。具體闡述了系統(tǒng)方案的分析與技術(shù),以及系統(tǒng)平臺的搭建和實現(xiàn)方法,同時結(jié)合病房信息管理系統(tǒng)項目的實例,分析了語音通話的設(shè)計和實現(xiàn)方法。

    關(guān)鍵詞:物聯(lián)網(wǎng);嵌入式;實時;語音;病房信息管理系統(tǒng)

    中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2014)02-0075-03

    0 引 言

    在物聯(lián)網(wǎng)的時代中信息技術(shù)和網(wǎng)絡(luò)技術(shù)發(fā)展迅速,多媒體的應(yīng)用越來越廣泛,隨著物聯(lián)網(wǎng)的概念不斷深入人心,可尋址、可通信、可控制、泛在化與開放模式正逐漸成為物聯(lián)網(wǎng)發(fā)展的演進(jìn)目標(biāo)。對物聯(lián)網(wǎng)的多媒體的通信的要求越來越高,需求越來越多,就急需針對物聯(lián)網(wǎng)下的應(yīng)用及其開發(fā),以達(dá)到良好的實時通話的性能。

    1 系統(tǒng)方案的分析與設(shè)計

    在物聯(lián)網(wǎng)中系統(tǒng)方案有很多,不同的系統(tǒng)體系使設(shè)計難易程度也不同。隨著技術(shù)的不斷發(fā)展,對系統(tǒng)整體的設(shè)計越來越看重。使得選取系統(tǒng)方案成為整個設(shè)計與實現(xiàn)的重點。

    1.1 Linux系統(tǒng)

    嵌入式系統(tǒng)一般指非PC系統(tǒng),把微處理器(CPU)或者微控制器(MCU)的系統(tǒng)電路與專用軟件相互結(jié)合,以應(yīng)用為中心、計算機為基礎(chǔ)、軟硬件可裁剪、適用于應(yīng)用系統(tǒng),對功能、性能等特殊處理的專用系統(tǒng)。

    嵌入式系統(tǒng)是將先進(jìn)的電子技術(shù)應(yīng)用相結(jié)合后的產(chǎn)物,決定了該行業(yè)是一個技術(shù)密集型、資金密集型、不斷創(chuàng)新的集成電路系統(tǒng)。例如風(fēng)河的Vxworks之所以在火星車上得以應(yīng)用,則是因為其高實時性和高可靠性。

    嵌入式系統(tǒng)必須根據(jù)應(yīng)用需求對軟硬件進(jìn)行裁剪,滿足應(yīng)用系統(tǒng)的功能、可靠性、成本、體積等要求。所以,建立類似的軟硬件基礎(chǔ),然后在此基礎(chǔ)上開發(fā)出各種應(yīng)用需要的系統(tǒng)。目前的嵌入式系統(tǒng)的核心往往是一個只有幾KB到幾十KB的微內(nèi)核,需要根據(jù)實際的應(yīng)用進(jìn)行功能擴(kuò)展或者裁減,但是由于微內(nèi)核的存在,使得這種擴(kuò)展能夠非常順利的進(jìn)行。為此本文選用的是Linux系統(tǒng)。

    Linux系統(tǒng)的前身基于Unix操作系統(tǒng),是一個基于POSIX和Unix的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。

    Linux的基本思想:所有的都是文件;每個文件都有特定的功能。包括命令、硬軟件設(shè)備、操作系統(tǒng)、進(jìn)程等等對于操作系統(tǒng)內(nèi)核而言,都被視為擁有各自特點的文件。

    Linux是一款免費的操作系統(tǒng),用戶可以通過網(wǎng)絡(luò)或其他途徑免費獲得,并可以任意修改其源代碼。這是其他操作系統(tǒng)所做不到的。正是由于這一點,來自全世界的無數(shù)程序員參與了Linux的修改、編寫工作,程序員可以根據(jù)自己的興趣和靈感對其進(jìn)行改變,這讓Linux吸收了無數(shù)程序員的精華,不斷壯大。

    完全兼容POSIX 1.0標(biāo)準(zhǔn)使得可以在Linux下通過相應(yīng)的模擬器運行常見的DOS、Windows的程序。是用戶從Windows轉(zhuǎn)到Linux奠定了基礎(chǔ)。

    Linux支持多用戶性,各個用戶對于自己的文件設(shè)備有自己特殊的權(quán)限,保證了各用戶之間互不影響。

    Linux可以運行在多種硬件平臺上,如具有x86、680x0、SPARC、Alpha等處理器的平臺。此外Linux還是一種嵌入式操作系統(tǒng),可以運行在電腦、手機等上。

    1.2 ARM處理器

    作為一種嵌入式處理器,ARM處理器以低成本、高性能。得到了廣大公司及個人的喜愛。目前,ARM處理器已廣泛應(yīng)用于工業(yè)控制、消費電子產(chǎn)品、通信等領(lǐng)域。

    ARM處理器的主要特點如下:

    (1)體積小、低功耗、低成本、高性能;

    (2)支持Thumb(16)/ARM(32位)雙指令集,能很好地處理兼容性;

    (3)大量使用寄存器,指令執(zhí)行速度更快;

    (4)大多數(shù)數(shù)據(jù)操作都在寄存器中完成;

    (5)尋址方式靈活簡單,執(zhí)行效率高;

    (6)指令長度固定。

    ARM提供一系列內(nèi)核、體系擴(kuò)展、微處理器和系統(tǒng)芯片方案。目前非常流行的ARM芯核有ARM7 TDMI,ARM720T,ARM9 TDMI,ARM922T,ARM940T,ARM946T,ARM966T,ARM10 TDMI等。本文所選用是ARM11系列,其內(nèi)核時鐘頻率為350~500 MHZ,ARM11處理器的功耗可以低至0.4 mW/MHz。ARM11處理器采用了易于綜合的流水線結(jié)構(gòu),并和常用的綜合工具以及ARM compiler良好結(jié)合,多媒體處理擴(kuò)展使MPEG4編碼/解碼加快一倍,音頻處理加快一倍,增強的異常和中斷處理使實時任務(wù)的處理更加迅速。

    1.3 OSS與CSS

    在聲卡的驅(qū)動有兩種;OSS(開放聲音系統(tǒng));ALSA(先進(jìn)Linux聲音架構(gòu))。Kernel 2.6內(nèi)核支持ALSA了,但是OSS編程是比較容易上手的,也比較符合Linux的編程框架,而且ALSA配置的時候也可選擇OSS支持,這樣OSS應(yīng)用程序無需更改就可使用ALSA驅(qū)動。為此本文選用OSS類型。

    2 系統(tǒng)實現(xiàn)平臺的搭建

    2.1 軟件搭建

    2.1.1 Linux環(huán)境的配置

    首先是要安裝Ubuntu 10.04.04 。Ubuntu是一個以桌面應(yīng)用為主的Linux操作系統(tǒng)。其次是應(yīng)當(dāng)設(shè)置Ubuntu網(wǎng)絡(luò)參數(shù),以實現(xiàn)PC機與開發(fā)板通信。然后就是安裝交叉編譯器:

    # cd /forlinx (進(jìn)入/forlinx目錄)

    # mkdri /usr/local/arm

    #tar zxvf arm-linux-gcc-4.3.2.tgz -C /

    把交叉編譯器路徑添加到系統(tǒng)環(huán)境變量中,以后就可以直接在終端窗口中輸入arm-linux-gcc命令來編譯程序。接著是在終端中執(zhí)行:vi /etc/profie

    再就是添加以下4行到該文件中:

    export PATH=/usr/local/arm/4.3.2/bin:$PATH

    export TOOLCHAIN=/usr/local/arm/4.3.2

    export TB_CC_PREFIX=arm-linuxexport

    PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi

    最后保存并退出。重新啟動系統(tǒng),在終端里面執(zhí)行arm-linux-gcc 并回車。

    2.1.2 內(nèi)核移植及根文件系統(tǒng)的制作

    內(nèi)核移植的方法如下:

    (1) 編譯 Linux-3.0.1

    即將壓縮包‘FORLINX_linux-3.0.1.tar.gz 拷貝到工作目錄下,然后解壓縮:

    #tar zxf FORLINX_linux-3.0.1.tar.gz

    (2) 配置內(nèi)核

    配置內(nèi)核需要先安裝‘libncurses5,以方便使用‘make menuconfig 命令:

    #sudo apt-get install libncurses5-dev

    如果執(zhí)行命令后無法找到libncurses5-dev 安裝包,那就需要先執(zhí)行#sudo apt-get update,再執(zhí)行#sudo apt-get install libncurses5-dev

    (3) 編譯內(nèi)核

    編譯內(nèi)核的命令如下:

    #make zImage

    編譯結(jié)束后,將在內(nèi)核源碼目錄的arch/arm/boot 中得到Linux 內(nèi)核映像文件:zImage

    根文件制作可以分為如下步驟:

    (1)創(chuàng)建根文件系統(tǒng)的目錄;

    (2)創(chuàng)建設(shè)備文件;

    (3)安裝./etc;

    (4)編譯內(nèi)核模塊; 即進(jìn)入Linux內(nèi)核目錄 make modules APCH = arm

    CROSS_COMPILE = arm-linux-

    (5)安裝內(nèi)核模塊;

    (6)配置busybox; 即進(jìn)入busybox目錄執(zhí)行 make menuconfig,選中“Bulidbox as a static binary ”,靜態(tài)鏈接。

    Cross compile prefix(arm-linux-)

    Installation Options —>

    然后選中“Dont use/usr”,再選中該項可以避免busybox被安裝到宿主系統(tǒng)的/usr目錄下,破壞宿主系統(tǒng)。

    (7)編譯、安裝busybox;

    Make ARCH = arm CROSS_COMPILE = arm-linux- Make install

    2.1.3 音頻驅(qū)動移植

    音頻驅(qū)動移植的程序代碼如下:

    $ make menuconfig

    Device Drivers --->

    <*> Sound card support --->

    <*> Advanced Linux Sound Architecture --->

    <*> OSS Mixer API

    <*> OSS PCM (digital audio) API

    [*] OSS PCM (digital audio) API - Include pugin system

    <*> ALSA for SoC audio support --->

    <*> ASoC support for Samsung

    <*> SoC AC97 Audio support for SMDKC100 - WM9713

    2.2 硬件搭建

    嵌入式系統(tǒng)的硬件一般包括處理器/微處理器、存儲器及外設(shè)器件和輸入輸出端口等。圖1所示是嵌入式系統(tǒng)的硬件示意圖。

    圖1 嵌入式系統(tǒng)硬件示意圖

    2.3 Ok6410開發(fā)板

    S3C6410是由三星公司推出的一款低功耗、高性價比的處理器,它基于ARM11的內(nèi)核,可應(yīng)用于移動電話和通用處理等領(lǐng)域;S3C6410為2.5G和3G通信服務(wù)提供了優(yōu)化的硬件性能,內(nèi)置強大的硬件加速器:包括運動視頻處理、音頻處理、2D加速、顯示處理和縮放等;集成了一個MFC(Multi-Format video Codec)支持MPEG4 /H.263/H.264編解碼和VC1的解碼,可以提供實時的視頻會議以及NRSC和PAL制式的TV輸出;除此之外,該處理器內(nèi)置一個采用最先進(jìn)技術(shù)的3D加速器,支持OpenGL ES 1.1/ 2.0和D3DMAPI, 能實現(xiàn)4M triangles/s的3D加速;同時,S3C6410包含了優(yōu)化的外部存儲器接口,該接口能滿足在高端通信服務(wù)中的數(shù)據(jù)帶寬要求。由于以上突出的性能表現(xiàn),著名的蘋果公司手機Iphone就是基于S3C6410處理器。

    OK6410開發(fā)板基于三星公司最新的ARM11處理器S3C6410,擁有強大的內(nèi)部資源和視頻處理能力,可穩(wěn)定運行在667 MHz主頻以上,支持Mobile DDR和多種NAND FLASH。OK6410開發(fā)板上集成了多種高端接口,如復(fù)合視頻信號、攝像頭、USB、SD卡、液晶屏、以太網(wǎng),并配備溫度傳感器和紅外接收頭等。

    3 實時語言程序的設(shè)計

    本系統(tǒng)的實時語言程序的設(shè)計代碼如下:

    //初始化聲卡

    int init_soundcard (int oflag)

    { /* 打開聲音設(shè)備 */

    fd = open("/dev/dsp", oflag);

    /* 設(shè)置采樣時的量化位數(shù) */

    status = ioctl(fd, SOUND_PCM_WRITE_BITS, &arg);

    /* 設(shè)置采樣時的聲道數(shù)目 */

    status=ioctl(fd,SOUND_PCM_WRITE_CHANNELS, &arg); /* 設(shè)置采樣時的采樣頻率 */

    status = ioctl(fd, SOUND_PCM_WRITE_RATE, &arg);

    ...

    //錄音函數(shù)

    int recorddata(int soundfdr, unsigned char *buf)

    { ...

    status=read(soundfdr,buf, (LENGTH*RATE*SIZE*CHANNELS/8000)); // 錄音

    //close (soundfd);

    }

    //聲音播放程序

    int playsound(int soundfdw, unsigned char *buf)

    {

    status=write(soundfdw,buf, (LENGTH*RATE*SIZE*CHANNELS/8000)); /* 回放 */

    }

    While(1)

    {

    ...

    playsound (soundfdw, buf1);

    recorddata (soundfdr , buf1);

    playsound (soundfdw, buf2);

    recorddata (soundfdr , buf2);

    ...

    }

    4 結(jié) 語

    本文開發(fā)的基于Linux 的嵌入式系統(tǒng)應(yīng)用醫(yī)院病房管理系統(tǒng),能滿足醫(yī)院病房、護(hù)士站系統(tǒng)提出的語音通信的要求,保證任務(wù)完成的實時性、可靠性、實現(xiàn)護(hù)士與病人的即時通信。相對于傳統(tǒng)的系統(tǒng)更容易實現(xiàn)系統(tǒng)集成和維護(hù)。在語音實時通信領(lǐng)域有很好的應(yīng)用前景。

    參 考 文 獻(xiàn)

    [1]司永衛(wèi).實時語言傳輸系統(tǒng)的設(shè)計與軟件實現(xiàn)[D].成都:成都理工大學(xué),2011.

    [2]飛凌嵌入式.OK6410開發(fā)板硬件手冊[R].2012.

    [3]程昌南.ARM Cortex-A8硬件設(shè)計DIY[M].北京:北京航空航天大學(xué)出版社.2012.

    [4]楊黎明.基于RTP協(xié)議的實時語音傳輸研究與實現(xiàn)[D].武漢:華中科技大學(xué),2007.

    [5]史蒂文斯,拉戈,尤晉元,張亞英.UNIX環(huán)境高級編程[M].北京:人民郵電出版社,2006.

    [6]WALL K.GNU/Linux編程指南(第二版)[M].張輝,譯. 北京:清華大學(xué)出版社,2002.

    [7]劉華,李軍紅,陽武嬌.基于PXA255的VOIP語音傳輸系統(tǒng)研究[J]. 電子技術(shù),2011(9):79-81.

    3 實時語言程序的設(shè)計

    本系統(tǒng)的實時語言程序的設(shè)計代碼如下:

    //初始化聲卡

    int init_soundcard (int oflag)

    { /* 打開聲音設(shè)備 */

    fd = open("/dev/dsp", oflag);

    /* 設(shè)置采樣時的量化位數(shù) */

    status = ioctl(fd, SOUND_PCM_WRITE_BITS, &arg);

    /* 設(shè)置采樣時的聲道數(shù)目 */

    status=ioctl(fd,SOUND_PCM_WRITE_CHANNELS, &arg); /* 設(shè)置采樣時的采樣頻率 */

    status = ioctl(fd, SOUND_PCM_WRITE_RATE, &arg);

    ...

    //錄音函數(shù)

    int recorddata(int soundfdr, unsigned char *buf)

    { ...

    status=read(soundfdr,buf, (LENGTH*RATE*SIZE*CHANNELS/8000)); // 錄音

    //close (soundfd);

    }

    //聲音播放程序

    int playsound(int soundfdw, unsigned char *buf)

    {

    status=write(soundfdw,buf, (LENGTH*RATE*SIZE*CHANNELS/8000)); /* 回放 */

    }

    While(1)

    {

    ...

    playsound (soundfdw, buf1);

    recorddata (soundfdr , buf1);

    playsound (soundfdw, buf2);

    recorddata (soundfdr , buf2);

    ...

    }

    4 結(jié) 語

    本文開發(fā)的基于Linux 的嵌入式系統(tǒng)應(yīng)用醫(yī)院病房管理系統(tǒng),能滿足醫(yī)院病房、護(hù)士站系統(tǒng)提出的語音通信的要求,保證任務(wù)完成的實時性、可靠性、實現(xiàn)護(hù)士與病人的即時通信。相對于傳統(tǒng)的系統(tǒng)更容易實現(xiàn)系統(tǒng)集成和維護(hù)。在語音實時通信領(lǐng)域有很好的應(yīng)用前景。

    參 考 文 獻(xiàn)

    [1]司永衛(wèi).實時語言傳輸系統(tǒng)的設(shè)計與軟件實現(xiàn)[D].成都:成都理工大學(xué),2011.

    [2]飛凌嵌入式.OK6410開發(fā)板硬件手冊[R].2012.

    [3]程昌南.ARM Cortex-A8硬件設(shè)計DIY[M].北京:北京航空航天大學(xué)出版社.2012.

    [4]楊黎明.基于RTP協(xié)議的實時語音傳輸研究與實現(xiàn)[D].武漢:華中科技大學(xué),2007.

    [5]史蒂文斯,拉戈,尤晉元,張亞英.UNIX環(huán)境高級編程[M].北京:人民郵電出版社,2006.

    [6]WALL K.GNU/Linux編程指南(第二版)[M].張輝,譯. 北京:清華大學(xué)出版社,2002.

    [7]劉華,李軍紅,陽武嬌.基于PXA255的VOIP語音傳輸系統(tǒng)研究[J]. 電子技術(shù),2011(9):79-81.

    3 實時語言程序的設(shè)計

    本系統(tǒng)的實時語言程序的設(shè)計代碼如下:

    //初始化聲卡

    int init_soundcard (int oflag)

    { /* 打開聲音設(shè)備 */

    fd = open("/dev/dsp", oflag);

    /* 設(shè)置采樣時的量化位數(shù) */

    status = ioctl(fd, SOUND_PCM_WRITE_BITS, &arg);

    /* 設(shè)置采樣時的聲道數(shù)目 */

    status=ioctl(fd,SOUND_PCM_WRITE_CHANNELS, &arg); /* 設(shè)置采樣時的采樣頻率 */

    status = ioctl(fd, SOUND_PCM_WRITE_RATE, &arg);

    ...

    //錄音函數(shù)

    int recorddata(int soundfdr, unsigned char *buf)

    { ...

    status=read(soundfdr,buf, (LENGTH*RATE*SIZE*CHANNELS/8000)); // 錄音

    //close (soundfd);

    }

    //聲音播放程序

    int playsound(int soundfdw, unsigned char *buf)

    {

    status=write(soundfdw,buf, (LENGTH*RATE*SIZE*CHANNELS/8000)); /* 回放 */

    }

    While(1)

    {

    ...

    playsound (soundfdw, buf1);

    recorddata (soundfdr , buf1);

    playsound (soundfdw, buf2);

    recorddata (soundfdr , buf2);

    ...

    }

    4 結(jié) 語

    本文開發(fā)的基于Linux 的嵌入式系統(tǒng)應(yīng)用醫(yī)院病房管理系統(tǒng),能滿足醫(yī)院病房、護(hù)士站系統(tǒng)提出的語音通信的要求,保證任務(wù)完成的實時性、可靠性、實現(xiàn)護(hù)士與病人的即時通信。相對于傳統(tǒng)的系統(tǒng)更容易實現(xiàn)系統(tǒng)集成和維護(hù)。在語音實時通信領(lǐng)域有很好的應(yīng)用前景。

    參 考 文 獻(xiàn)

    [1]司永衛(wèi).實時語言傳輸系統(tǒng)的設(shè)計與軟件實現(xiàn)[D].成都:成都理工大學(xué),2011.

    [2]飛凌嵌入式.OK6410開發(fā)板硬件手冊[R].2012.

    [3]程昌南.ARM Cortex-A8硬件設(shè)計DIY[M].北京:北京航空航天大學(xué)出版社.2012.

    [4]楊黎明.基于RTP協(xié)議的實時語音傳輸研究與實現(xiàn)[D].武漢:華中科技大學(xué),2007.

    [5]史蒂文斯,拉戈,尤晉元,張亞英.UNIX環(huán)境高級編程[M].北京:人民郵電出版社,2006.

    [6]WALL K.GNU/Linux編程指南(第二版)[M].張輝,譯. 北京:清華大學(xué)出版社,2002.

    [7]劉華,李軍紅,陽武嬌.基于PXA255的VOIP語音傳輸系統(tǒng)研究[J]. 電子技術(shù),2011(9):79-81.

    猜你喜歡
    實時物聯(lián)網(wǎng)嵌入式
    搭建基于Qt的嵌入式開發(fā)平臺
    嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
    一種改進(jìn)的混音算法的研究與實現(xiàn)
    中國或成“物聯(lián)網(wǎng)”領(lǐng)軍者
    Altera加入嵌入式視覺聯(lián)盟
    倍福 CX8091嵌入式控制器
    兴宁市| 曲靖市| 宁武县| 怀柔区| 平顺县| 泸西县| 岱山县| 武宁县| 三都| 阿克陶县| 炎陵县| 阿荣旗| 禄丰县| 黄大仙区| 安乡县| 房山区| 新乐市| 临武县| 崇明县| 太保市| 绩溪县| 东方市| 永年县| 永修县| 东光县| 余干县| 方山县| 太和县| 阳春市| 凤庆县| 元江| 萝北县| 东阳市| 青田县| 襄垣县| 祁阳县| 玛多县| 呼图壁县| 惠安县| 抚顺县| 建宁县|