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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

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

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

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

.text:存放指令代碼。

.rodata:存放只讀的變量。

.data:存放帶初始值的全局與靜態(tài)變量

.sdata::存放小的帶初始值的全局與靜態(tài)變量

.sdata2:存放小的帶初始值的全局與靜態(tài)變量

.bss:存放無初始值的全局與靜態(tài)變量

.sbss:存放小的無初始值的全局與靜態(tài)變量

.sbss2:存放小的帶初始值的全局與靜態(tài)變量

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

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

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

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

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

4.點擊XPS界面左邊的工程名,在右鍵彈出菜單里選擇GenerateLinkerScript,在彈出對話框中可以選擇段的存放空間,把只讀的段.text、.rodata、.sdata2、.sbss2選擇到FLASH_C_MEM0_BASEADDR,其它段選擇到ilmb_cntlr_dlmb_cntlr,然后重新編譯工程,產(chǎn)生可執(zhí)行的鏈接文件(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中的內(nèi)容存儲volatile.elf文件。

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

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

這可以把在FLASH中的內(nèi)容存儲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中的內(nèi)容與FPGA配置數(shù)據(jù)下載到FPGA。

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

溫馨提示

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

最新文檔

評論

0/150

提交評論