国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android 平臺(tái)的嵌入式調(diào)頻廣播系統(tǒng)設(shè)計(jì)

2013-07-20 09:40:50張宇翔
微處理機(jī) 2013年2期
關(guān)鍵詞:廣播系統(tǒng)驅(qū)動(dòng)程序調(diào)頻

黃 佳,胡 鋼,張 富,張宇翔

(1.河海大學(xué)計(jì)算機(jī)與信息學(xué)院,常州 213022;2.常州市傳感網(wǎng)與環(huán)境感知重點(diǎn)實(shí)驗(yàn)室,常州213022;3.江蘇樂眾信息技術(shù)有限公司,常州 213022)

1 引言

隨著廣播事業(yè)的不斷發(fā)展、節(jié)目頻道的增加以及服務(wù)用戶的不斷增多,在Android 智能終端上開發(fā)調(diào)頻廣播系統(tǒng)顯得日益重要。目前Android 智能終端上的廣播有兩種:一種是網(wǎng)絡(luò)廣播,無需硬件配置,依靠網(wǎng)絡(luò)電臺(tái),接收網(wǎng)絡(luò)流媒體播放數(shù)據(jù),但耗費(fèi)的數(shù)據(jù)流量大,不僅移動(dòng)網(wǎng)絡(luò)數(shù)據(jù)流量消費(fèi)貴,而且我國目前Wifi 普及率較低,因此網(wǎng)絡(luò)廣播市場(chǎng)有限;另一種是嵌入式調(diào)頻廣播,依靠移動(dòng)終端嵌入調(diào)頻廣播模塊來接收廣播電臺(tái),由于未使用移動(dòng)網(wǎng)絡(luò)數(shù)據(jù)包,消費(fèi)相對(duì)低,深得消費(fèi)者喜愛。本系統(tǒng)采用嵌入式的調(diào)頻廣播系統(tǒng)設(shè)計(jì)方法。

調(diào)頻廣播的軟硬件系統(tǒng)通過Linux 操作系統(tǒng)及其驅(qū)動(dòng)程序聯(lián)系在一起。硬件系統(tǒng)包括應(yīng)用處理器,調(diào)頻廣播接收模塊及音頻解碼器模塊。軟件系統(tǒng)是基于Android 平臺(tái),采用Linux 操作系統(tǒng),軟件核心技術(shù)應(yīng)是解決最底層調(diào)頻廣播模塊的驅(qū)動(dòng)程序開發(fā)、中間層的硬件抽象層接口和Java 本地調(diào)用函數(shù)設(shè)計(jì),以及頂層調(diào)頻廣播播放器應(yīng)用程序的設(shè)計(jì)。

2 嵌入式調(diào)頻廣播系統(tǒng)硬件設(shè)計(jì)

系統(tǒng)硬件結(jié)構(gòu)如圖1 所示。

本硬件系統(tǒng)采用主頻為1GHz、45nm 制程的數(shù)據(jù)處理芯片S5PC110 作為應(yīng)用處理器,主要功能是為調(diào)頻廣播接收模塊和音頻編解碼器模塊提供控制信號(hào)。應(yīng)用處理器直接向調(diào)頻廣播模塊提供32KHz的時(shí)鐘,并通過IIC 總線發(fā)送指令提供時(shí)鐘線(FM_SCL)和信號(hào)線(FM_SDA)來配置調(diào)頻廣播芯片的五種工作狀態(tài)。音頻編解碼器通過IIS 總線將數(shù)字音頻數(shù)據(jù)傳輸給應(yīng)用處理器,應(yīng)用處理器通過IIC總線控制音頻編解碼器的時(shí)序,設(shè)置采樣率及編碼比特率并配置好其通路以及AD、DA的工作模式。

圖1 硬件設(shè)計(jì)框圖

