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