新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > SHARC并行系統(tǒng)軟件設(shè)計方法

SHARC并行系統(tǒng)軟件設(shè)計方法

作者: 時間:2014-02-17 來源:網(wǎng)絡(luò) 收藏
eight: 25px; background-color: rgb(255, 255, 255); ">  用戶只需要在內(nèi)存區(qū)填寫多個TCB的表格,用其中的CPx字段將每個表格串起來并將第一個表格的結(jié)束地址放入CPx寄存器,就可以啟動鏈?zhǔn)紻MA。要終止一個鏈?zhǔn)紻MA,只需要把最后一個TCB中的CPx字段填0即可。TCB結(jié)構(gòu)如圖1所示。

本文引用地址:http://m.butianyuan.cn/article/241699.htm

  

下面是建立一個鏈?zhǔn)紻MA的順序:

  (1)在片內(nèi)存儲器中建立需要的TCB數(shù)據(jù)塊;

  (2)設(shè)置DMA參數(shù)寄存器,使能相應(yīng)的LxDEN和LxCHEN;

  (3)將第一個TCB的最后一個地址的偏移量寫入CPx寄存器中,即啟動了鏈?zhǔn)紻MA。

  鏈路口的數(shù)據(jù)傳遞可以依靠中斷。鏈路口中斷的產(chǎn)生有以下3種情況:

  (1)DMA使能時,DMA完成后將產(chǎn)生一個可屏蔽中斷。

  (2)DMA禁止時,發(fā)送時LxBUF非滿,接收時LxBUF非空。

  (3)外部設(shè)備訪問一個未指定的鏈路口,或者訪問一個已指定但LBUF被禁止的鏈路口時,將產(chǎn)生一個鏈路服務(wù)請求(LSRQ)中斷,且所有的鏈路口公用一個中斷矢量。

  前2種情況比較簡單,只需要注意:ADSP2116X鏈路口的中斷屏蔽、鎖存與ADSP2106X不同,它從IRPTL/IMASK中分離出來,單獨存在于寄存器LIRPTL中,并且在IMASK中加了一個鏈路口中斷總開關(guān)LPISUMI。如果要使能某個鏈路口中斷,則需要設(shè)置3個控制位。例如使能L0BUF中斷,需要以下指令:“bit set imask LPISUMI;bit set lirptl LP0MSK;bit set mode1 IRPTEN;”。

  對于上面的鏈路服務(wù)請求中斷(LSRQ),在多通信時比較有效。通過該中斷可以實現(xiàn)使用同一個鏈路口完成接收和發(fā)送數(shù)據(jù)的功能,并且在2個一個主動、另一個被動的情況下不依靠外部邏輯實現(xiàn)2個鏈路口的數(shù)據(jù)傳遞同步。例如-1需要通過鏈路口向SHARC-2傳送數(shù)據(jù),由于SHARC-1主動發(fā)送,因此只需配置好DMA參數(shù),啟動DMA即可。但是對于SHARC-2,由于被動接收,事先并不知道SHARC-1何時向自己發(fā)送數(shù)據(jù),因此很難在適當(dāng)?shù)臅r候啟動DMA接收。通過LSRQ中斷,就可以很容易地解決這個問題。

  首先將雙方的鏈路口設(shè)置為無效。當(dāng)SHARC-1需要向SHARC-2通信時(發(fā)送或接收)將自己的鏈路口設(shè)為有效,并根據(jù)需要從自己的鏈路緩沖中讀寫數(shù)據(jù)。由于鏈路通信協(xié)議規(guī)定:當(dāng)發(fā)送數(shù)據(jù)時,如果對方?jīng)]有響應(yīng),則將LxCLK置為高電平,數(shù)據(jù)線保持不變;當(dāng)需要接收數(shù)據(jù)時,如果對方?jīng)]有響應(yīng),則LxACK保持為高電平。這樣,SHARC-2就會觸發(fā)LSRQ中斷。由于LSRQ中斷的所有鏈路口公用一個中斷矢量,因此在中斷服務(wù)子程序中,首先需要判斷哪個鏈路口有服務(wù)請求,且要區(qū)分是發(fā)送還是接收請求,然后配置相應(yīng)的DMA參數(shù),使能該鏈路口,從而在雙方之間建立一個單向的數(shù)據(jù)通路。雙方傳遞數(shù)據(jù)完成,會產(chǎn)生一個如上文中鏈路口中斷情況(1)所示的中斷。在中斷服務(wù)程序中,仍然將各自的鏈路口設(shè)置為無效,等待下一次通信請求。下面給出一個利用LSRQ中斷實現(xiàn)數(shù)據(jù)傳遞的示例。

  例3:配置L0BUF,利用LSRQ中斷實現(xiàn)數(shù)據(jù)傳遞。

  r0=0x0002c688;

  dm(LAR)=r0;

  ustat1=dm(LCTL0);

  bit clr ustat1 L0EN;  /*禁止鏈路緩沖0*/

  dm(LCTL0)=ustat1;

  ustat1=dm(LSRQ);

  bit set ustat1 L0TM;  /*鏈路0發(fā)送屏蔽*/

  bit set ustat1 L0RM;  /*鏈路0接收屏蔽*/

  dm(LSRQ)=ustat1;

  bit set imask LSRQI;  /*使能LSRQ中斷*/

  bit set mode1 IRPTEN;

  ……

  上面的程序段可以放在主程序的開始。經(jīng)過以上的配置,就可以通過LSRQ中斷方便地實現(xiàn)與另一片SHARC的鏈路口通信(發(fā)送、接收)。另外需要注意的是,當(dāng)修改鏈路緩沖器的使能位LxEN時,必須將該中斷屏蔽(bit clr imask LSRQI),否則有可能產(chǎn)生不可預(yù)料的LSRQ中斷。

  3 結(jié)束語

  采用共享存儲器并行系統(tǒng)和分布存儲器并行系統(tǒng)各有特色,結(jié)合這二種系統(tǒng)設(shè)計的思想更易于構(gòu)建并行處理系統(tǒng)。設(shè)計時,可以采用子模塊結(jié)構(gòu)把這二者結(jié)合起來。子模塊內(nèi)部,采用共享存儲器和分布存儲器并存,各個SHARC間根據(jù)需要既可以通過總線傳送數(shù)據(jù),又可以通過鏈路口傳送數(shù)據(jù)。子模塊之間采用分布式存儲器系統(tǒng),通過鏈路口進行數(shù)據(jù)傳遞。采用以上設(shè)計,可以實現(xiàn)有效的并行處理,使系統(tǒng)整體性能有很大的提高。


上一頁 1 2 3 下一頁

關(guān)鍵詞: SHARC 并行系統(tǒng)軟件

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