2011-04-13 104 views
0

我想知道爲串行SPI閃存創建PROM文件(.MCS)的正確過程,包括FPGA配置比特流和由Microblaze處理器使用的軟件。假設我的硬件和軟件設計全部完成。設計流程爲包含配置位流的Xilinx Spartan-6創建引導SPI閃存(PROM文件)AND Microblaze軟件

我正在使用Xilinx Spartan-6評估板SP605,它具有多個非易失性存儲設備,我希望使用串行SPI Flash來存儲FPGA比特流以及需要加載的Microblaze軟件進入記憶。只有Microblaze的代碼位於內部BRAM中,我才能達到此目的。如果我創建鏈接腳本,以便將代碼或數據部分放入外部DDR3 RAM中,則會失敗。

- 編輯 -

好了,我已經嘗試了幾個不同的東西,我有一個更好的理解什麼,我需要做的,但仍然沒有成功(其中,順便說一句,感謝您的回覆安迪)。所以,我嘗試了兩種不同的東西。對於他們兩人,我首先將系統比特流與bootloader程序合併,以生成一個運行良好的新.bit(download.bit)文件(當您在SDK中選擇程序並選擇引導加載程序加載BRAM時,它會調用data2mem生成新的download.bit文件)。

第一種方法 - bin文件

一旦我的主程序完成(與鏈接腳本針對DDR RAM和所有)我叫MB-objcopy命令從.elf一個生成Bin文件:

mb-objcopy -O binary program -R .vectors_reset -R .vectors.sw_exception -R vectors.interrupt -R .vectors.hw_exception dummy.elf dummy.b 

然後我使用iMPACT創建和MCS文件使用download.bit和dummy.b。我將download.bit放置在SPI Flash的起始地址處,並將dummy.b放在更低的位置(引導加載程序已指向該地址)。然後,我將MCS燒錄到串行SPI閃存中,重新啓動並啓動引導加載程序,據稱將所有內容複製到DDR RAM中,但主程序無法運行。我在這裏錯過了什麼嗎?如果我嘗試在不將主程序從.elf更改爲BIN的情況下使用iMPACT,則PC掛起(有時甚至必須完全重置計算機),並且我擁有速度非常快且配有內存的PC。

我使用的引導程序與Xilinx XAPP1146文檔中鏈接的引導程序相同。

第二種方法 - SREC文件

的步驟是幾乎相同的,只是我用同樣的MB-objcopy把命令生成一個SREC而不是BIN文件(這個時候我不刪除任何的這些部門,我需要爲BIN文件做,否則它會產生一個巨大的文件)。

我使用的引導程序是SDK軟件的引導程序。

任何人都可以讓我知道你是否成功地爲Microblaze創建了一個引導程序。

由於提前, 埃裏克

+0

這可能對electronics.se更好。您可以將其標記並請管理員遷移它。 – Andy 2011-04-13 19:05:37

+0

你能否更新你的問題,詳細說明你生成MCS文件的方式以及你得到的錯誤?你正在使用'-data_file'選項還是它的GUI相當於?溢出錯誤聽起來像閃光燈可能不夠大。以下是一些資源:[AR 36210](http://www.xilinx.com/support/answers/36210.htm),[AR 35345](http://www.xilinx.com/support/answers/35345) .htm),[將用戶數據編入內部閃存...](http://forums.xilinx.com/t5/Design-Tools-Others/Program-user-data-into-internal-flash-of-Spartan3an -xc3s200an/TD-p/118996) – Andy 2011-04-13 20:21:46

回答

0

我已經建立的引導程序,但是從你的兩點不同:

  • 被作爲流來自於他們沒有從同一個閃存設備拿方案。
  • 我使用自定義代碼來編程閃光燈而不是使用影響。

如果它給你的任何想法,這是我做的:

我有我從中讀出一個ELF文件,然後我分析在飛行並傳輸相關的代碼單獨SPI閃存設備/初始化部分進入DRAM。沒有理由說你的引導程序不能像配置那樣從相同的閃存設備加載。

它不是一個完全靈活的ELF分析器,因爲它假定這些部分的排列順序與部分標題表報告的順序相同,但這就是Microblaze工具生成文件的方式,所以它沒有問題。

(不要忘記編程它閃爍前剝離從該文件的調試信息!)

0

這是waaaay比這些更容易。

  1. 從SDK,創建一個引導程序(srec_bootloader)
  2. 計劃的FPGA瓦特/系統位文件和SREC引導程序。
  3. 從硬件平臺採取download.bit文件
  4. 運行以下命令

impact -batch make_bpi_up.impact

xmcsutil -accept_notice -18 pi outfile.hex -o bootloader.bin

(最後的命令上面創建一個可啓動映像瓦特/你的FPGA位文件和引導程序)

然後編程您的應用程序@由您的bootl指定的偏移量oader使用XSDK 接下來,使用XSDK 對bootloader @ 0x0編程 - 注意,當您從XSDK中選擇「Program Flash」時,您需要瀏覽到bootloader.bin並選擇*,而不是.bin; .elf; * .srec在瀏覽器窗口的文件類型過濾器中,以便您可以選擇bootloader.bin

如果您需要我澄清任何步驟,請告訴我。在下一週將其添加到我的博客w /截圖的過程中。

的make_bpi_up.impact文件包括以下

setMode -pff         
setSubmode -pffparallel       
setPreference -pref StartupClock:Auto_Correction 
addPromDevice -p 1 -size 32768 
addDesign -version 0 -startaddress 000000 
addDeviceChain -index 0 
addDevice -p 1 -file download.bit 
generate -format hex -fillvalue FF -output outfile 
quit 

MacGyverQue

0

右鍵單擊的MicroBlaze,點擊關聯ELF文件添加您的.elf文件,並配置模式.generate比特流。並將.bit轉換爲.mcs並下載文件。 .elf和.mcs文件都存儲在閃存中