介紹一種實(shí)時(shí)操作系統(tǒng)DSP/BIOS
例5 PIP對(duì)應(yīng)的讀任務(wù):
extern far PIP_Obj pip;
reader()
{
Uns size;
Ptr addr;
if(PIP_getReaderNumFrames(pip)>0)
{
PIP_get(pip);
addr=PIP_getReaderAddr(pip);
size=PIP_getReaderSize(pip);
/*Code to empty the frame*/
PIP_free(pip);
}
else{
LOG_error(″no frames available″);
/* or you could just return;*/
}
}
例6 PIP對(duì)應(yīng)的寫(xiě)任務(wù):
extern far PIP_Obj pip;
writer()
{
Uns size;
Ptr addr;
if(PIP_getWriterNumFrames(pip)>0){
PIP_alloc(pip);
addr=PIP_getWriterAddr(pip);
size=PIP_getWriterSize(pip);
/* fill the frame up to size */
PIP_put(pip);
}
else{
LOG_error(″no frames available″);
/* or you could just return;*/
}
}
由邏輯關(guān)系可以看到,通過(guò)使用PIP應(yīng)用程序可以保持一個(gè)簡(jiǎn)單統(tǒng)一接口而不必關(guān)心具體的硬件操作,因此當(dāng)該軟件移植到不同環(huán)境中時(shí),至多只需要改寫(xiě)設(shè)備驅(qū)動(dòng)程序。使用PIP的一個(gè)具體實(shí)例就是HST模塊。HST模塊在主機(jī)和DSP之間建立起一條數(shù)據(jù)鏈路,該鏈路就是一個(gè)PIP對(duì)象。對(duì)HST的操作方式與PIP一致。其差別僅僅在于HST在初始化時(shí)指向了預(yù)定義的DSP上的HPI接口而已。
SIO:從PIP的邏輯關(guān)系可以看出,讀寫(xiě)PIP就是一個(gè)數(shù)據(jù)拷貝的過(guò)程。這在某些應(yīng)用中,如實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議TCP/IP時(shí),不是非常有效。因?yàn)閿?shù)據(jù)每向上傳遞一層就需要進(jìn)行一次數(shù)據(jù)拷貝,其效率非常差。如果采用SIO來(lái)實(shí)現(xiàn)就會(huì)有很大的改善。SIO的操作只有g(shù)et()和 put()兩種。與PIP不同的是SIO沒(méi)有自己的緩沖隊(duì)列。每次get() 或 put() 操作時(shí)都會(huì)在應(yīng)用程序和設(shè)備驅(qū)動(dòng)程序之間交換緩沖的指針。所以SIO操作的實(shí)質(zhì)是數(shù)據(jù)地址的交換。由于沒(méi)有數(shù)據(jù)拷貝,其運(yùn)行效率就很高。SIO的運(yùn)行邏輯如圖4所示。
7 RTDX
實(shí)時(shí)數(shù)據(jù)交換Real-Time-Data-eXhange是DSP/BIOS提供的一個(gè)全新的功能。在很多應(yīng)用中要求DSP不能夠停下來(lái),而需要從主機(jī)中實(shí)時(shí)地讀取數(shù)據(jù)或者向主機(jī)實(shí)時(shí)地輸出數(shù)據(jù)。德州儀器的C5000,C6000系列的DSP都可以通過(guò)JTAG接口來(lái)實(shí)現(xiàn)這個(gè)功能。其邏輯結(jié)構(gòu)如圖5所示。
評(píng)論