專利名稱:一種紅外實時成像系統的幀緩存調度裝置及調度方法
技術領域:
本發明涉及紅外圖像采集技術領域,尤其涉及一種紅外實時成像系統中幀緩存的調度裝置及相應的調度方法。
背景技術:
紅外實時成像系統所采集的紅外圖像數據通常都未經壓縮,數據量大,并且還需通過校正、拉伸等進一步處理才能顯示視頻圖像;因此紅外圖像的讀取、處理過程非常耗費系統的硬件資源。一種紅外成像系統設計方案是通過FPGA采集非制冷焦平面的紅外數據, 然后由上位機(比如ARM芯片)提供的參數在FPGA內進行非均勻矯正、拉伸等圖像處理, 最后通過中斷告知上位機,由上位機讀取數據并顯示;上位機從FPGA讀取原始紅外圖像數據,計算參數再傳回FPGA。該方案中上位機通常須要在內存中開辟空間用于緩存兩種紅外數據。現有的紅外圖像緩存空間的調度方法通常是將幀緩存抽象成基于數組的隊列,通過調度隊列元素,來實現調度幀緩存;現有技術存在如下問題
(1)由于原始紅外數據和處理后的紅外數據類型不同,對于傳統的基于數組的隊列,須要為兩種類型紅外數據分別開辟獨立的緩存塊分別管理。這種方案雖然簡單,但需要為兩類紅外幀分別分配緩存,由于通常不會同時采集兩類紅外幀圖像,因此這種分配緩存的方法未能高效利用內存。因此需要設計一種方法,使兩種類型的紅外數據可以共同使用一組緩存塊。(2)當沒有空閑圖像緩存時,傳統的基于數組的隊列調度算法無法保證最新的紅外幀數據總是能夠替換還未被讀取的舊紅外數據。
發明內容
針對上述現有技術,本發明要解決的技術問題是提供一種紅外實時成像系統的幀緩存調度方法及調度裝置,其根據緩存的狀態來管理緩存,當存在可寫入紅外幀數據的緩存時,新的幀緩存總是被寫入。為了解決上述技術問題,本發明采用如下技術方案一種紅外實時成像系統的幀緩存調度裝置,包括
調度裝置初始單元,用于為每個系統已分配的幀緩存分配一個對應的鏈表結點,以及根據幀緩存的狀態分配五個管理緩存的鏈表,初始化操作包括初始化空閑狀態對應的鏈表List_I、正在寫入原始紅外幀數據的狀態對應的鏈表List_B、原始紅外幀數據寫入完成狀態對應的鏈表List_R、正在寫入處理后的紅外幀數據的狀態對應的鏈表List_B、處理后紅外幀數據寫入完成狀態對應的鏈表List_R,并將所有鏈表結點均掛載到List_I鏈表上; 讀緩存調度單元,用于為讀操作分配可讀緩存,將讀操作緩存對應的鏈表結點信息返回給申請者;
寫緩存調度單元,用于為寫操作分配緩存,將分配的緩存對應的鏈表結點信息返回申請者;
調度裝置回收單元,用于將已經讀或寫完畢的緩存對應的鏈表結點插入到正確的鏈表中。—種使用上述調度裝置的紅外實時成像系統的幀緩存調度方法,包括如下步驟 A 首先,系統在分配了緩存之后,調用調度裝置初始單元,該單元為緩存初始化對應的
調度裝置單元,使該調度裝置投入使用; 其中讀緩存操作包括如下步驟
IA 讀進程調用所述調度裝置的讀緩存調度單元申請可讀緩存,讀緩存調度單元將可讀的緩存信息返回給讀進程,
IB 讀進程根據獲得的緩存信息,通過讀緩存調度單元進行讀緩存調度,
IC 在完成讀緩存調度后,讀進程通過調用調度裝置回收單元處理完成一次讀緩存操
作;
寫緩存操作包括如下步驟
2A:寫過程調用所述調度裝置的寫緩存調度單元申請可寫緩存,寫緩存調度單元將可寫的緩存信息返回給寫過程,
2B:寫過程根據獲得的緩存信息,通過寫緩存調度單元進行寫緩存調度,
2C 在完成寫緩存調度后,寫過程通過調用調度裝置回收單元處理完成一次寫緩存操作。進一步地,所述讀緩存調度單元的讀緩存調度包括如下步驟
步驟200 執行讀操作的過程調用該單元申請讀η個緩存的某類紅外幀數據,并進入步驟210,某類紅外幀數據為原始紅外幀數據和處理后的紅外幀數據;
步驟210 該單元查詢該類紅外幀對應的List_R是否為空,如不為空,則跳至220 ;否則跳至240,
步驟220 當該類紅外幀對應的List_R鏈表中包含m個鏈表結點,調度裝置將該鏈表中的前min (m, η)個鏈表結點取出,并跳至步驟230,
步驟230 調度成功,將步驟220中取出的min(m,n)個鏈表結點的信息返回給申請者, 步驟MO 調度失敗,返回失敗信息。更進一步地,所述調度裝置回收單元的處理包括如下步驟
申請者在完成k個緩存讀操作之后,將該k幀緩存對應的鏈表結點,歸還調度裝置,調度裝置再將k個鏈表結點依次插入List_I鏈表尾,其中0<k<=min(m,η)。進一步地,所述寫緩存調度單元的寫緩存調度包括如下步驟
步驟100 當寫操作向該單元申請緩存用于寫入某類紅外幀數據時,跳至步驟110,某類紅外幀數據為原始紅外幀數據和處理后的紅外幀數據;
步驟110 該單元判斷該類紅外幀對應的表是否為空,若不為空則跳至步驟 140,否則跳至步驟120,
步驟120 該單元判斷List_I是否為空,若為空則跳至步驟121,否則跳至步驟130, 步驟121 該單元判斷另一類紅外幀對應的List_R是否為空,若為空則跳至122,否則跳至步驟130,
步驟122 該單元判斷該類紅外幀對應的List_R是否為空,若為空則跳至步驟140,否則跳至步驟130,
步驟130 取出上一步驟的鏈表的鏈表首結點,并插入至該類紅外幀對應的List_B鏈表尾,然后跳至步驟150,
步驟140 退出調度,返回調度失敗信息, 步驟150 調度成功,將調度信息返回申請者。更進一步地,所述調度裝置回收單元的處理包括如下步驟
申請者在完成寫緩存操作之后,告知調度裝置,調度裝置將會將該類幀緩存對應的 List_B鏈表中唯一的鏈表結點取出,并插入到該類幀緩存對應的List_R鏈表尾。進一步地,對調度裝置初始單元、讀緩存調度單元、寫緩存調度單元均進行加鎖保護。與現有技術相比,本發明具有以下有益效果①每個幀緩存由一個鏈表結點緩存, 在調度器的生命周期內,鏈表結點不會被刪除,只是從一個鏈表到轉移到另一個鏈表,或者由讀進程(線程)管理;②可以保證當存在可寫入紅外幀數據的緩存時,新的幀緩存總是被
寫入;:,Σ當申請緩存用于寫入某類紅外幀數據時,此類紅外幀對應的List_R的優先級低于
另一類型紅外幀緩存對應的List_R鏈表,因此該調度器算法會優先將另一類紅外幀對應的List_R中的鏈表結點取出,這樣可以保證緩存優先用于存儲當前申請的紅外幀類型的紅外幀數據,并且該算法還可以防止另一類紅外幀數據長期占有幀緩存,以達到提高幀緩存使用效率的目的。
圖1是寫紅外幀緩存的調度步驟流程圖; 圖2是讀紅外幀緩存的調度步驟流程圖3是調度器單元操作說明圖; 圖4是幀緩存的狀態轉移圖。
具體實施例方式下面將結合附圖及具體實施方式
對本發明作進一步的描述。本發明根據紅外幀緩存所處的狀態分為六類空閑狀態、正在寫入原始紅外幀數據、原始紅外幀數據寫入完成狀態、正在寫入處理后的紅外幀數據、處理后紅外幀數據寫入完成狀態、正在讀取狀態。空閑狀態的緩存由List_I管理,根據紅外幀類型的不同,正在寫入原始紅外幀數據、原始紅外幀數據寫入完成狀態、正在寫入處理后的紅外幀數據、處理后紅外幀數據寫入完成狀態的緩存分別由原始紅外幀類型對應的List_B、原始紅外幀類型對應的List_R、 處理后的紅外幀類型對應的List_B、處理后的紅外幀類型對應的List_R管理,正在讀取狀態的緩存由讀進程(線程)管理。每個幀緩存由一個鏈表結點緩存,在調度器的生命周期內, 鏈表結點不會被刪除,只是從一個鏈表到轉移到另一個鏈表,或者由讀進程(線程)管理。首先定義本發明紅外實時成像系統的幀緩存調度裝置,其包括
調度裝置初始單元,用于為每個系統已分配的幀緩存分配一個對應的鏈表結點,以及初始化上述的所有鏈表,并將所述鏈表結點掛載到List_I鏈表上;
讀緩存調度單元,用于為讀操作分配可讀緩存,將讀操作緩存對應的鏈表結點信息返回給申請者;
寫緩存調度單元,用于為寫操作分配緩存,將分配的緩存對應的鏈表結點信息返回申請者;
調度裝置回收單元,用于將已經讀或寫完畢的緩存對應的鏈表結點插入到正確的鏈表中。如圖3所示使用上述調度裝置的紅外實時成像系統的幀緩存調度方法,包括如下步驟
A 首先,系統在分配了緩存之后,調用調度裝置初始單元,該單元為緩存初始化對應的調度裝置單元,使該調度裝置投入使用; 其中讀緩存操作包括如下步驟
IA 讀進程調用所述調度裝置的讀緩存調度單元申請可讀緩存,讀緩存調度單元將可讀的緩存信息返回給讀進程,
IB 讀進程根據獲得的緩存信息,讀取緩存中的紅外數據,
IC 在完成讀緩存調度后,讀進程通過調用調度裝置回收單元處理完成一次讀緩存操
作;
寫緩存操作包括如下步驟
2A 寫過程調用所述調度裝置的寫緩存調度單元申請可寫緩存,寫緩存調度單元將可寫的緩存信息返回給寫過程,
2B 寫過程根據獲得的緩存信息,想緩存中寫入紅外數據,
2C 在完成寫緩存調度后,寫過程通過調用調度裝置回收單元處理完成一次寫緩存操作。如圖2所示所述讀緩存調度單元的讀緩存調度包括如下步驟
步驟200 執行讀操作的過程調用該單元申請讀η個緩存的某類紅外幀數據,并進入步驟210,某類紅外幀數據為原始紅外幀數據和處理后的紅外幀數據;
步驟210 該單元查詢該類紅外幀對應的List_R是否為空,如不為空,則跳至220 ;否則跳至240,
步驟220 當該類紅外幀對應List_R鏈表中包含m個鏈表結點,調度裝置將該鏈表中的前min (m, η)個鏈表結點取出,并跳至步驟230,
步驟230 調度成功,將步驟220中取出的min(m,n)個鏈表結點的信息返回給申請者, (min (m, η)取m和η中的最小);
步驟MO 調度失敗,返回失敗信息。申請者在完成k個緩存讀操作之后,將該k幀緩存對應的鏈表結點,歸還調度裝置,調度裝置再將k個鏈表結點依次插入List_I鏈表尾,其中0<k<=min (m, η)。如圖1所示所述寫緩存調度單元的寫緩存調度包括如下步驟
步驟100 執行寫操作的過程調用該單元申請一個緩存用于寫入某類紅外幀數據,然后跳至步驟110,某類紅外幀數據為原始紅外幀數據和處理后的紅外幀數據;
步驟110 該單元判斷該類紅外幀對應的List_B鏈表是否為空,若不為空則跳至步驟CN 102541660 A
140,否則跳至步驟120,
步驟120 該單元判斷List_I是否為空,若為空則跳至步驟121,否則跳至步驟130, 步驟121 該單元判斷另一類紅外幀對應的List_R是否為空,若為空則跳至122,否則跳至步驟130,
步驟122 該單元判斷該類紅外幀對應的List_R是否為空,若為空則跳至步驟140,否則跳至步驟130,
步驟130 取出上一步驟的鏈表的鏈表首結點,并插入至該類紅外幀對應的List_B鏈表尾,然后跳至步驟150,
步驟140 退出調度,返回調度失敗信息, 步驟150 調度成功,將調度信息返回申請者。寫緩存操作的申請者在完成寫緩存操作之后,告知調度裝置,調度裝置會將該類幀緩存對應的List_B鏈表中唯一的鏈表結點取出,并插入到該類幀緩存對應的List_R鏈表尾。優選地,對調度裝置初始單元、讀緩存調度單元、寫緩存調度單元均進行加鎖保護。調度器回收單元的實現方案是基于以下方法
讀緩存操作和寫緩存操作在調用該單元時,會傳遞給該單元不同的標識字,比如讀緩存操作傳遞的標識字為1,而寫緩存操作傳遞的是2。對于寫緩存操作的調用情況,該單元將該類幀緩存對應的List_B鏈表中唯一的鏈表結點取出,并插入到該類紅外幀對應的List_R鏈表尾。對于讀緩存操作的調用情況,調用者除了傳遞標識字參數外,還需傳遞已讀取緩存對應的鏈表結點給該單元,該單元再將鏈表結點依次插入List_I鏈表尾。
權利要求
1.一種紅外實時成像系統的幀緩存調度裝置,其特征在于,包括調度裝置初始單元,用于為每個系統已分配的幀緩存分配一個對應的鏈表結點,以及根據幀緩存的狀態分配五個管理緩存的鏈表,初始化操作包括初始化空閑狀態對應的鏈表List_I、正在寫入原始紅外幀數據的狀態對應的鏈表List_B、原始紅外幀數據寫入完成狀態對應的鏈表List_R、正在寫入處理后的紅外幀數據的狀態對應的鏈表List_B、處理后紅外幀數據寫入完成狀態對應的鏈表List_R,并將所有鏈表結點均掛載到List_I鏈表上; 讀緩存調度單元,用于為讀操作分配可讀緩存,將讀操作緩存對應的鏈表結點信息返回給申請者;寫緩存調度單元,用于為寫操作分配緩存,將分配的緩存對應的鏈表結點信息返回申請者;調度裝置回收單元,用于將已經讀或寫完畢的緩存對應的鏈表結點插入到正確的鏈表中。
2.一種使用權利要求1所述的調度裝置的紅外實時成像系統的幀緩存調度方法,其特征在于,包括如下步驟A 首先,系統在分配了緩存之后,調用調度裝置初始單元,該單元為緩存初始化對應的調度裝置單元,使該調度裝置投入使用; 其中讀緩存操作包括如下步驟IA 讀進程調用所述調度裝置的讀緩存調度單元申請可讀緩存,讀緩存調度單元將可讀的緩存信息返回給讀進程,IB 讀進程根據獲得的緩存信息,從申請到的緩存內讀取紅外幀數據,IC 在完成讀緩存操作后,讀進程通過調用調度裝置回收單元完成一次讀緩存操作;寫緩存操作包括如下步驟2A 寫過程調用所述調度裝置的寫緩存調度單元申請可寫緩存,寫緩存調度單元將可寫的緩存信息返回給寫過程,2B 寫過程根據獲得的緩存信息,向申請到的緩存內寫入紅外幀數據,2C 在完成寫緩存操作后,寫過程通過調用調度裝置回收單元完成一次寫緩存操作。
3.根據權利要求2所述的紅外實時成像系統的幀緩存調度方法,其特征在于,所述讀緩存調度單元的讀緩存調度包括如下步驟步驟200 執行讀操作的過程調用該單元申請讀η個緩存的某類紅外幀數據,并進入步驟210,某類紅外幀數據為原始紅外幀數據和處理后的紅外幀數據;步驟210 該單元查詢該類紅外幀對應的List_R是否為空,如不為空,則跳至220 ;否則跳至240,步驟220 當該類紅外幀對應的List_R鏈表中包含m個鏈表結點,調度裝置將該鏈表中的前min (m, η)個鏈表結點取出,并跳至步驟230,步驟230 調度成功,將步驟220中取出的min(m,n)個鏈表結點的信息返回給申請者, 步驟MO 調度失敗,返回失敗信息。
4.根據權利要求2所述的紅外實時成像系統的幀緩存調度方法,其特征在于,所述寫緩存調度單元的寫緩存調度包括如下步驟步驟100 當寫操作向該單元申請緩存用于寫入某類紅外幀數據時,跳至步驟110,某類紅外幀數據為原始紅外幀數據和處理后的紅外幀數據;步驟110 該單元判斷該類紅外幀緩存對應的List_B鏈表是否為空,若不為空則跳至步驟140,否則跳至步驟120,步驟120 該單元判斷List_I鏈表是否為空,若為空則跳至步驟121,否則跳至步驟\130,步驟121 該單元判斷另一類紅外幀對應的表是否為空,若為空則跳至122, 否則跳至步驟130,步驟122 該單元判斷該類紅外幀對應的List_R是否為空,若為空則跳至步驟140,否則跳至步驟130,步驟130 取出上一步驟的鏈表的鏈表首結點,并插入至該類紅外幀對應的List_B鏈表尾,然后跳至步驟150,步驟140 退出調度,返回調度失敗信息, 步驟150 調度成功,將調度信息返回申請者。
5.根據權利要求3所述的紅外實時成像系統的幀緩存調度方法,其特征在于,所述調度裝置回收單元的處理包括如下步驟申請者在完成k個緩存讀操作之后,將該k幀緩存對應的鏈表結點歸還調度裝置,調度裝置再將k個鏈表結點依次插入List_I鏈表尾,其中0<k<=min(m,η)。
6.根據權利要求4所述的紅外實時成像系統的幀緩存調度方法,其特征在于,所述調度裝置回收單元的處理包括如下步驟申請者在完成寫緩存操作之后,告知調度裝置,調度裝置將會將該類幀緩存對應的 List_B鏈表中唯一的鏈表結點取出,并插入到該類幀緩存對應的List_R鏈表尾。
7.根據權利要求2飛任一項所述的紅外實時成像系統的幀緩存調度方法,其特征在于對調度裝置初始單元、讀緩存調度單元、寫緩存調度單元均進行加鎖保護。
全文摘要
本發明公開了一種紅外實時成像系統的幀緩存調度裝置及調度方法,裝置包括調度裝置初始單元,用于為緩存初始化對應的調度裝置單元,使該調度裝置投入使用;讀緩存調度單元,用于為讀操作分配可讀緩存,將讀操作緩存對應的鏈表結點信息返回給申請者;寫緩存調度單元,用于為寫操作分配緩存,將分配的緩存對應的鏈表結點信息返回申請者;調度裝置回收單元,用于將已經讀或寫完畢的緩存對應的鏈表結點插入到正確的鏈表中。本發明能根據緩存的狀態來管理緩存,當存在可寫入紅外幀數據的緩存時,新的幀緩存總是被寫入。
文檔編號G06F9/50GK102541660SQ20121000617
公開日2012年7月4日 申請日期2012年1月6日 優先權日2012年1月6日
發明者劉子驥, 勞常委, 楊書兵, 蔣亞東, 蔡貝貝, 鄭興 申請人:電子科技大學