基于DSP/BIOS大空間網(wǎng)絡(luò)型火災(zāi)探測(cè)系統(tǒng)設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)流程如圖4所示。首先對(duì)DSP/BIOS模塊進(jìn)行靜態(tài)配置,包括設(shè)置內(nèi)、外部存儲(chǔ)器的映射空間,創(chuàng)建多任務(wù)線程及所需堆棧,配置TI網(wǎng)絡(luò)開發(fā)包NDK的啟動(dòng)環(huán)境,分配旗語、郵箱通信機(jī)制的存儲(chǔ)位置及大小等。其中創(chuàng)建的多任務(wù)線程包括系統(tǒng)控制任務(wù)、視頻輸入任務(wù)、算法處理任務(wù)、圖像JPEG壓縮任務(wù)、網(wǎng)絡(luò)初始化任務(wù)、串口通信任務(wù)。在應(yīng)用程序進(jìn)入DSE/BIOS線程調(diào)度器之前,處理器需要完成3個(gè)模塊的初始化:(1)芯片板級(jí)間的初始化,包括CSL、RAM、Cache及EDMA的設(shè)置。(2)RF5模塊的初始化,包括通道模塊,SCOM模塊及ICC模塊。一個(gè)任務(wù)可以創(chuàng)建多個(gè)通道,每個(gè)通道可以包含多個(gè)內(nèi)核,每個(gè)內(nèi)核只能包含一種標(biāo)準(zhǔn)算法。(3)視頻捕獲(FVID)通道的建立與啟動(dòng)。本文引用地址:http://www.ex-cimer.com/article/149019.htm
應(yīng)用程序的Main()函數(shù)在完成系統(tǒng)初始化任務(wù)后退出,程序控制權(quán)正式交給DSP/BIOS任務(wù)線程調(diào)度器,根據(jù)優(yōu)先級(jí)和RF5中的任務(wù)切換準(zhǔn)則調(diào)度各任務(wù)線程。為保證網(wǎng)絡(luò)傳輸?shù)膶?shí)時(shí)性,應(yīng)將網(wǎng)絡(luò)初始化任務(wù)的優(yōu)先級(jí)配置成高于其他任務(wù)的優(yōu)先級(jí)。處于同一優(yōu)先級(jí)的任務(wù)之間利用同步通信機(jī)制SCOM模塊進(jìn)行信息傳遞,同時(shí)基于RF5的SCOM通信機(jī)制內(nèi)部,制定了任務(wù)調(diào)用及切換規(guī)則,這樣就避免了多個(gè)任務(wù)同時(shí)訪問一個(gè)隊(duì)列指針的情況。
3.1 視頻輸入任務(wù)
系統(tǒng)主線程已經(jīng)創(chuàng)建且打開了視頻捕獲通道,并初始化了FVID對(duì)象。該任務(wù)首先啟動(dòng)SCOM消息隊(duì)列,從捕獲通道的緩沖區(qū)獲取一幀圖片,然后利用SCOM隊(duì)列指針將視頻數(shù)據(jù)傳輸至算法處理任務(wù)。此時(shí),該任務(wù)處于阻塞狀態(tài),等待算法處理任務(wù)接收完成的返回消息,系統(tǒng)切換至算法處理任務(wù),直到接收到返回消息,視頻輸入任務(wù)才處于等待狀態(tài),等待下一個(gè)循環(huán)重新采集視頻。每一個(gè)任務(wù)都不斷地處于等待消息與處理數(shù)據(jù)的狀態(tài)中。
3.2 算法處理任務(wù)
該任務(wù)分別創(chuàng)建了火焰檢測(cè)通道對(duì)象FIRE_CHAN_Obj與煙霧檢測(cè)通道對(duì)象SMOCK_CHAN_Obj。每一個(gè)核對(duì)像都要在被初始化以后再調(diào)用注冊(cè)函數(shù)CHAN_regCell(),通過這種方式可以將每一個(gè)核對(duì)象注冊(cè)到相應(yīng)的任務(wù)通道中。最后,線程調(diào)用函數(shù)CHAN_open()為每個(gè)指定的通道(chanNum)傳遞核對(duì)像,這樣通道通過調(diào)用核對(duì)像來執(zhí)行檢測(cè)算法。煙霧檢測(cè)算法流程如圖5所示。
評(píng)論