當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 《物聯(lián)網(wǎng)技術(shù)》雜志
[導(dǎo)讀]摘要:提出了一種基于ADI公司的ADSP-BF533和網(wǎng)絡(luò)芯片LAN91C111的網(wǎng)絡(luò)音頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)方案。介紹了VDK的組成與工作原理、TCP/IP堆棧移植、基于VDK的SOCKET編程、BF533和LAN91C111的電路連接,最后給出了基于VDK的網(wǎng)絡(luò)通信程序的實現(xiàn)方法。

引言

近年來,數(shù)字音頻監(jiān)控系統(tǒng)在我國發(fā)展迅猛,尤其是在廣播領(lǐng)域,該系統(tǒng)擔(dān)當(dāng)著越來越重要的角色,另外,在保證音頻信息準(zhǔn)確度和實時性的條件下,實現(xiàn)音頻數(shù)據(jù)的網(wǎng)絡(luò)傳輸也成為一項十分重要的技術(shù)。

本系統(tǒng)以BF533為核心處理芯片,以軟件工具VDSP++的自帶VDK內(nèi)核為基礎(chǔ),移植了LWIP作為網(wǎng)絡(luò)主要結(jié)構(gòu),實現(xiàn)了TCP/IP在ADSP-BF533上的移植。同時在VDK的基礎(chǔ)上,通過開發(fā)Socket服務(wù)器程序,實現(xiàn)了嵌入式網(wǎng)絡(luò)終端與上位機電腦直接的數(shù)據(jù)傳輸。

1  VDK的組成原理

VDK實際上是一種帶API函數(shù)庫的實時操作系統(tǒng)內(nèi)核.這是一款規(guī)模很小但卻十分健壯的內(nèi)核,它是VisualDSP產(chǎn)品的一部分,VDK也一樣會隨VisualDSP進行相應(yīng)的升級或改版。使用VDK從產(chǎn)品維護的角度來看,是十分方便的。使用VDK也不會帶來附加成本。它具有任務(wù)調(diào)度和任務(wù)管理功能,一共可支持32個任務(wù)。VDK是整個軟件的基礎(chǔ),所有其他的程序都運行在該Kernel±0VDK的組成部分主要包括線程、調(diào)度、信號、中斷服務(wù)程序、設(shè)備驅(qū)動、API等。

VDK的工作原理是首先引入多任務(wù)并且為每個任務(wù)都分配自己的堆??臻g,然后由任務(wù)調(diào)度器來決定哪個任務(wù)獲得內(nèi)核時間。任務(wù)調(diào)度主要涉及三種方式:

第一是合作調(diào)度方式。該方式是最簡單的調(diào)度方式,系統(tǒng)中所有線程被賦予相同優(yōu)先級的調(diào)度權(quán),系統(tǒng)中線程在運行態(tài)占用處理器資源,在阻塞態(tài)時被排列在等待隊列的最后,也可以自己調(diào)用yield函數(shù),以使線程退出運行態(tài)而進入等待隊列。另外,任何系統(tǒng)調(diào)用都會引起當(dāng)前正在運行的線程阻塞。

第二是時間片輪轉(zhuǎn)調(diào)度方式。時間片調(diào)度方式給予每一個優(yōu)先權(quán)相同的線程固定的執(zhí)行時間間隔。VDK中時間間隔是通過設(shè)定tick參數(shù)確定的。

第三是搶先式調(diào)度方式。如果等待隊列中有比正在運行的線程優(yōu)先級更高的線程,則正在運行的線程阻塞后進入等待隊列,等待隊列中優(yōu)先級最高的線程獲得執(zhí)行權(quán)。該方式提供了比其他兩種方式更有效、而且更靈活的調(diào)度方式。對嵌入式編程者來講,最熟悉的調(diào)度方式就是“時間片輪轉(zhuǎn)”的方式,在這種方式下,每個應(yīng)用程序只占用很短的CPU時間,用戶幾乎無法察覺它們在進行輪換。操作系統(tǒng)或VDK會自動地將操作系統(tǒng)的控制權(quán)以輪轉(zhuǎn)調(diào)度或時間片的方式在所有線程之間進行傳遞。每個線程所得到的處理器控制時間的長度由程序員定義。該方式的優(yōu)先級可以被靜態(tài)地分配,也可以被動態(tài)地分配。靜態(tài)分配意味著應(yīng)用程序在創(chuàng)建時就已經(jīng)被指定好了優(yōu)先級。動態(tài)分配則意味著程序的優(yōu)先級在其運行時仍能被改變,也就是說,在線程實體化或運行時,其優(yōu)先級都能被改變。

2  TCP/IP堆棧移植

