基于Nios II軟核的多核處理器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
重要的是,在系統(tǒng)中互斥核Mutex本身無(wú)法從物理上防止共享資源被處理器同時(shí)訪問(wèn),而提供此功能是我們所編寫的軟件程序。在獲得相關(guān)共享資源前,軟件總是詢問(wèn)并獲得Mutex核。
本文引用地址:http://www.ex-cimer.com/article/245929.htm2.2 軟件設(shè)計(jì)
本設(shè)計(jì)中,兩個(gè)處理器的軟件程序都擁有自己獨(dú)有的一段存儲(chǔ)空間,這些存儲(chǔ)空間都位于同一個(gè)物理存儲(chǔ)設(shè)備SDRAM上,如圖3所示,第一個(gè)處理器使用SDRAM中0x0到0x1FFFF之間的地址空間,第二個(gè)處理器使用0x20000到0x2FFFF之間的地址空間,并且以異常地址作為邊界。
異常地址是程序加載的地址,決定著哪個(gè)處理器的軟件程序可以占據(jù)空間基地址運(yùn)行。Nios II IDE負(fù)責(zé)鏈接處理器的軟件設(shè)計(jì)并映射到存儲(chǔ)器中,并為每個(gè)處理器提供其獨(dú)有的段空間來(lái)運(yùn)行軟件設(shè)計(jì)。對(duì)于每個(gè)處理器來(lái)說(shuō),有五個(gè)主要的代碼段需要映射到存儲(chǔ)器的固定地址中:.text,存放實(shí)際執(zhí)行的代碼;.rodata,存放實(shí)際執(zhí)行代碼中所使用的常量;.rwdata,存放讀寫變量和指針;Heap,自動(dòng)分配的空間;Stack,存放函數(shù)調(diào)用的參數(shù)和其他臨時(shí)的數(shù)據(jù)。
同時(shí)在雙處理器系統(tǒng)中,每個(gè)處理器都必須從自己的啟動(dòng)存儲(chǔ)空間來(lái)啟動(dòng)。啟動(dòng)存儲(chǔ)器和程序存儲(chǔ)器一樣也能被分區(qū),只需在存儲(chǔ)器上設(shè)置每個(gè)處理器的復(fù)位地址就可以。
3 系統(tǒng)軟硬件實(shí)現(xiàn)
SopcBuilder是Altera公司提供的一款圖形化系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)工具,內(nèi)嵌于Quartus II軟件中。利用SopcBuilder實(shí)現(xiàn)的雙核系統(tǒng)如圖4所示,包括了兩個(gè)Nios II軟核處理器以及其他內(nèi)外設(shè),連接關(guān)系表現(xiàn)了系統(tǒng)組件如何通過(guò)Avalon總線構(gòu)成一個(gè)可以工作的系統(tǒng)。系統(tǒng)配置對(duì)每個(gè)系統(tǒng)組件分配了基地址,以實(shí)現(xiàn)Avalon總線對(duì)組件的訪問(wèn)。
對(duì)于利用SopcBuilder生成的雙核系統(tǒng),通過(guò)JTAG接口下載配置到Altera的FPGA開(kāi)發(fā)板上,然后在Nios II IDE中調(diào)用HAL API函數(shù)開(kāi)發(fā)C 語(yǔ)言應(yīng)用程序就可以在FPGA開(kāi)發(fā)板上運(yùn)行,以此來(lái)驗(yàn)證所設(shè)計(jì)的多核系統(tǒng)是否能夠正確運(yùn)行。本文利用Altera公司提供的例程hello_world_multi,再將其修改后,各個(gè)處理器通過(guò)交替獲得Mutex的所有權(quán),執(zhí)行相同的程序,并將處理數(shù)據(jù)存儲(chǔ)在片上共享存儲(chǔ)器上,最終通過(guò)CPU_1的JTAG_Uart打印到Nios II IDE終端。圖5為驗(yàn)證程序的運(yùn)行結(jié)果在Nios II IDE輸出窗口的打印,可以看出,兩個(gè)核都能通過(guò)Mutex獲得外設(shè)的控制權(quán),表明系統(tǒng)配置成功且能正確運(yùn)行。
結(jié)語(yǔ)
本文根據(jù)SOPC技術(shù)利用Quartus的SopcBuilder構(gòu)建硬件平臺(tái),利用Nios II IDE運(yùn)行軟件程序,實(shí)驗(yàn)結(jié)果表明:軟硬件設(shè)計(jì)正確,系統(tǒng)能正常運(yùn)行。同時(shí),本設(shè)計(jì)為雙核以上的多核系統(tǒng)的設(shè)計(jì)提供了理論基礎(chǔ)。
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論