II在Microblaze上的移植與使用專題(續3)_第1頁
II在Microblaze上的移植與使用專題(續3)_第2頁
II在Microblaze上的移植與使用專題(續3)_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

II在Microblaze上的移植與使用專題(續3)六、擴展NORFLASH賽靈思的Spartan-3EStarterKit開發板板上載有Intel的16MByte(128Mbit)并行NORFlash,FLASH的型號為28F128J3,詳細地DATASHEET網上可以找到來參考。在EDK的硬件上我們使用XILINX的XPSMulti-CHannelExternalMemoryController(XPSMCHEMC)接口IP來連接FLASH。如果我們用BSB建立工程的話,選擇了Spartan-3EStarterKit開發板后在下面的步驟里直接鉤選FLASH就可以了,這樣比較方便。如果是在已有工程的IPCatalog里添加IP,還必須指定引腳的連接情況和PAD位置,具體的PAD位置參考賽靈思的文檔UG230:Spartan-3EFPGAStarterKitBoardUserGuide的第11章。在XPS界面左邊的Project欄下面的Projectfile的UCF文件內指定管腳,稍為麻煩一下,推薦由第一種方法直接通過BSB建立工程。具體IP核的使用請參考賽靈思文檔:XPSMulti-CHannelExternalMemoryControllerProductSpecification.pdf。

賽靈思的Spartan-3EStarterKit開發板上的XC3S500EFPGA支持BPI(BytePeripheralInterface)配置模式。要實現BPI方式配置,首先要對Spartan-3EStarterKit開發板J30進行跳線,具體可以參考賽靈思文檔UG230:Spartan-3EFPGAStarterKitBoardUserGuide第89頁的表11-4。選用BPIUP(BPIDOWN)模式,FPGA配置數據應該放在FLASH的低(高)地址空間,這里注意下28F128J3FLASH有×8(數據總線寬度為8位,這時數據總線高8位沒有用,數據放在總線低8位)和×16(數據總線寬度為16位)兩種工作模式。配置時應工作在×8模式,配置完成后,我們把它設置為×16模式,這是通過FLASH的BYTE#引腳選擇,BYTE#引腳為低電平時為選擇×8工作模式,為高電平時為選擇×16工作模式。BYTE#引腳是連接到FPGA的LDC2(C17)腳位。配置比特流文件首先通過iMPCT工具轉換成MCS文件,具體步驟為:選擇PrepareaPROMFile后按NEXT,選擇GenericParallelPROM和MCS文件格式,指定生成文件的名字和保存位置按NEXT,在按NEXT后進入選擇PROM器件界面,選擇PROM大小為16M和CreateBPI-ModePROM后按NEXT選擇要轉換的BIT文件就可以了。然后我們可以通過賽靈思的PicoBlazeNORFlashProgrammer()下載到FLASH中,當然我們也可以自己用MicroBlaze處理器編寫一個燒寫FLASH的工程來下載MCS文件到FLASH,但都不如直接使用來的方便,有興趣的朋友也可以研究或修改PicoBlazeNORFlashProgrammer工程,里面有PicoBlaze的匯編源程序。

介紹下MicroBlaze工程編譯后的目標代碼段的組成:

.text:存放指令代碼。

.rodata:存放只讀的變量。

.data:存放帶初始值的全局與靜態變量

.sdata::存放小的帶初始值的全局與靜態變量

.sdata2:存放小的帶初始值的全局與靜態變量

.bss:存放無初始值的全局與靜態變量

.sbss:存放小的無初始值的全局與靜態變量

.sbss2:存放小的帶初始值的全局與靜態變量

我們準備在NORFLASH上面直接執行程序,所以要把只讀的段(包括.text、.rodata、.sdata2、.sbss2)定義到FLASH地址空間,把其它的段都定義到FPGA片內的BRAM。

下面以一個實際例子來介紹具體步驟:

1.首先按上節的步驟建立一個XPS工程和應用程序,在BSP階段的外設選擇時把FLASH加上,這時系統自動添加了XPSMCHEMC接口IP。

2.我們先把所有段還是放在BRAM內,編譯下載后可以看到LED在跑流水燈。

3.配置XPSMCHEMC接口IP用PLB連接到MicroBlaze處理器,無MCH通道,其它為默認。

4.點擊XPS界面左邊的工程名,在右鍵彈出菜單里選擇GenerateLinkerScript,在彈出對話框中可以選擇段的存放空間,把只讀的段.text、.rodata、.sdata2、.sbss2選擇到FLASH_C_MEM0_BASEADDR,其它段選擇到ilmb_cntlr_dlmb_cntlr,然后重新編譯工程,產生可執行的鏈接文件(ELF文件)。

5.把第4步生成的executable.elf拷到工程目錄,然后在XPS界面選擇Project→LaunchEDKShell,在命令行輸入下面命令:

mb-objcopy\

--set-section-flags.text=alloc,readonly,code\

--set-section-flags.init=alloc,readonly,code\

--set-section-flags.fini=alloc,readonly,code\

--set-section-flags.text=alloc,readonly,code\

--set-section-flags.rodata=alloc\

--set-section-flags.sdata=contents\

--set-section-flags.sbbs=contentsexecutable.elfvolatile.elf

這可以把在BRAM中的內容存儲volatile.elf文件。

再在命令行輸入下面命令:

mb-objcopy–Obinary-j.text–j.fini–j.init–jrodata–jsdata2–j.sbss2executable.elfflash.bin

這可以把在FLASH中的內容存儲flash.bin文件。

6.把flash.bin文件燒到FLASH中,這可以通過上面的PicoBlazeNORFlashProgrammer工程用串口下載,也可以用XPS界面選擇DeviceConfiguration→ProgramFlashMemory下載,注意不用XPS生成BootLoad。

7.把第五步生成的volatile.elf改名為executable.elf覆蓋第4步生成的executable.elf文件。

然后用XPS界面選擇DeviceConfiguration→UpdataBitstream和DeviceConfiguration→DownloadBitstream把BRAM中的內容與FPGA配置數據下載到FPGA。

現在又可以看到LED在跑流水燈了,但明顯可以看到速度要慢多了,說明程序是在NORFLASH上執行的。如果速度要求不高的話,擴展一塊NORFLASH來存儲代碼與數據已經足夠了,否則我們需要再擴展一塊RAM,把代碼與數據存儲在RAM上速度比較快,同時需要一個BOOTL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論