調(diào)頻廣播接收模塊由調(diào)頻廣播芯片RDA5820及帶通濾波器構(gòu)成。該模塊的功能是接收射頻FM廣播信號(hào)并解調(diào)出模擬信號(hào)。帶通濾波器采用符合調(diào)頻廣播頻率范圍的并聯(lián)諧振電路,利用LC的諧振原理實(shí)現(xiàn)對(duì)射頻信號(hào)的選頻來達(dá)到濾波效果。RDA5820 采用數(shù)字低中頻架構(gòu),有復(fù)位初始化,設(shè)置頻點(diǎn)、搜臺(tái)、工作及休眠五種狀態(tài)。濾波后的信號(hào)進(jìn)入該芯片,經(jīng)過低噪聲放大器、正交圖像抑制混頻器、可編程增益控制后,進(jìn)行模數(shù)轉(zhuǎn)換和音頻數(shù)字信號(hào)處理,再通過模數(shù)轉(zhuǎn)換得到兩路模擬信號(hào)——左聲道和右聲道廣播信號(hào)FM_OUTL FM_OUTR。這種混合信號(hào)架構(gòu)利用DSP 執(zhí)行通道選擇,調(diào)頻解調(diào)和立體音頻處理,MPX 譯碼自主完成從立體聲到單聲道的切換來限制輸出噪聲。音頻解碼器WM8994支持直接數(shù)字基帶連接并提供時(shí)鐘和數(shù)據(jù)多路復(fù)用器。由RDA5820 芯片接收工作時(shí)輸出的立體聲音頻信號(hào)連到WM8994 上的L 和R 音頻輸入端口,進(jìn)行音頻解碼后,最終以耳機(jī)或擴(kuò)音器的形式外放[1,4]。

3 基于Android的調(diào)頻廣播系統(tǒng)軟件設(shè)計(jì)