關(guān)于TCP/IP堆棧移植,ADI提供有快速解決方案,即一個輕便型堆棧Lwip。Lwip(Light-weightInternetProtocol)是瑞士計算機科學(xué)院(SwedishInstituteofComputerScience)的AdamDunkels等人開發(fā)出來的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。Lwip的主要優(yōu)點是可在保持TCP/IP協(xié)議主要功能的基礎(chǔ)上,減少其對RAM的占用。一般情況下,它只要幾十KB的RAM和40KB左右的ROM就可以運行,這使得Lwip協(xié)議非常適合在嵌入式系中使用。

Lwip堆棧的調(diào)用基于ADI的驅(qū)動模型以及SystemServicesLibraries(即系統(tǒng)服務(wù)函數(shù)庫)。Lwip堆棧支持IP、ARP、ICMP、TCP、UDP等基本協(xié)議,同時支持一套標(biāo)準(zhǔn)的BSDSocket接口函數(shù)。

3  基于VDK的SOCKET編程

應(yīng)用層通過傳輸層進行數(shù)據(jù)通信時,TCP和UDP會遇到同時為多個應(yīng)用程序進程提供并發(fā)服務(wù)的問題。多個TCP連接或多個應(yīng)用程序進程可能需要通過同一個TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進程和連接,許多計算機操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱為套接字(Socket)的接口,以區(qū)分不同應(yīng)用程序進程間的網(wǎng)絡(luò)通信和連接。生成套接字主要有3個參數(shù):通信的目的IP地址、使用的傳輸層協(xié)議(TCP或UDP)和使用的端口號。Socket的原意是“插座”。通過將這3個參數(shù)結(jié)合起來,與一個“插座"Socket的綁定,應(yīng)用層就可以和傳輸層通過套接字進行接口,以區(qū)分來自不同應(yīng)用程序進程或網(wǎng)絡(luò)連接的通信,實現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù)。

要通過互聯(lián)網(wǎng)進行通信,至少需要一對套接字,一個運行于客戶機端,稱之為ClientSocket;另—運行于服務(wù)器端,稱之為ServerSocket。根據(jù)連接啟動的方式以及本地套接字要連接的目標(biāo),套接字之間的連接過程可以分為三個步驟,即服務(wù)器監(jiān)聽、客戶端請求和連接確認(rèn)。

4  硬件電路設(shè)計

4.1  ADSP-BF533簡介

ADSP-BF533處理器是Blackfin系列產(chǎn)品中的一員。其最大工作頻率可達600MHzoBlackfin處理器內(nèi)核包含有2個16位乘法器、2個40位累加器、2個40位ALU、4個視頻ALU和1個40位移位器,可處理來自寄存器組的8位、16位或32位數(shù)據(jù)。

4.2  LAN91C111簡介

ADSP-BF533通過以太網(wǎng)接口可將DSP采集的數(shù)據(jù)信息傳送到遠(yuǎn)程服務(wù)器。LAN91C111是SMSC公司生產(chǎn)的專門用于嵌入式產(chǎn)品的10/100M快速以太網(wǎng)控制器,該器件具有可編程、CRC校驗、同步或異步工作方式,并具有低功耗CMOS設(shè)計和小尺寸等特點。

4.3  ADSP-BF533與LAN91C111的硬件連接

ADSP-BF533與LAN91C111之間的信號傳輸連接圖如圖1所示。

基于VDK的網(wǎng)絡(luò)音頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

圖1  信號傳輸連接圖

該硬件系統(tǒng)由四大部分組成:其中主控芯片選用ADSP-BF533,以太網(wǎng)控制芯片選用LAN91C111,網(wǎng)絡(luò)隔離芯片選用TG110-E050N5,而網(wǎng)口存儲器則選用AT93C46。

由于LAN91C111是專為嵌入式系統(tǒng)設(shè)計的,因此其外圍電路相對比較簡單。只要將地址總線A1-A15與系統(tǒng)對應(yīng)相連即可。其A0沒有被LAN91C1U使用而懸空;數(shù)據(jù)總線D0-D15用于16位數(shù)據(jù)傳輸。LAN91C111端的D16-D32懸空;LAN91C111的片選信號AEN由DSP提供。字節(jié)選擇引腳BE0和BE1分別接DSP的ABEO和ABE1,而BE2和BE3直接接高3.3V電壓,即選定的是16位操作模式。AEN作為片選信號,接DSP的AMS3引腳。DSP芯片利用I/O引腳和中斷引腳可實現(xiàn)對以太網(wǎng)控制器LAN91C111芯片的控制和數(shù)據(jù)傳輸。以太網(wǎng)控制器LAN91C1U芯片通過網(wǎng)絡(luò)隔離芯片TG11O-E050N5并經(jīng)RJ45與外面的上位機相連接,以實現(xiàn)數(shù)據(jù)傳輸。TG11O-EO5ON5是雙絞線驅(qū)動/接收器,內(nèi)部有2個耦合變壓器可用來傳輸信號,同時抑制來自介質(zhì)的共模噪聲/干擾。AT93C46是一片串行數(shù)據(jù)存儲器,該芯片不論寫入或讀取數(shù)據(jù),皆釆用串行傳輸?shù)哪J絼幼?串行方式雖然沒有并行傳輸來得快速,但是其傳遞遠(yuǎn)距離的數(shù)據(jù),卻可以大量減少使用傳輸線的需求,也縮小了系統(tǒng)整體的占有面積。因此,非常適合用于微控制器或是微處理器。

