Linux運(yùn)行fpga,測(cè)試運(yùn)行 - 將PetaLinux移植到FPGA上的原因和步驟詳解
掃描二維碼
隨時(shí)隨地手機(jī)看文章
測(cè)試運(yùn)行在設(shè)備上的PetaLinux
下面介紹PetaLinux的引導(dǎo)方式。MicroBlaze處理器可處理駐留在Block RAM中的代碼。第一階段的引導(dǎo)載入程序(fs-boot)將初始化基本硬件、執(zhí)行fs-boot.elf、搜索通用引導(dǎo)載入程序或U-Boot、在閃存分區(qū)中進(jìn)行尋址(因?yàn)閁-Boot的地址已在配置fs-boot時(shí)設(shè)定)。隨后,fs-boot將從閃存中的U-Boot分區(qū)中獲取U-Boot映像,將其發(fā)送到設(shè)備的DDR3存儲(chǔ)器并運(yùn)行內(nèi)核。一旦構(gòu)建好所有引導(dǎo)所需的映像后,您就可以通過(guò)JTAG、以太網(wǎng)或快速仿真器在硬件上測(cè)試這些映像了。QEMU是一種仿真器和虛擬機(jī),允許您運(yùn)行PetaLinux操作系統(tǒng)[9]。下面討論所有這三種解決方案的引導(dǎo)方法。
JTAG是編程和測(cè)試FPGA設(shè)計(jì)的傳統(tǒng)方法。為使用JTAG對(duì)FPGA進(jìn)行編程,我們使用了下拉菜單“Xilinx Tool → Program the FPGA”并下載了之前生成的download.bit文件。隨后我們使用GUI(PetaLinux SDK → BOOT JTAG [Li-nux])將映像下載到了電路板上,如圖2所示。您也可以在Linux終端上使用下列命令:
$ cd/opt/PetaLinux _v12.12/software/ PetaLinux-dist
$ PetaLinux-jtag-boot -i images/image.elf
此外,您還可使用U-Boot執(zhí)行間接內(nèi)核引導(dǎo),從而引導(dǎo)PetaLinux。系統(tǒng)首先使用GUI(PetaLinux SDK → BOOT JTAG [U-Boot])或以下命令通過(guò)JTAG接口下載U-Boot來(lái)進(jìn)行引導(dǎo)。
$ cd $PETALINUX/software/ PetaLinux-dist
$ PetaLinux-jtag-boot -i images/u -boot.elf
圖6是U-Boot控制臺(tái)的快照。
值得注意的是,F(xiàn)PGA電路板連接的是以太網(wǎng)接口。您必須在XPS的硬件資源部分選擇以太網(wǎng)接口。一旦U-Boot引導(dǎo)成功,就要檢查服務(wù)器和主機(jī)的IP地址是否相同。如果IP地址不同,請(qǐng)?jiān)赨-Boot終端上使用下列命令設(shè)置主機(jī)IP。
u-boot》print serverip // prints 192.168.25.45(server ip)
u-boot》print ipaddr // prints IP address
of the board as // 192.168.25.68
u-boot》set serverip // Host IP 192.168.25.68
u-boot》set serverip 192.168.25.68192.168.25.68
現(xiàn)在服務(wù)器(PC)和主機(jī)(KC705電路板)具有相同的IP地址。請(qǐng)通過(guò)服務(wù)器運(yùn)行網(wǎng)絡(luò)引導(dǎo)命令,下載PetaLinux映像和引導(dǎo)程序:
u-boot》 run netboot
運(yùn)行網(wǎng)絡(luò)引導(dǎo)命令后,您應(yīng)該能夠看到PetaLinux控制臺(tái),如圖5所示。
最后您可使用GUI(PetaLinux SDK → BOOT QEMU [Linux])或以下命令執(zhí)行內(nèi)核引導(dǎo),這也很重要。
$ cd $ PETALINUX/software/ PetaLinux-dist $ PetaLinux-qemu-boot -i images/image.elf
使用這種快速方法,我們將看到圖7所示信息。
測(cè)試運(yùn)行在設(shè)計(jì)上的應(yīng)用
完成PetaLinux引導(dǎo)的測(cè)試后,接下來(lái)就是測(cè)試專為PetaLinux設(shè)計(jì)的用戶應(yīng)用。MicroBlaze處理器將Kintex-7 FPGA電路板上的硬件外設(shè)視為一組存儲(chǔ)寄存器。每個(gè)寄存器都有自己的基址和結(jié)束地址。要訪問(wèn)一個(gè)外設(shè),用戶必須知道它的基
圖5:確認(rèn)操作系統(tǒng)引導(dǎo)成功的PetaLinux控制臺(tái)快照
圖6:通過(guò)通用引導(dǎo)載入程序(U-Boot)進(jìn)行的間接內(nèi)核引導(dǎo)
址和結(jié)束地址。您可以在設(shè)備樹源(*.dts)文件中找到有關(guān)地址的詳細(xì)信息。就本設(shè)計(jì)而言,我們開(kāi)發(fā)并測(cè)試了四款應(yīng)用,分別是訪問(wèn)DDR3、使用/dev/mem訪問(wèn)GPIO、使用UIO訪問(wèn)GPIO和文件傳輸。





