作者:胡敏露;徐剛鋒;李飚
1 引言
在數(shù)字信號(hào)處理系統(tǒng)開發(fā)過程中,通常要對(duì)算法的正確性進(jìn)行驗(yàn)證,也就是程序調(diào)試。而傳統(tǒng)的主機(jī)調(diào)試器必須通過在目標(biāo)應(yīng)用程序中插入斷點(diǎn),在中斷目標(biāo)應(yīng)用程序運(yùn)行時(shí)觀測(cè)目標(biāo)機(jī)上各寄存器或內(nèi)存變量的值。但是,由于處理系統(tǒng)是實(shí)時(shí)的,因此,這種經(jīng)典的方法不能實(shí)時(shí)地跟蹤數(shù)據(jù)的變化,有時(shí)顯示的數(shù)據(jù)根本就是錯(cuò)誤的。這種方法的不足在筆者的圖像處理系統(tǒng)中表現(xiàn)得更為突出。且不說它不能實(shí)時(shí)反映數(shù)據(jù)處理的結(jié)果,即使可以實(shí)時(shí)反映,在用memoryView方法來觀測(cè)圖像處理的結(jié)果時(shí)也只是各內(nèi)存單元的值,因而非常不直觀,為故障診斷和系統(tǒng)性能測(cè)評(píng)等帶來許多不便,所以,必須尋找一種方法來實(shí)時(shí)跟蹤數(shù)據(jù)變化,而且數(shù)據(jù)還應(yīng)以非常直觀的形式顯示在主機(jī)屏幕上。
TI的Real-Time Data Ex-change(RTDX)技術(shù)就是利用DSPs的內(nèi)部仿真邏輯和JTAG接口來實(shí)現(xiàn)主機(jī)與目標(biāo)機(jī)之間的數(shù)據(jù)交換,它不占用DSPs的系統(tǒng)總線和串口等I/0資源,數(shù)據(jù)傳送完全可以在應(yīng)用程序的后臺(tái)運(yùn)行,對(duì)應(yīng)用程序影響很小,它完全可以在不中斷目標(biāo)應(yīng)用程序的前提下,向主機(jī)實(shí)時(shí)發(fā)送目標(biāo)機(jī)上各寄存器或內(nèi)存變量的值。而主機(jī)上的可視化應(yīng)用程序也可以通過嵌入COM的APl函數(shù)來獲得這些數(shù)據(jù),并以適當(dāng)?shù)母袷桨褦?shù)據(jù)顯示出來(如表格、波形圖或二維圖像等形式)。這樣,就可以實(shí)時(shí)觀測(cè)和分析應(yīng)用程序的運(yùn)行情況,使得編程人員查找和修改應(yīng)用程序的錯(cuò)誤更加方便,從而縮短系統(tǒng)的設(shè)計(jì)開發(fā)周期。
在設(shè)計(jì)圖像目標(biāo)識(shí)別系統(tǒng)時(shí),把攝像頭信號(hào)通過視頻采集卡進(jìn)行采樣和量化,并存放在處理機(jī)系統(tǒng)的外部存儲(chǔ)器中。為了獲得目標(biāo)在圖像中的位置,設(shè)計(jì)時(shí)必須對(duì)采樣的數(shù)據(jù)進(jìn)行識(shí)別算法處理。因?yàn)楣P者處理的是連續(xù)圖像幀序列,因而不能在中斷程序運(yùn)行的情況下觀測(cè)處理結(jié)果,而且無法通過只看相應(yīng)memo~的值來判斷跟蹤窗是否能跟上運(yùn)動(dòng)的目標(biāo),所以,采用了RTDX技術(shù)。
2 RTDX的原理
RTDX是一種可以在不影響目標(biāo)應(yīng)用程序運(yùn)行的情況下讓主機(jī)和目標(biāo)機(jī)進(jìn)行實(shí)時(shí)數(shù)據(jù)傳輸?shù)募夹g(shù)。RTDX支持雙向數(shù)據(jù)流,即目標(biāo)機(jī)到主機(jī)的數(shù)據(jù)流和主機(jī)到目標(biāo)機(jī)的數(shù)據(jù)流。RTDX數(shù)據(jù)流示意圖如圖1所示。
2.1目標(biāo)機(jī)到主機(jī)的數(shù)據(jù)傳送
目標(biāo)機(jī)為了向主機(jī)發(fā)送數(shù)據(jù),必須設(shè)定一個(gè)輸出通道oehanData。通過用戶接口可將數(shù)據(jù)送到輸出通道以使這些數(shù)據(jù)隨即保存到RTDX目標(biāo)機(jī)的緩存(由RTDX目標(biāo)函數(shù)庫定義)中,然后再將這些數(shù)據(jù)通過JTAG接口發(fā)送到主機(jī)。RTDX主機(jī)函數(shù)庫將接收到的數(shù)據(jù)保存在log文件中或主機(jī)的緩存中(具體由RTDX模式來決定)。
保存在log文件中或主機(jī)緩存中的數(shù)據(jù)可以通過COM Automation Client重新獲取析。下面是幾種典型的COM Automation Client:
Visual C++ applications;
Lab View;
Microsoft Excel。
2.2主機(jī)到目標(biāo)機(jī)的數(shù)據(jù)傳送
目標(biāo)機(jī)要從主機(jī)中獲得數(shù)據(jù),首先必須設(shè)定一個(gè)輸入通道ichanCmd,來接受主機(jī)發(fā)出的命令,從而實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)耐健_\(yùn)行中,系統(tǒng)可通過用戶接口發(fā)送一個(gè)讀取數(shù)據(jù)的請(qǐng)求,并將這個(gè)請(qǐng)求保存在RTDX目標(biāo)機(jī)的緩存中,然后通過JTAG接口發(fā)送到主機(jī)。同時(shí)應(yīng)由COM automation client通過COM接口把要發(fā)送的數(shù)據(jù)先寫入到RTDX主;帆函數(shù)庫中的緩存,以等待目標(biāo)機(jī)讀取數(shù)據(jù)的請(qǐng)求。當(dāng)RTDX主機(jī)函數(shù)庫收到從目標(biāo)機(jī)發(fā)出的讀取數(shù)據(jù)請(qǐng)求時(shí),保存在RTDX主機(jī)函數(shù)庫中的數(shù)據(jù)便可通過JTAG接口將數(shù)據(jù)發(fā)送到目標(biāo)機(jī),從而使該數(shù)據(jù)可以實(shí)時(shí)寫入目標(biāo)機(jī)指定的存儲(chǔ)區(qū)域。操作完成后,主機(jī)會(huì)通知RTDX目標(biāo)機(jī)函數(shù)庫。
2.3 RTDX目標(biāo)機(jī)函數(shù)庫的用戶接口和COM接口
利用RTDX目標(biāo)機(jī)函數(shù)庫的用戶接口可實(shí)現(xiàn)在目標(biāo)機(jī)DSP應(yīng)用程序和主機(jī)之間進(jìn)行安全可靠的數(shù)據(jù)交換。同時(shí)可利用它完成應(yīng)用程序向RTDX主機(jī)庫發(fā)送數(shù)據(jù)、應(yīng)用程序向RTDX主機(jī)庫發(fā)送數(shù)據(jù)請(qǐng)求以及在目標(biāo)機(jī)上提供數(shù)據(jù)緩存等功能。另外,數(shù)據(jù)發(fā)送前應(yīng)先將數(shù)據(jù)拷貝到目標(biāo)機(jī)緩存中,以減少對(duì)應(yīng)用程序?qū)崟r(shí)性的影響。 RTDX主機(jī)庫中的COM接口可用來確定COM automation client與RTDX主機(jī)函數(shù)庫的通信方式。而通過COM automation client可訪問保存在RTDX lox文件或BTDX主機(jī)函數(shù)庫緩存中的數(shù)據(jù)。同時(shí)COM automation client也可通過RTDX主機(jī)函數(shù)庫向應(yīng)用程序發(fā)送數(shù)據(jù)。
2.4 RTDX模式
RTDX主機(jī)函數(shù)庫提供了兩種接受目標(biāo)機(jī)數(shù)據(jù)的模式:第一種是非連續(xù)模式,在這種模式中,數(shù)據(jù)通常存到主機(jī)的log文件中。該模式一般應(yīng)用于非實(shí)時(shí)處理情況下,可在事后分析保存在log文件中的數(shù)據(jù)。第二種是連續(xù)模式,在這種模式中,數(shù)據(jù)不寫入log文件,而是由RTDX主機(jī)函數(shù)庫緩存,它一般應(yīng)用在實(shí)時(shí)情況下。
3 基-ZRTDX的視頻數(shù)據(jù)傳輸
在程序調(diào)試時(shí),筆者利用RTDX技術(shù)在主機(jī)上顯示采集圖像處理后的結(jié)果以驗(yàn)證算法的性能,并通過設(shè)定主機(jī)與目標(biāo)機(jī)的握手信號(hào)來在主機(jī)上實(shí)現(xiàn)動(dòng)態(tài)的視頻顯示。
考慮到數(shù)據(jù)傳輸都由JTAG接口完成而且圖像數(shù)據(jù)量很大,調(diào)試中往往采用將512X512圖像每4個(gè)相鄰像素取一個(gè)點(diǎn)的方法來將分辨率降為128X128,因?yàn)闇p少數(shù)據(jù)量可提高顯示幀頻。當(dāng)數(shù)據(jù)通過RTDX通道傳到主機(jī)時(shí),128X128的圖像數(shù)據(jù)可通過每個(gè)像素?cái)U(kuò)展成4個(gè)相鄰的像素來恢復(fù)圖像。最后通過VC的位圖顯示函數(shù)來顯示圖像結(jié)果。圖2所示是其視頻數(shù)據(jù)流示意圖。
為了使主機(jī)與目標(biāo)機(jī)之間能正確地傳送和接受數(shù)據(jù),主機(jī)應(yīng)用程序和目標(biāo)機(jī)應(yīng)用程序都要嵌入支持RTDX的APl函數(shù)。下面詳細(xì)介紹兩者之間的操作流程。
3.1在DSP應(yīng)用程序中使用RTDX
在DSP應(yīng)用程序中通過APl函數(shù)調(diào)用RTDX目標(biāo)機(jī)函數(shù)庫時(shí),必須將相應(yīng)的API函數(shù)嵌入應(yīng)用程序中。其步驟如下:
(1)設(shè)定相應(yīng)的RTDX通道為全局對(duì)象
RTDX通道為單向傳輸。設(shè)定RTDX輸出通道ochanData可使目標(biāo)機(jī)向主機(jī)傳輸數(shù)據(jù);而設(shè)定RT-DX輸入通道ichanCmd則可使主機(jī)向目標(biāo)機(jī)傳輸命令數(shù)據(jù),同時(shí),可用輸入通道來同步主機(jī)與目標(biāo)機(jī)。
其程序如下:
RTDX_CreatOutputChannel(ochanData);
RTDX_CreatlnputChannel(ichanCmd);
Void Task ch()
RTDX_enableOutput(&ochanData);
RTDX_enablelnput(&ichanCmd)
//START為主機(jī)向目標(biāo)機(jī)發(fā)送
的傳輸開始控制命令(用戶自定義)
Retumcode二RTDX_read(&ichanCmd,
received,4);
)while(received[0]?。篠TART);
(2)設(shè)定RTDX_Poll()的調(diào)用方式
RTDX目標(biāo)機(jī)函數(shù)庫是通過調(diào)用函數(shù)RTDXPon()來實(shí)現(xiàn)主機(jī)與目標(biāo)機(jī)間的通信的。RTDX_Poll()的調(diào)用有兩種方式:一種是在應(yīng)用程序中調(diào)用,另一種是利用中斷服務(wù)程序調(diào)用。程序如下
while(RTDX_writing!二NUIL)
#ifRTDX_POIIJNG
RTDX_Poll();
#endif )
若將宏RTDX_POII,ING_IMPLEMENTATION定義為1,則表示在應(yīng)用程序中調(diào)用RTDX_Poll(),而如果將其定義為0,則表示在中斷服務(wù)程序中調(diào)用
RTDX_Poll()。
(3)目標(biāo)機(jī)向主機(jī)發(fā)送視頻數(shù)據(jù)
若采集數(shù)據(jù)空間的一幀圖像(512X 512),可通過調(diào)用函數(shù)RTDX_write()發(fā)送到主機(jī),并可將一幀圖像分成若干塊傳輸,每一塊數(shù)據(jù)為1k。程序如下:
fOr(cond:0;cond《0x10;cond++)
rawdat_temp‘baseadd+cond*0x4000;
rawdat二(unsignedint*)mwdat_temp;
/*圖像在目標(biāo)機(jī)上的地址*/
fOr(count:0;count while(!RTDX-write(&ochan,mwdat+count*datanum,datanum*sizeof(int)));
3.2在VC編程環(huán)境下使用RTDX
在VC環(huán)境下獲取RTDX主機(jī)函數(shù)庫緩存中的數(shù)據(jù)并顯示的步驟如下:
(1)在VC中實(shí)現(xiàn)與RTDX主機(jī)函數(shù)庫的握手
(Handshanking)程序如下:
::Colnitialize(NULL); //initializeCOM
::Variantlnit(&sa); //initializeVARIANTsa
h二ndx.Createlnstance(uuidof(RTDXINTLib::Rtdx-
Exp)); //instantiate出eRTDX//COMObiect
訂(FAILED(血)){
MessageBox(//Error:Instantiationfailed?。?/p>
return-1; )
status二rtdx-》Open(“ochan’‘,”R“);
//opepachannel(ochan)fOrreading
訂(status!二Success){
MessageBox(”-Error
fdled!“);
return-1; 1
(2)在VC中重新獲得由目標(biāo)機(jī)傳送來的數(shù)據(jù)
rtck-》ReadSAl4(&sa);
//read a 32-ht integermessage
switch(status) {
//teststatus returnedfrom ReadSAl4
case Success:
for(i:0;i《(signed)sa.parray-》
rgsabound[0].cElements;i++)
{hr二::SafeArrayGetElement(sa.parray,
&i,(10ng*)&data);
datatemp:(unsignedint)data;
fOr(intitochar:0;itochar《4;itochar十+)
ImageT[count+itochar];(char)(datatemp
》》itochar-k9)&隊(duì)000000ff);
count+:4;1//counter為傳輸像素計(jì)數(shù)器
break;
case Failure:
MessageBox(-Error:ReadSAl4
returnedfmlure?。躰”);
case
return-1;
EnoDataAvailsble:
MessageBox(“NODataiscurrendy
available!”);
return-1;
case EendOfl_ogFile:
MessageBox(“DataProcessingComplete!”)
1 while(status!二EEndOfLogFile)
(3)在VC中顯示數(shù)據(jù)的程序如下:
if(count二:16384) //128*128:
count二0;
br(inti:0;i for(intj:0¨ lpTemlmage¨*m_nWidth+¨:ImageT
[(m_nHei少t-i-1)*m_nWidth+¨
m_rawdat:RawToDib(hlmage);
Draw(m_rawdat,dc,1eft,top);
/*調(diào)用函數(shù)Draw()畫圖*
4 結(jié)束語
RTDX是一種非常優(yōu)秀的實(shí)時(shí)數(shù)據(jù)傳輸技術(shù),為軟件調(diào)試提供了一種全新的方法。該項(xiàng)技術(shù)所設(shè)計(jì)的調(diào)試軟件具有占用系統(tǒng)資源少、速度快和COM Automatic Client選擇靈活等特點(diǎn),為DSP編程人員發(fā)現(xiàn)程序錯(cuò)誤和監(jiān)測(cè)系統(tǒng)運(yùn)行狀況提供了實(shí)時(shí)的、直觀的表示形式。其實(shí),RTDX不但可以用在軟件調(diào)試過程中,而且可用于醫(yī)療監(jiān)測(cè)、工業(yè)控制等領(lǐng)域。
責(zé)任編輯:gt
-
dsp
+關(guān)注
關(guān)注
554文章
8059瀏覽量
350637 -
寄存器
+關(guān)注
關(guān)注
31文章
5369瀏覽量
121274 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7530瀏覽量
164401
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
關(guān)于MATLAB建立圖像處理和目標(biāo)識(shí)別系統(tǒng)流程的求助
如何選擇合適頻率的射頻識(shí)別系統(tǒng)
怎么實(shí)現(xiàn)基于Z85C30的動(dòng)目標(biāo)識(shí)別系統(tǒng)的串行通信設(shè)計(jì)?
基于DSP的毫米波主被動(dòng)復(fù)合探測(cè)器目標(biāo)識(shí)別系統(tǒng)設(shè)計(jì)【回映分享】
智能車目標(biāo)識(shí)別系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)資料推薦
基于RT-Thread和N32G457的嵌入式目標(biāo)識(shí)別系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)
基于USB和目標(biāo)識(shí)別的圖像采集系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)
運(yùn)動(dòng)目標(biāo)識(shí)別與跟蹤系統(tǒng)的研究
基于圖像檢索的地標(biāo)識(shí)別系統(tǒng)
紅外動(dòng)目標(biāo)識(shí)別跟蹤系統(tǒng)的實(shí)現(xiàn)方案
《光學(xué)精密工程》—采用優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)的紅外目標(biāo)識(shí)別系統(tǒng)
![《光學(xué)精密工程》—采用優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)的紅外<b class='flag-5'>目標(biāo)識(shí)別系統(tǒng)</b>](https://file.elecfans.com/web2/M00/1D/B1/poYBAGGTTsiAEWSvAADvg9Rnxjk329.png)
機(jī)器視覺的圖像目標(biāo)識(shí)別方法操作要點(diǎn)
機(jī)器視覺的圖像目標(biāo)識(shí)別方法綜述
![機(jī)器視覺的<b class='flag-5'>圖像</b><b class='flag-5'>目標(biāo)識(shí)別</b>方法綜述](https://file.elecfans.com/web2/M00/4E/DC/poYBAGLCjeiALm_WAAAYmfR7Qec474.png)
評(píng)論