系統(tǒng)的軟件設(shè)計(jì)基于Android 平臺(tái),主要解決四個(gè)方面問題:添加內(nèi)核層的調(diào)頻廣播驅(qū)動(dòng)程序,用來驅(qū)動(dòng)調(diào)頻廣播硬件設(shè)備;設(shè)計(jì)硬件抽象層(HAL)接口,用來對(duì)Linux 內(nèi)核驅(qū)動(dòng)程序的封裝,向上提供接口,屏蔽底層實(shí)現(xiàn)細(xì)節(jié);實(shí)現(xiàn)Java 本地調(diào)用(JNI)機(jī)制,使得在Dalvik 虛擬機(jī)內(nèi)部運(yùn)行的Java 程序能夠與用其它編程語言(如C 和C ++)編寫的應(yīng)用程序和庫進(jìn)行交互操作;設(shè)計(jì)應(yīng)用程序?qū)拥恼{(diào)頻廣播播放器應(yīng)用,用來實(shí)現(xiàn)調(diào)頻廣播系統(tǒng)的應(yīng)用[2]。軟件設(shè)計(jì)流程如圖2 所示。

圖2 軟件設(shè)計(jì)流程圖

3.1 驅(qū)動(dòng)程序設(shè)計(jì)

編寫Android 系統(tǒng)Linux 內(nèi)核層驅(qū)動(dòng)程序,首先包含如#include <linux/i2c.h >、<linux/ioctl.h>等系統(tǒng)頭文件和"rda5820_fm_ctrl.h"自定義的頭文件。其關(guān)鍵設(shè)計(jì)如下:

(1)file_operations 結(jié)構(gòu)體

file_operations 結(jié)構(gòu)體是把系統(tǒng)調(diào)用和驅(qū)動(dòng)程序關(guān)聯(lián)起來的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。讀取file_operation 中相應(yīng)的函數(shù)指針,把控制權(quán)轉(zhuǎn)交給函數(shù),完成Linux 設(shè)備驅(qū)動(dòng)程序的工作。

在系統(tǒng)內(nèi)部,I/O 設(shè)備的存取操作通過特定的入口點(diǎn)進(jìn)行,這組特定的入口點(diǎn)由設(shè)備驅(qū)動(dòng)程序提供,由file_operations 結(jié)構(gòu)體向系統(tǒng)說明,定義在include/linux/fs.h中[5]。本系統(tǒng)設(shè)計(jì)的調(diào)頻廣播的file_operation 結(jié)構(gòu)體為:

使用這種語法提高了代碼的兼容性。其中open()函數(shù)為給定設(shè)備節(jié)點(diǎn)打開設(shè)備,ioct1()函數(shù)內(nèi)是一個(gè)switch{case}結(jié)構(gòu),每一個(gè)開關(guān)語句對(duì)應(yīng)一個(gè)命令碼,做出一些相應(yīng)的操作,主要對(duì)搜臺(tái)、開始、停止、獲取頻道、音量設(shè)置進(jìn)行處理,實(shí)現(xiàn)對(duì)調(diào)頻廣播設(shè)備I/O 通道的控制。

(2)驅(qū)動(dòng)入口和出口函數(shù)

在入口函數(shù)_init rda5820_driver_init()中,利用i2c_static_add_device()函數(shù)向系統(tǒng)注冊(cè)rda5820_i2c_driver 設(shè)備;在出口函數(shù)_exit rda5820_driver_exit()中,使用i2c_unregister_device()函數(shù)向系統(tǒng)注銷rda5820_i2c_driver 設(shè)備,并用module_init()和module_exit()來指定驅(qū)動(dòng)入口和出口函數(shù)[5]。

3.2 硬件抽象層(HAL)接口設(shè)計(jì)

Android的硬件抽象層(HAL)是用來隔離Linux內(nèi)核和Android 用戶空間的一個(gè)中間層。具體實(shí)現(xiàn)有兩種方式:一是沒有經(jīng)過封裝,通過直接函數(shù)調(diào)用的方式來操作硬件驅(qū)動(dòng);二是通過HAL stub 來給上層提供一個(gè)統(tǒng)一的調(diào)用接口,只要在HAL 中實(shí)現(xiàn)這些接口,用戶層的代碼無需太大改動(dòng)。本系統(tǒng)使用HAL Stub的方式來實(shí)現(xiàn),由應(yīng)用程序獲取并調(diào)用HAL stub 完成對(duì)硬件的控制,具有可移植性好的特點(diǎn)。

HAL的設(shè)計(jì)關(guān)鍵在于將三個(gè)結(jié)構(gòu)體模塊類型hw_module_t、設(shè)備類型hw_control_device_t 和模塊方法hw_ module _methods_t 實(shí)例化,再交由HAL 內(nèi)部機(jī)制調(diào)用。先用fm_module_t()函數(shù)繼承hw_module_t 結(jié)構(gòu),自定義針對(duì)調(diào)頻廣播控制的fm_control_ device_t()結(jié)構(gòu),其中包含hw_device_t 和支持的API 操作。

在HAL 實(shí)現(xiàn)了內(nèi)部結(jié)構(gòu)體之后,定義一個(gè)HAL模塊,賦予該模塊一個(gè)唯一的ID 值,用來向上層提供一個(gè)接口供其調(diào)用。該HAL 模塊為:

3.3 JNI(Java 本地調(diào)用)函數(shù)設(shè)計(jì)

Java 本地調(diào)用(JNI)使得在Dalvik 虛擬機(jī)內(nèi)部運(yùn)行的Java 程序能夠與用C、C++編程語言編寫的應(yīng)用程序和庫進(jìn)行交互操作。JNI 函數(shù)設(shè)計(jì)流程如圖3 所示。

圖3 JNI 函數(shù)設(shè)計(jì)流程圖

其中hw_get_module()調(diào)用HAL 中內(nèi)部結(jié)構(gòu)體hw_methods_t??晒┥蠈诱{(diào)用的功能函數(shù)包括調(diào)頻廣播的open()函數(shù)、getFrequency()函數(shù)、autoSearch()函數(shù)、getVolume()函數(shù)、setVolume()函數(shù)及close()函數(shù)。用JNINativeMethod fmMethods[]來表示映射關(guān)系,再通過編寫Android.mk 文件確定生成的庫文件,方便應(yīng)用層調(diào)用。

3.4 應(yīng)用程序設(shè)計(jì)

調(diào)頻廣播系統(tǒng)的應(yīng)用程序設(shè)計(jì)在Eclipse 環(huán)境中根據(jù)硬件所支持的功能和系統(tǒng)需求利用Java 語言進(jìn)行開發(fā)。本系統(tǒng)選擇耳機(jī)線作為接收天線,是因?yàn)榭紤]到直接在PCB 上布線難,且對(duì)其他高頻信號(hào)產(chǎn)生干擾,而耳機(jī)線的長度與調(diào)頻廣播的半波長相當(dāng),能有效接收信號(hào)。在應(yīng)用程序中涉及的關(guān)鍵點(diǎn)如下:定義全局變量HEADSET_STATE_PATH="/sys/class/headset/headset/status";/*系統(tǒng)內(nèi)耳機(jī)的設(shè)備文件節(jié)點(diǎn)*/;boolean isHeadsetPlugIn()函數(shù)判斷耳機(jī)是否插入;getHeadsetState()函數(shù)取得系統(tǒng)得到的耳機(jī)狀態(tài)。使用Button、TextView 和Dialog組件實(shí)現(xiàn)對(duì)調(diào)頻廣播開始、自動(dòng)搜臺(tái)、播放、手動(dòng)搜臺(tái)、切換頻道及停止的功能調(diào)用。圖4為調(diào)頻廣播系統(tǒng)應(yīng)用程序工作流程圖。圖5為調(diào)頻廣播播放器運(yùn)行圖。

