全面解析Nios Ⅱ嵌入式軟核多處理器系統(tǒng)
本文引用地址:http://m.butianyuan.cn/article/236502.htm
3.4 設(shè)置啟動地址
在多處理器系統(tǒng)中,每個處理器在存儲器中必須擁有自己的啟動區(qū)域,多個處理器不能從同一非易失性存儲器的同一地址啟動。啟動存儲器類似程序存儲器一樣也可以進(jìn)行分區(qū),但段和鏈接的概念不同,因?yàn)橥ǔR龑?dǎo)代碼只是復(fù)制到它實(shí)際的程序代碼被鏈接在RAM中,然后跳轉(zhuǎn)到該程序代碼處。為了從同一非易失性存儲器的不同區(qū)域啟動多個處理器,設(shè)置每個處理器復(fù)位地址,這個地址就是啟動該處理器的位置,啟動區(qū)域要留出足夠的空間存放啟動代碼。由于沒有支持機(jī)制多個處理器無法直接訪問CFI FLASH存儲器,需要使用一個CFI FLASH控制器,Nios Ⅱ處理器通過CFI FLASH控制器讀取或?qū)懭氲紺FI FLASH存儲器。如果多個Nios Ⅱ處理器啟動在同一個CFI FLASH存儲器。為確保安全訪問,必須刪除一個主控處理器之外的CFI FLASH 存儲器alt_main()函數(shù)所有初始化的驅(qū)動程序,并確認(rèn)啟動前完成所有其他處理器在CFIFLASH存儲器的程序初始化。圖3所示六個處理器從一個FLASH存儲器啟動的映射。
3.5 共享外設(shè)資源
多個處理器共享外設(shè)存在嚴(yán)重的問題。共享外設(shè)的最大的問題是中斷,如果允許一個外設(shè)中斷且所有處理器共享它,沒有可靠的方法保證哪一個處理器首先響應(yīng)中斷且為哪個外設(shè)服務(wù)。此外,如果外設(shè)是用來作為多處理器的輸入設(shè)備,很難確定哪個處理器應(yīng)該從設(shè)備中接受輸入信息。Nios Ⅱ多處理器系統(tǒng)共享外設(shè)資源的方式,是系統(tǒng)中的外設(shè)僅被一個處理器訪問,如果其他處理器需要使用外設(shè),最好是使用硬件先進(jìn)先出(FIFO)或消息緩沖區(qū)互斥保護(hù)。創(chuàng)建多處理器系統(tǒng)時,僅對需要通信的處理器和外設(shè)之間進(jìn)行連接。例如,如果一個處理器運(yùn)行僅使用一個片上存儲器,該處理器沒有必要與系統(tǒng)中任何其他存儲器連接。處理器與存儲器的分離,不使用物理斷開連接,這樣可節(jié)約FPGA資源,保證處理器不會破壞存儲器的數(shù)據(jù)。
共享資源多處理器與各種組件連接是設(shè)計(jì)中的關(guān)鍵環(huán)節(jié),要驗(yàn)證每個處理器及所需組件的連接是否正確。多數(shù)組件最好是由單一的處理器管理。例如處理器A要求一個外設(shè)的服務(wù),而該外設(shè)與處理器B連接并由處理器B 管理,處理器A 要求對該外設(shè)進(jìn)行操作,處理器A 必須請求處理器B.這樣可以使用處理器互斥保護(hù)的共享片上存儲器,用于個兩處理器之間的通信,達(dá)到多處理器共享外設(shè)的目的。
在多處理器系統(tǒng)中,每個從外設(shè)可以占據(jù)相同的基地址不會發(fā)生沖突,只要每個外設(shè)是被不同的處理器控制。因?yàn)槊總€從外設(shè)不必一定被每個處理器控制。如果處理器A被連接到映射地址為0x00008a00的一個從外設(shè),處理器B也可以被連接到映射地址0x00008a00另一個從外設(shè),只要處理器A是沒有連接到處理器B的從外設(shè),處理器B 沒有連接到處理器A 的從外設(shè),不會因?yàn)閺耐庠O(shè)占據(jù)相同的基地址而發(fā)生沖突。圖4方框圖顯示多處理器系統(tǒng)中不同的從外設(shè)組件映射到同一個基地址的示例。
4 系統(tǒng)調(diào)試及軟件設(shè)計(jì)
Nios Ⅱ SBT for Eclipse 工具包括了許多功能,它可以進(jìn)行Nios Ⅱ多處理器系統(tǒng)的軟件開發(fā)。能同時對多個Nios Ⅱ處理器進(jìn)行調(diào)試會話,也可單獨(dú)暫停和恢復(fù)每個處理器的運(yùn)行,單獨(dú)設(shè)置每處理器的斷點(diǎn)。如果一個處理器遇到一個斷點(diǎn),它不會停止或影響其他處理器的操作。Nios Ⅱ SBT for Eclips對多個處理器系統(tǒng)具有可同時進(jìn)行在片調(diào)試的能力。
系統(tǒng)軟件設(shè)計(jì)應(yīng)注意的問題,在設(shè)計(jì)Nios Ⅱ多處理器系統(tǒng)的軟件時,必須要考慮系統(tǒng)硬件結(jié)構(gòu)的特點(diǎn)以及啟動地址和異常地址的設(shè)置。設(shè)計(jì)調(diào)試運(yùn)行多處理器系統(tǒng)軟件與單處理器系統(tǒng)相似,一定要清楚每個處理器的復(fù)位地址、異常地址,CPUID寄存器的值以及存儲器的類型。多個處理器使用同一個程序存儲器,而每個處理器的程序必須存放在不同的區(qū)域,用異常地址為每個處理器存放程序確定內(nèi)存區(qū)域,使用QSYS為每個處理器設(shè)置異常地址。
5 結(jié)語
SoPC技術(shù)的出現(xiàn)帶來全新的嵌入式處理器硬件的設(shè)計(jì)理念,使得設(shè)計(jì)嵌入多處理系統(tǒng)硬件電路的有了多種方法和途徑。實(shí)例Nios Ⅱ嵌入式軟核六處理器系統(tǒng)的方案具有一定可行性和實(shí)用性。如何提高嵌入式多個處理器系統(tǒng)的效率,實(shí)現(xiàn)資源的最佳配置,簡化系統(tǒng)結(jié)構(gòu)、降低成本和功耗,怎樣合理選擇時鐘、I/O、其他外設(shè)等問題有待進(jìn)一步研究解決。
存儲器相關(guān)文章:存儲器原理
評論