基于VDK的網(wǎng)絡(luò)音頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)
5 基于VDK的應(yīng)用程序設(shè)計
本系統(tǒng)中的網(wǎng)絡(luò)通信模塊主要完成的任務(wù)是網(wǎng)絡(luò)芯片初始化及接收應(yīng)急信號,接收上位機指令幀并對其進(jìn)行解析,同時將選擇板卡返回指令幀發(fā)送給上位機。
分析上述任務(wù),可將應(yīng)用程序分為三個線程:其中一個Boot Thread:lwip_sysboot_threadtype的作用是上電后對系統(tǒng)進(jìn)行初始化并創(chuàng)建各個線程,然后激活Echo_Server_ThreadType線程,完成與上位機的客戶端建立Socket連接;其次,初始化線程級別最高;連接成功后,由Echo_Servet_ThreadType線程激活Echo Worker_ThreadType線程,Echo_Worker_ThreadTrype線程的任務(wù)為通過recv()函數(shù)接收上位機指令幀并對其進(jìn)行功能解析,然后根據(jù)幀功能碼判斷應(yīng)該發(fā)送給上位機的幀,準(zhǔn)備好上傳數(shù)據(jù),再通過send()函數(shù)將上報幀上傳給上位機并顯示最終處理結(jié)果。本文引用地址:http://www.biyoush.com/article/161034.htm
圖2所示是基于VDK的系統(tǒng)線程軟件工作流程。系統(tǒng)上電或復(fù)位后,DSP自啟動后,VDK啟動線程lwip_sysboor_threadtype開始運行。在線程lwip_sysboot_threadtype中進(jìn)行板級初始化和Lwip協(xié)議棧和網(wǎng)口初始化,接下來再創(chuàng)建所需要線程。圖3所示是VDK線程的通信工作流程圖。
芯片初始化模塊主要完成以下幾項工作:
(1)系統(tǒng)時鐘速率配置:包括初始化PLL,由PLL_LOCKCNT設(shè)置穩(wěn)定時間,PLL_CTL控制寄存器設(shè)置VCO與CLKIN之間的倍數(shù)14,通過設(shè)置PLL_DIV決定SCLK及CCLK的時鐘,使能PLL中斷;
(2)同步串口(SPI)配置:如果SPI是作為主啟用,SPI使用SPI標(biāo)志寄存器(SPI FLG)使多達(dá)7個通用可編程標(biāo)志引腳用作從選擇端。并設(shè)置為0X02,SPISEL1使能。FIO_DIR中設(shè)置PF10為輸入,其余均為輸出;
(3)CS8420初始化:即初始化CS8420,則SPICTL設(shè)置字長為16位,當(dāng)發(fā)送數(shù)據(jù)寫入發(fā)送數(shù)據(jù)緩沖器時,SPI使能。設(shè)置為主模式。SPI BAUD為0x18,波特率大概為512b/s;
(4)激活Echo_Server_ThreadType線程;
(5)由線程銷毀模塊完成對初始化線程的銷毀。
連接成功后,再由Echo_Server_ThreadType線程激活Echo_Worker_ThreadType線程。Echo_Worker_ThreadType線程的任務(wù)是通過recv()函數(shù)接收上位機指令幀并對其進(jìn)行功能解析,根據(jù)幀功能碼判斷應(yīng)該發(fā)送給上位機的幀,準(zhǔn)備好上傳數(shù)據(jù),再通過send()函數(shù)將上報幀上傳給上位機并顯示最終處理結(jié)果。
圖4所示是系統(tǒng)控制板卡與上位機之間的通信結(jié)果。
6 結(jié)語
本文以BF533為核心處理器,提出了一種基于VDK的網(wǎng)絡(luò)音頻通信系統(tǒng)的設(shè)計方案,同時通過實際項目的操作對該方案的可行性進(jìn)行了驗證。經(jīng)過測試證明,該系統(tǒng)可以提高傳輸效率,而且實時性好,性能穩(wěn)定。
tcp/ip相關(guān)文章:tcp/ip是什么
評論