5  基于VDK的應(yīng)用程序設(shè)計

本系統(tǒng)中的網(wǎng)絡(luò)通信模塊主要完成的任務(wù)是網(wǎng)絡(luò)芯片初始化及接收應(yīng)急信號,接收上位機指令幀并對其進行解析,同時將選擇板卡返回指令幀發(fā)送給上位機。

分析上述任務(wù),可將應(yīng)用程序分為三個線程:其中一個BootThread:lwip_sysboot_threadtype的作用是上電后對系統(tǒng)進行初始化并創(chuàng)建各個線程,然后激活Echo_Server_Threadlype線程,完成與上位機的客戶端建立Socket連接;其次,初始化線程級別最高;連接成功后,由Echo_Server_Threadlype線程激活Echo_Worker_ThreadType線程,Echo_Worker_ThreadType線程的任務(wù)為通過recv()函數(shù)接收上位機指令幀并對其進行功能解析,然后根據(jù)幀功能碼判斷應(yīng)該發(fā)送給上位機的幀,準(zhǔn)備好上傳數(shù)據(jù),再通過send。函數(shù)將上報幀上傳給上位機并顯示最終處理結(jié)果。

圖2所示是基于VDK的系統(tǒng)線程軟件工作流程。系統(tǒng)上電或復(fù)位后,DSP自啟動后,VDK啟動線程lwip_sysboot_threadtype開始運行。在線程lwip_sys-boot_threadtype中進行板級初始化和Lwip協(xié)議棧和網(wǎng)口初始化,接下來再創(chuàng)建所需要線程。圖3所示是VDK線程的通信工作流程圖。

基于VDK的網(wǎng)絡(luò)音頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

圖2  VDK線程啟動流程

芯片初始化模塊主要完成以下幾項工作:

系統(tǒng)時鐘速率配置:包括初始化PLL,由PLL_LOCKCNT設(shè)置穩(wěn)定時間,PLL_CTL控制寄存器設(shè)置VCO與CLKIN之間的倍數(shù)14,通過設(shè)置PLL_DIV決定SCLK及CCLK的時鐘,使能PLL中斷;

同步串口(SPI)配置:如果SPI是作為主啟用,SPI使用SPI標(biāo)志寄存器(SPI_FLG)使多達7個通用可編程標(biāo)志引腳用作從選擇端。并設(shè)置為0X02,SPISELl使能。FIO_DIR中設(shè)置PF10為輸入,其余均為輸出;

CS8420初始化:即初始化CS8420,則SPI_CTL設(shè)置字長為16位,當(dāng)發(fā)送數(shù)據(jù)寫入發(fā)送數(shù)據(jù)緩沖器時,SPI使能。設(shè)置為主模式。SPI_BAUD為0x18,波特率大概為512b/s;

激活EchoServerThreadType線程;

由線程銷毀模塊完成對初始化線程的銷毀。

基于VDK的網(wǎng)絡(luò)音頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

圖3  VDK線程通信工作流程圖

連接成功后,再由Echo_Server_ThreadType線程激活EchoWorkerThreadType線程。Echo_Worker_ThreadType線程的任務(wù)是通過recvO函數(shù)接收上位機指令幀并對其進行功能解析,根據(jù)幀功能碼判斷應(yīng)該發(fā)送給上位機的幀,準(zhǔn)備好上傳數(shù)據(jù),再通過send()函數(shù)將上報幀上傳給上位機并顯示最終處理結(jié)果。

圖4所示是系統(tǒng)控制板卡與上位機之間的通信結(jié)果。

基于VDK的網(wǎng)絡(luò)音頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

圖4  控制板卡與上位機的網(wǎng)絡(luò)通信界面

6  結(jié)語

本文以BF533為核心處理器,提出了一種基于VDK的網(wǎng)絡(luò)音頻通信系統(tǒng)的設(shè)計方案,同時通過實際項目的操作對該方案的可行性進行了驗證。經(jīng)過測試證明,該系統(tǒng)可以提高傳輸效率,而且實時性好,性能穩(wěn)定。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