基于Nios Ⅱ嵌入式軟核多處理器系統研究
本文引用地址:http://dyxdggzs.com/article/262429.htm

3.2 Nios Ⅱ處理器選擇和參數設置
Nios Ⅱ處理器有快速型、標準型和經(jīng)濟型三種類(lèi)型[3],快速型配置性能最高,經(jīng)濟型配置占用片內資源最少,標準型配置的性能和占用片上資源介于快速型和經(jīng)濟型之間。根據實(shí)際應用需要對系統性?xún)r(jià)比及功耗的要求,合理選擇和配置Nios Ⅱ處理器。
多處理器系統中對每一個(gè)處理器都要進(jìn)行正確的設置,否則即使創(chuàng )建的硬件系統已通過(guò)編譯并生成,也會(huì )造成多處理器系統不能正常運行的問(wèn)題。如果多個(gè)處理器使用片上存儲器為共享程序存儲器,則必須正確設計異常地址。如果使用CFI FLASH存儲器區域作為多個(gè)處理器的引導區,則必須要正確設計復位地址。使用不同類(lèi)型的存儲器要正確的進(jìn)行設置。
3.3 共享程序存儲器
為了降低成本、功耗,簡(jiǎn)化多處理器系統結構,實(shí)例中利用FPGA的芯片資源共享程序存儲器,六個(gè)Nios Ⅱ處理器的運行軟件共同使用片上存儲器,每個(gè)處理器的軟件位于片上存儲器所屬特有的存儲器區域。如果六個(gè)處理器的軟件在片上存儲器運行,假設每個(gè)處理器的軟件需要有8 KB的內存空間用于程序代碼和數據。這樣第一個(gè)處理器使用片上存儲器0×0~0x1FFF之間的作為其程序空間,第二個(gè)處理器使用片上存儲器0×2000~0x3FFF 之間的區域,第三個(gè)處理器使用片上存儲器0×4000~0x5FFF之間的區域;其他各個(gè)處理器所需的存儲器區域采用同樣的方法對片上存儲器進(jìn)行分區。
Nios Ⅱ SBT 提供了一個(gè)簡(jiǎn)單的存儲器分區模式,允許多個(gè)處理器的軟件運行于同一存儲器的不同區域,確保位于存儲器中的主要代碼段的鏈接和固定地址。
圖2所示六個(gè)處理器在片上儲存器的分區及代碼段的鏈接。

3.4 設置啟動(dòng)地址
在多處理器系統中,每個(gè)處理器在存儲器中必須擁有自己的啟動(dòng)區域,多個(gè)處理器不能從同一非易失性存儲器的同一地址啟動(dòng)。啟動(dòng)存儲器類(lèi)似程序存儲器一樣也可以進(jìn)行分區,但段和鏈接的概念不同,因為通常引導代碼只是復制到它實(shí)際的程序代碼被鏈接在RAM中,然后跳轉到該程序代碼處。為了從同一非易失性存儲器的不同區域啟動(dòng)多個(gè)處理器,設置每個(gè)處理器復位地址,這個(gè)地址就是啟動(dòng)該處理器的位置,啟動(dòng)區域要留出足夠的空間存放啟動(dòng)代碼。由于沒(méi)有支持機制多個(gè)處理器無(wú)法直接訪(fǎng)問(wèn)CFI FLASH存儲器,需要使用一個(gè)CFI FLASH控制器,Nios Ⅱ處理器通過(guò)CFI FLASH控制器讀取或寫(xiě)入到CFI FLASH存儲器。如果多個(gè)Nios Ⅱ處理器啟動(dòng)在同一個(gè)CFI FLASH存儲器。為確保安全訪(fǎng)問(wèn),必須刪除一個(gè)主控處理器之外的CFI FLASH 存儲器alt_main()函數所有初始化的驅動(dòng)程序,并確認啟動(dòng)前完成所有其他處理器在CFIFLASH存儲器的程序初始化。圖3所示六個(gè)處理器從一個(gè)FLASH存儲器啟動(dòng)的映射。
評論