介紹一種實(shí)時(shí)操作系統DSP/BIOS
例5 PIP對應的讀任務(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對應的寫(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應用程序可以保持一個(gè)簡(jiǎn)單統一接口而不必關(guān)心具體的硬件操作,因此當該軟件移植到不同環(huán)境中時(shí),至多只需要改寫(xiě)設備驅動(dòng)程序。使用PIP的一個(gè)具體實(shí)例就是HST模塊。HST模塊在主機和DSP之間建立起一條數據鏈路,該鏈路就是一個(gè)PIP對象。對HST的操作方式與PIP一致。其差別僅僅在于HST在初始化時(shí)指向了預定義的DSP上的HPI接口而已。
SIO:從PIP的邏輯關(guān)系可以看出,讀寫(xiě)PIP就是一個(gè)數據拷貝的過(guò)程。這在某些應用中,如實(shí)現網(wǎng)絡(luò )協(xié)議TCP/IP時(shí),不是非常有效。因為數據每向上傳遞一層就需要進(jìn)行一次數據拷貝,其效率非常差。如果采用SIO來(lái)實(shí)現就會(huì )有很大的改善。SIO的操作只有g(shù)et()和 put()兩種。與PIP不同的是SIO沒(méi)有自己的緩沖隊列。每次get() 或 put() 操作時(shí)都會(huì )在應用程序和設備驅動(dòng)程序之間交換緩沖的指針。所以SIO操作的實(shí)質(zhì)是數據地址的交換。由于沒(méi)有數據拷貝,其運行效率就很高。SIO的運行邏輯如圖4所示。
7 RTDX
實(shí)時(shí)數據交換Real-Time-Data-eXhange是DSP/BIOS提供的一個(gè)全新的功能。在很多應用中要求DSP不能夠停下來(lái),而需要從主機中實(shí)時(shí)地讀取數據或者向主機實(shí)時(shí)地輸出數據。德州儀器的C5000,C6000系列的DSP都可以通過(guò)JTAG接口來(lái)實(shí)現這個(gè)功能。其邏輯結構如圖5所示。
評論