《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > 把手課堂:FPGA 101-如何配置您的Zynq SoC裸機(jī)解決方案

把手課堂:FPGA 101-如何配置您的Zynq SoC裸機(jī)解決方案

2013-07-01
作者:AdamTaylor首席工程師
關(guān)鍵詞: FPGA Zynq SOC

編者注:這是Adam Taylor規(guī)劃的Zynq-7000 All Programmable SoC實(shí)際操作教程系列的第二部分。Adam經(jīng)常為Xcell雜志撰稿,他撰寫了第82期介紹Zynq SoC設(shè)計(jì)的封面報(bào)道,以及本期中介紹XPEXPA的文章(見第46頁)。同時(shí)他還為All Programmable Planet撰寫博客。

Zynq™-7000 All Programmable SoC在單個(gè)器件上實(shí)現(xiàn)了ARM處理功能與FPGA邏輯獨(dú)特的組合,因此需要雙重的配置過程,同時(shí)需要考慮處理器系統(tǒng)和可編程邏輯。工程師會(huì)發(fā)現(xiàn),其配置順序與傳統(tǒng)的賽靈思FPGA稍有差別。盡管如此,方法仍是相似的,生成引導(dǎo)鏡像和完成配置存儲(chǔ)器編程的難度不大。

雖然標(biāo)準(zhǔn)的FPGA配置實(shí)踐一般只需要FPGA bit文件,但是如果您想最大限度地利用Zynq SoC的優(yōu)勢(shì),還需要添加另一種配置文件,即軟件可執(zhí)行與可鏈接格式(ELF)文件。FPGAbit文件用于定義設(shè)計(jì)中可編程邏輯部分的行為,而ELF文件則是處理系統(tǒng)將要執(zhí)行的軟件程序。

下面讓我們來看看如何在Zynq SoC上實(shí)現(xiàn)裸機(jī)(無操作系統(tǒng))軟件應(yīng)用。

配置概覽

Zynq SoC中,處理系統(tǒng)(PS)處于主控地位,因此負(fù)責(zé)配置器件的可編程邏輯(PL)側(cè)。(唯一例外的情況是在使用JTAG接口進(jìn)行配置時(shí)。)這就是說,如果需要,您可以在可編程邏輯側(cè)不加電的情況下給處理系統(tǒng)加電并使之運(yùn)行,從而降低系統(tǒng)的總功耗。當(dāng)然如果需要使用Zynq SoCPL側(cè),您也需要給它加電。

 

軟件應(yīng)用程序和FPGA bit文件都存儲(chǔ)在連接到處理系統(tǒng)的同一配置存儲(chǔ)器器件中。處理系統(tǒng)可以通過多種非易失性存儲(chǔ)器類型為配置提供支持,包括quad SPI flash、NANDflashNOR flashSD卡等。此外,您還可以和其它任何器件一樣,通過JTAG配置系統(tǒng)。

 

因此,Zynq SoC按照典型的處理器啟動(dòng)順序配置器件兩側(cè)。首先從不可修改的內(nèi)部的boot ROM運(yùn)行。該boot ROM包含用于支持非易失性存儲(chǔ)器的驅(qū)動(dòng)程序。您可通過非易失性存儲(chǔ)器中的報(bào)頭(header)對(duì)boot ROM加以配置。報(bào)頭標(biāo)記著配置鏡像的起始點(diǎn),是引導(dǎo)ROM首先要查找的。報(bào)頭定義了boot ROM可以實(shí)現(xiàn)的一些啟動(dòng)選項(xiàng),直接在flash上運(yùn)行程序(execute in place)(但是并不適用于所有類型的存儲(chǔ)器)、第一階段引導(dǎo)載入程序(FSBL)偏移和加密配置等。這個(gè)報(bào)頭解析和處理的目的,是確保引導(dǎo)ROM的工作模式與配置存儲(chǔ)器的格式相兼容。

對(duì)于具體設(shè)計(jì)而言,用戶可以選擇加密或非加密的配置方法。引導(dǎo)ROM報(bào)頭能夠支持和定義這兩種模式。在加密配置下,必須給器件的可編程邏輯部分加電,將其作為硬件宏AESSHA。您需要這兩個(gè)宏進(jìn)行加密,而且必須把它們放置在器件的可編程邏輯側(cè)。

在配置的下一階段,您需要提供FSBL,用于在加載軟件應(yīng)用和配置可編程邏輯之前,根據(jù)Xilinx Platform StudioXPS)的定義,配置處理器上的DDR存儲(chǔ)器和其它外設(shè)。總體而言,FSBL負(fù)責(zé)完成四項(xiàng)主要任務(wù):

l  使用XPS提供的信息,初始化處理系統(tǒng)

l  如果有提供bit文件,對(duì)Zynq SoC的可編程邏輯側(cè)進(jìn)行編程

l  在使用操作系統(tǒng)的情況下,加載第二階段引導(dǎo)載入程序(SSBL)到DDR,或加載裸機(jī)應(yīng)用到DDR

l  開始執(zhí)行SSBL或裸機(jī)應(yīng)用。

 

您可通過處理器配置訪問端口(PCAP)為Zynq SoC的可編程邏輯(PL)側(cè)進(jìn)行配置,能夠支持部分或者完全的可編程邏輯配置。這就意味著,只要處理系統(tǒng)啟動(dòng)并進(jìn)入運(yùn)行狀態(tài),就可以在任何時(shí)候?qū)?/span>FPGA進(jìn)行編程。此外,如果您在可能產(chǎn)生單事件功能中斷(SEFI的工作環(huán)境中使用器件時(shí),PCAP還可以讓您回讀并檢查錯(cuò)誤。

為了給Zynq SoC創(chuàng)建可引導(dǎo)鏡像,還需要至少下列功能:

1.       用于控制引導(dǎo)BOM設(shè)置的引導(dǎo)ROM報(bào)頭(例如,現(xiàn)場(chǎng)執(zhí)行、加密、四通道SPI配置、FSBL偏移和鏡像長度)

2.       第一階段引導(dǎo)載入程序(FSBL

3.       可編程邏輯bit文件

4.       用于處理系統(tǒng)側(cè)的軟件應(yīng)用(ELF文件)

和其它所有的賽靈思FPGA一樣,Zynq SoC器件使用多個(gè)模式引腳判斷存儲(chǔ)程序的存儲(chǔ)器類型以及其它重要的系統(tǒng)設(shè)置。這些模式引腳共享器件處理系統(tǒng)側(cè)的多用途I/O引腳(MIO)??傮w而言,映射到MIO的有7個(gè)模式引腳[8:2]。頭四個(gè)用于定義引導(dǎo)模式。第五個(gè)用于定義PLL是否在使用,第六個(gè)和第七個(gè)用于定義加電過程中MIO bank 0bank 1的分組電壓。第一階段引導(dǎo)載入程序(FSBL)可以把MIO bank 0bank 1定義的電壓標(biāo)準(zhǔn)更改為應(yīng)用的正確電壓標(biāo)準(zhǔn)。但是如果您是從頭開始設(shè)計(jì)系統(tǒng),應(yīng)確保加電過程中使用的電壓不會(huì)損壞連接到這些引腳的器件。

 

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。