羅云宜,陳奭,付威威,周哲,馮馳
(1.南京理工大學(xué)電子工程與光電技術(shù)學(xué)院,南京210000;2.中國科學(xué)院蘇州生物醫(yī)學(xué)工程技術(shù)研究所)
OMAP-L138核間通信高吞吐量圖像處理平臺及應(yīng)用
羅云宜1,2,陳奭2,付威威2,周哲2,馮馳1,2
(1.南京理工大學(xué)電子工程與光電技術(shù)學(xué)院,南京210000;2.中國科學(xué)院蘇州生物醫(yī)學(xué)工程技術(shù)研究所)
異構(gòu)雙核芯片AMR+DSP具有強大的任務(wù)管理、人機(jī)交互和數(shù)據(jù)處理功能,為嵌入式圖像處理領(lǐng)域提供了一種新的架構(gòu)。為了減少開發(fā)人員對底層驅(qū)動的設(shè)計,TI研發(fā)了Syslink驅(qū)動用于核間通信,包括Notify、MessageQ協(xié)議等,其中基于MessageQ的通信協(xié)議常用于核間圖像傳輸,但其占用資源較多、延遲高。本文對TI公司的達(dá)芬奇架構(gòu)OMAP-L138處理器的多核通信理論進(jìn)行研究,利用核間中斷寄存器和共享內(nèi)存隊列存儲機(jī)制進(jìn)行數(shù)據(jù)交互,實現(xiàn)了一種高吞吐量的圖像處理平臺。
OMAP-L138;核間通信;共享內(nèi)存隊列機(jī)制設(shè)計
隨著電子技術(shù)和圖像處理技術(shù)的快速發(fā)展,數(shù)字圖像處理技術(shù)已廣泛應(yīng)用于軍事、工業(yè)視覺、醫(yī)療器械、汽車和無人機(jī)等領(lǐng)域。實際應(yīng)用中,考慮能夠運行復(fù)雜圖像處理算法和大數(shù)據(jù)量的傳輸作為圖像處理平臺穩(wěn)定運行的前提,采用PC機(jī)平臺能夠很好地滿足上述條件,但存在系統(tǒng)過于龐大和成本較高等缺點。因此,現(xiàn)階段基于ARM+ DSP異構(gòu)雙核的嵌入式圖像處理平臺應(yīng)運而生[1-2],能夠很好滿足對系統(tǒng)體積、功耗和實時性要求,充分發(fā)揮了ARM的任務(wù)管理、人機(jī)交互特性和DSP的高速數(shù)據(jù)處理特性。然而在異構(gòu)雙核處理中,兩核的數(shù)據(jù)通信和同步變得尤為重要,采用德州儀器(TI)官方提供的Syslink[3]工具包能夠滿足系統(tǒng)的需要,但存在占用資源較多、延遲高的缺點。本文對TI一款低成本、性能較高的OMAPL138芯片的核間通信理論進(jìn)行研究,提出了一種基于核間中斷和共享的內(nèi)存通信方法,實現(xiàn)了一種高吞吐量的圖像處理平臺。
OMAP-L138雙核處理器包含ARM926EJ-S和TMS320C6748內(nèi)核[4]。ARM926EJ-S采用增強的32位RISC指令集,內(nèi)部采用多級流水線,加快了處理器的運算速率,ARM與DSP均采用了兩級高速緩存架構(gòu),二者均可獨立操作片載外設(shè)資源。本圖像處理平臺中,ARM負(fù)責(zé)進(jìn)行人機(jī)交互和流程控制,DSP負(fù)責(zé)圖像數(shù)據(jù)的接收、處理及處理結(jié)果的發(fā)送。
1.1 系統(tǒng)組成
圖1所示為系統(tǒng)組成框架圖,OMAP-L138片上系統(tǒng)包含ARM核心及DSP核心各一個,并包含有常用接口(RS232,I2C,SPI等),用于系統(tǒng)擴(kuò)展。
視頻信號經(jīng)VPIF接口(Video Port Inter Face)由DSP接收并進(jìn)行處理,ARM與DSP雙核之間通過核間中斷和共享內(nèi)存進(jìn)行數(shù)據(jù)交互,然后ARM將接收到的處理結(jié)果傳輸?shù)饺藱C(jī)界面輸出處理結(jié)果,若系統(tǒng)需要,還可以將處理結(jié)果進(jìn)行本地或遠(yuǎn)程存儲。
圖1 系統(tǒng)框架圖
1.2 內(nèi)存劃分
ARM與DSP雙核通信系統(tǒng)基于外部128 MB DDR,由于ARM端運行Linux系統(tǒng),DSP端根據(jù)需要運行SYSBIOS實時操作系統(tǒng)或裸機(jī),其運行環(huán)境和數(shù)據(jù)都存儲在DDR中,因此需要進(jìn)行DDR物理地址劃分,用于Linux系統(tǒng)、雙核通信共享內(nèi)存以及DSP,如圖2所示。
圖2 內(nèi)存分配
地址0xC200 0000到0xC2FF FFFF的16 MB空間用于雙核通信,根據(jù)需要包括通信組件和共享內(nèi)存;地址0xC300 0000到0xC3FF FFFF空間用于DSP,其余空間用于Linux系統(tǒng)。
本系統(tǒng)中OMAP-L138處理器ARM端搭載Linux,通過Qt開發(fā)界面及流程處理程序;DSP端采用SYSBIOS實時系統(tǒng)或裸機(jī)程序用于算法處理[5-6]。
2.1 ARM軟件系統(tǒng)
圖3 Linux體系結(jié)構(gòu)
由于Linux系統(tǒng)可以免費獲取、可自由裁減,具有出色的任務(wù)管理和人機(jī)交互界面,已廣泛應(yīng)用于服務(wù)器和嵌入式領(lǐng)域。圖3為Linux體系結(jié)構(gòu)圖,包括內(nèi)核空間和用戶空間。其中,內(nèi)核空間包括系統(tǒng)調(diào)用、內(nèi)核和平臺架構(gòu)相關(guān)代碼。用戶程序通過系統(tǒng)調(diào)用訪問內(nèi)核資源和服務(wù),同時通過內(nèi)核來執(zhí)行平臺相關(guān)驅(qū)動代碼。
2.2 DSP軟件系統(tǒng)
2.2.1 基于Syslink核間通信
Syslink工具包是通用處理器ARM與DSP進(jìn)行核間通信的驅(qū)動程序。Syslink有一套通用的API函數(shù),從應(yīng)用層虛擬了ARM與DSP之間的物理連接,降低了程序開發(fā)的復(fù)雜度?;赟yslink的軟件架構(gòu)圖如圖4所示。
圖4 基于Syslink軟件結(jié)構(gòu)圖
圖像處理算法運行于DSP,通過Syslink來實現(xiàn)ARM 和DSP之間的通信與同步。核間通信模塊Syslink為處理器間通信提供了對等的軟件協(xié)議(如Notify、MessageQ 等)。MessageQ協(xié)議基于隊列,常用來傳輸視頻數(shù)據(jù)。
圖5所示為基于MessageQ的軟件代碼流程圖。
圖5 基于MessageQ的軟件代碼流程圖
軟件設(shè)計中,定義DSP處理器ID為0,ARM處理器ID為1,分別調(diào)用MultiPro_getID()得到對方的ID,然后通過Ipc_control()、Ipc_start()和Ipc_attach()來實現(xiàn)ARM與DSP的連接和握手,最后調(diào)用相關(guān)MessageQ的API實現(xiàn)雙核通信。
2.2.2 基于高吞吐量核間通信
OMAP-L138處理器提供了核間通信的消息觸發(fā)機(jī)制,本系統(tǒng)采用核間中斷寄存器和共享內(nèi)存機(jī)制來實現(xiàn)雙核間數(shù)據(jù)的收發(fā)。設(shè)定CHIPSIG(中斷寄存器)和CHIPSIG_CLR(中斷清除寄存器)的0~1位為ARM中斷,2~4位為DSP中斷,通過置位相應(yīng)位來產(chǎn)生硬件中斷。通過編寫中斷服務(wù)程序來處理接收到的消息,以建立握手協(xié)議。圖6為通信握手協(xié)議。
圖6 通信握手協(xié)議
通信握手協(xié)議建立以后,ARM和DSP端都獲得了共享內(nèi)存基地址和圖像數(shù)據(jù)大小。如圖7所示,ARM和DSP端采用隊列形式實現(xiàn)圖像數(shù)據(jù)傳輸,采用單變量增減方式實現(xiàn)隊列資源計數(shù)。為了快速實現(xiàn)數(shù)據(jù)的存取,本文將共享地址前12字節(jié)作為全局共享數(shù)據(jù)結(jié)構(gòu),定義如下數(shù)據(jù)結(jié)構(gòu):
圖7 圖像數(shù)據(jù)隊列結(jié)構(gòu)傳輸
msgCnt為隊列資源計數(shù)器,armCnt為ARM讀指針在共享內(nèi)存中讀取圖像數(shù)據(jù)偏移量,dspCnt為DSP寫指針在共享內(nèi)存中存放圖像數(shù)據(jù)偏移量。例如,設(shè)置隊列資源最大為10個,當(dāng)DSP存放數(shù)據(jù)在第一個位置后,msgCnt加1同時觸發(fā)ARM核,DSP讀取一組數(shù)據(jù)后并觸發(fā)DSP,msgCnt減1,相應(yīng)的armCnt和dspCnt加1,當(dāng)有一個達(dá)到最大值10時,相應(yīng)的指針回到原點,并清零相應(yīng)的地址偏移計數(shù)器。
(1)通信機(jī)制設(shè)計
通信機(jī)制如圖8所示,圖像傳感器采集的視頻信號通過DMA通道傳輸?shù)紻DR,啟動Cache機(jī)制,加速DDR與1級、2級緩存之間的數(shù)據(jù)傳輸,DSP處理完成后將數(shù)據(jù)存放到共享內(nèi)存的隊列中,同時將隊列資源計數(shù)器加1,然后觸發(fā)ARM核;ARM核根據(jù)資源計數(shù)器值大小讀取數(shù)據(jù)并觸發(fā)DSP,隊列資源計數(shù)器減1。
圖8 通信機(jī)制整體框圖
(2)ARM與DSP驅(qū)動設(shè)計
ARM端Linux系統(tǒng)由于受到保護(hù)機(jī)制的制約,不能直接訪問實際內(nèi)存地址,可以通過虛擬內(nèi)存映射機(jī)制來實現(xiàn)物理寄存器和共享內(nèi)存基地址的間接訪問。觸發(fā)DSP中斷時,先將CHIPSIG寄存器地址虛擬映射到用戶空間,然后置位CHIPSIG[2]或CHIPSIG[3]為1,最后由硬件機(jī)制觸發(fā)DSP中斷,核心代碼如下:
映射成功后的虛擬地址可以直接賦值置位核間中斷寄存器,如:*virt_addr=1<<2。ARM端以輪詢方式查詢外部核間中斷寄存器值是否置1,最后根據(jù)read()的input event事件判斷是哪個中斷位,并作出相應(yīng)的操作。
通過CMD文件配置,DSP程序可以直接訪問物理地址,將DSP處理后的數(shù)據(jù)直接放到共享內(nèi)存中。DSP中斷需開啟DSP中斷、全局中斷、映射中斷函數(shù)到指定中斷號以便使能中斷等操作。其中DSP接收ARM的中斷處
理函數(shù)如下:
(3)軟件工作流程
軟件流程如圖9、圖10所示,雙核握手之后開始協(xié)同運行。與人機(jī)交互相關(guān)的全局變量Process_over控制整個軟件的運行,通過核間中斷觸發(fā)來控制msgCnt值,DSP 與ARM分別根據(jù)偏移量大小存放和讀取數(shù)據(jù)。
圖9 ARM端軟件流程
圖10 DSP端軟件流程
圖11為實驗所測得的數(shù)據(jù),可以看出,在傳輸圖像數(shù)據(jù)時,高吞吐量要比Syslink工具包中MessageQ組件節(jié)省大量的時間。在圖像為320×240×16位色分辨率時,對比Syslink與本系統(tǒng)實現(xiàn)的高速核間數(shù)據(jù)通信,其耗時相差3倍左右,隨著圖像分辨率和數(shù)據(jù)量的增加,系統(tǒng)延時差別逐漸減小,至1280×1024×16位色時,系統(tǒng)延時雖然十分接近,但仍然有接近3.7 ms左右的時差。因此,本方法實現(xiàn)的核間數(shù)據(jù)通信,非常適合突發(fā)式、大批次、小數(shù)據(jù)量的數(shù)據(jù)傳輸。
圖11 Syslink與高吞吐量時間延遲
為了滿足ARM與DSP核間通信數(shù)據(jù)延遲的需要,本文提出了一種自定義的核間通信方法,通過硬件中斷消息機(jī)制實現(xiàn)握手協(xié)議和數(shù)據(jù)傳輸協(xié)議。隨后,通過實驗對比可知,該方法比Syslink延遲要小得多,能夠滿足實時性的要求?;诤碎g觸發(fā)中斷機(jī)制和共享內(nèi)存實現(xiàn)雙核通信,為更高端的異構(gòu)芯片提供了一種方案,在工程上具有一定的應(yīng)用價值。
[1]謝維波,賀文強.基于OMAPL138的視頻監(jiān)控?zé)熿F檢測系統(tǒng)[J].計算機(jī)工程與應(yīng)用,2015,51(20):183-187.
[2]馮強,胡毅,于東,等.基于OMAP處理器的核間通信機(jī)制設(shè)計與實現(xiàn)[J].計算機(jī)工程,2014,40(4):281-286.
[3]Texas Instruments.Building Syslink Applications Version 2. 21.01.05,2012.
[4]Texas Instruments.OMAP-L138 DSP+ARM Processor Technical Reference Manual,2011.
[5]趙加祥.DSP系統(tǒng)設(shè)計和BIOS編程應(yīng)用實例[M].北京:機(jī)械工業(yè)出版社,2008.
[6]劉紀(jì)紅,葉檸,尚奎,等.DSP+ARM雙核處理器OMAPL138開發(fā)入門[M].北京:清華大學(xué)出版社,2013.
羅云宜(碩士研究生),主要研究方向為嵌入式系統(tǒng)與圖像處理應(yīng)用;陳奭(助理研究員),主要研究方向為嵌入式系統(tǒng)與圖像算法研究;馮馳(碩士研究生),主要研究方向為嵌入式軟件與光學(xué)設(shè)計。
High-throughput Capacity Image-processing Platform Based on OMAP-Ll38 Inter-core Communication
Luo Yunyi1,2,Chen Shi2,Fu Weiwei2,Zhou Zhe2,Feng Chi1,2
(1.School of Electronic Engineering and Optoelectronic Technology,Nanjing University Science and Technology,Nanjing 210000,China; 2.Suzhou Institute of Biomedical Engineering and Technology Chinese Academy of Science)
The heterogeneous dual-core chip AMR+DSP has a powerful function of task management,human-computer interaction and data processing,which also provides a new framework for embedded image processing.In order to reduce the underlying driven design for developers,TI has developed Syslink driver for inter-core communications,including Notify,MessageQ protocols and so on,among which the communication protocol based on MessageQ is commonly used in inter-core image transmission design,but it has resource intensive and high latency.In the paper,we focus on the multi-core communication theory of OMAP-L138 processor which has the Da Vinci framework,taking advantage of the inter-core interrupt registers and the shared memory queue storage mechanism to realize the data interaction,and finally a high-throughput image processing platform is achieved.
OMAP-L138;inter-core communication;shared memory queue mechanism
TP317
A
(責(zé)任編輯:薛士然2016-05-09)