4 結(jié)束語

利用Android 系統(tǒng)開源特性設(shè)計(jì)的調(diào)頻廣播系統(tǒng),可嵌入到手機(jī)、平板電腦、機(jī)頂盒、數(shù)字電視等其它終端設(shè)備,具有良好的移植和擴(kuò)展性能。Android 系統(tǒng)在移動(dòng)終端的應(yīng)用將會(huì)逐步成熟和發(fā)展,產(chǎn)品價(jià)格也將最終接近大眾消費(fèi)水平,屆時(shí)調(diào)頻廣播應(yīng)用將成為人們休閑娛樂的必備工具。

圖4 應(yīng)用程序工作流程圖

圖5 移動(dòng)終端應(yīng)用運(yùn)行界面

[1]徐博堯,楊剛.一種基于ARM-Linux的調(diào)頻廣播監(jiān)測(cè)接收機(jī)的設(shè)計(jì)[J].中國傳媒大學(xué)學(xué)報(bào)自然科學(xué)版,2010,17(2):76-80.

[2]Enck W,Ongtang M,McDaniel P.Understanding Android Security[J].Security & Privacy,IEEE.2009,7(1):50-57.

[3]劉淼.嵌入式系統(tǒng)接口設(shè)計(jì)與Linux 驅(qū)動(dòng)程序開發(fā)[M].北京:北京航空航天大學(xué)出版社.2008.

[4]張文月,馬永濤,劉開華.DRM+調(diào)頻接收機(jī)數(shù)字信號(hào)處理部分研究與實(shí)現(xiàn)[J].電子測(cè)量技術(shù),2011,34(12):16-19.

[5]Corbet Jonathan,Rubini Alessandro,Korah- Hartman Greq.Linux Device Drivers 3rd[M].Oreilly&Associates Inc.,2005.

猜你喜歡
廣播系統(tǒng)驅(qū)動(dòng)程序調(diào)頻
考慮頻率二次跌落抑制的風(fēng)火聯(lián)合一次調(diào)頻控制
能源工程(2021年5期)2021-11-20 05:50:42
淺析語音廣播系統(tǒng)在高速公路中的應(yīng)用和發(fā)展
應(yīng)急廣播系統(tǒng)中副載波的構(gòu)建與應(yīng)用
調(diào)頻發(fā)射機(jī)技術(shù)改造
調(diào)頻激勵(lì)器干擾的排除方法
粵贛高速公路對(duì)講與廣播系統(tǒng)改造
調(diào)頻引信中噪聲調(diào)幅干擾的自適應(yīng)抑制
無線電技術(shù)在廣播系統(tǒng)中的應(yīng)用研究
驅(qū)動(dòng)程序更新與推薦
驅(qū)動(dòng)程序更新與推薦
平远县| 尼勒克县| 西充县| 托克逊县| 崇州市| 闽清县| 金昌市| 婺源县| 琼中| 砀山县| 格尔木市| 郸城县| 石景山区| 和林格尔县| 民丰县| 阿拉善盟| 鄢陵县| 长葛市| 杨浦区| 大石桥市| 屯留县| 和静县| 随州市| 五大连池市| 晋城| 孝昌县| 东乌珠穆沁旗| 景谷| 望谟县| 郯城县| 临西县| 高青县| 乐山市| 嘉义县| 富锦市| 常德市| 丰原市| 民和| 凤冈县| 宁陕县| 新和县|