ZYNQ器件的啟動(dòng)配置方法解讀
無(wú)任是用CPU作為系統(tǒng)的主要器件,還是用FPGA作為系統(tǒng)的主要器件,系統(tǒng)設(shè)計(jì)中首先要考慮到的問(wèn)題就是處理器的啟動(dòng)加載問(wèn)題。XILINX推出的ZYNQ可擴(kuò)展處理平臺(tái),片內(nèi)包括兩個(gè)高性能的ARM Cortex A9硬核(稱為處理系統(tǒng)processing system (PS))和FPGA(稱為可編程邏輯programmable logic (PL)),在基于該平臺(tái)的系統(tǒng)設(shè)計(jì)時(shí)具有極大的靈活性,本文就ZYNQ系統(tǒng)設(shè)計(jì)時(shí)都會(huì)遇到啟動(dòng)加載問(wèn)題作一個(gè)拋磚引玉的描述,如有不當(dāng)之處還請(qǐng)高手斧正。^_^一、器件配置單元ZYNQ器件都帶有一個(gè)器件配置單元(device configuraTIon unit (DEVCFG) ),該模塊由PS控制,提供軟件控制下的PS和PL的初始化和配置功能。以前單個(gè)FPGA器件提供的下載方法已經(jīng)不在適用,PL的配置下載必須在PS的參與下進(jìn)行。Zynq-7000的器件配置單元包括下面的PS單元:①CPU②OCM(引導(dǎo)ROM和共享RAM)③ 部分頂層總線和外設(shè)④PS器件配置模塊在PL側(cè),下面的單元也將參與:①PLS器件配置邏輯和接口② 解密/鑒權(quán)硬件③存儲(chǔ)在eFUSE單元或者電池備份RAM(BBRAM)內(nèi)的解密密鑰下圖為PS器件配置子系統(tǒng)框圖:[[wysiwyg_imageupload:1338:]]提供的關(guān)鍵特性如下:A.提供3種不同的PS配置方法,包括2種主模式和1種從模式。① 加密主模式② 非加密主模式③ 非加密從模式B.3種不同的主模式啟動(dòng)源①NOR FLASH②NAND FLASH③QSPI FLASHC:JTAG非加密從模式D:用AES-256和HMAC (SHA-256)進(jìn)行PS/PL的加密下載E:高速配置用的主DMA接口F:100 MHz 32-bit PCAP流接口H:SoC加密調(diào)試功能在系統(tǒng)上電復(fù)位時(shí),PS采樣專用bootstrapping signals引腳電平來(lái)決定從什么方式引導(dǎo)器件。這個(gè)引導(dǎo)過(guò)程是由一個(gè)Cortex A9核執(zhí)行片內(nèi)的ROM code實(shí)現(xiàn)的,ROM code的功能是初始化L1 cache和基本的總線系統(tǒng),加載相應(yīng)的NAND, NOR, Quad-SPI, and PCAP驅(qū)動(dòng),從指定接口加載第一級(jí)BOOTLOADER(the first stage boot loader (FSBL))到片內(nèi)執(zhí)行。由于OCM RAM大小有限制,第一級(jí)BOOTLOADER大小最大為256KB。用戶只需要按要求提供啟動(dòng)映像和設(shè)置正確的bootstrapping signals引腳電平,系統(tǒng)上電復(fù)位時(shí)由ROM code自動(dòng)加載到片內(nèi)并且程序調(diào)轉(zhuǎn)到啟動(dòng)映像,此時(shí)系統(tǒng)的全部控制功能交由用戶的啟動(dòng)映像控制,用戶如要實(shí)現(xiàn)的第二級(jí)BOOTLOADER功能由啟動(dòng)映像的程序?qū)崿F(xiàn)。對(duì)于加密配置方法,需要用到AES-256解密代碼和SHA-256簽定(簽名)算法, PS需要用PL內(nèi)硬連線的AES-256 和SHA-256模塊,這時(shí)就要求在加密配置情況下PL就必須上著電,既使系統(tǒng)并不配置PL部分也需上電。器件的加密密鑰可以由用戶選擇是存儲(chǔ)在片內(nèi)的eFUSE單元(具有掉電非易失性)或者內(nèi)部電池供電的BBRAM內(nèi)(具有掉電易失性,適用于安全級(jí)別要求更高的場(chǎng)合), 下表總結(jié)了配置模式和相關(guān)信息:[[wysiwyg_imageupload:1339:]]二、PS非加密主模式配置過(guò)程這種模式下PS啟動(dòng)映像是直接從外部非易失存儲(chǔ)器(NAND, NOR, Quad-SPI)內(nèi)加載到片內(nèi)OCM內(nèi),隨后PL映像可以直接配置到PL內(nèi),整個(gè)過(guò)程如下圖示:[[wysiwyg_imageupload:1340:]]PL映像的配置可由配置接口模塊用DMA來(lái)高速實(shí)現(xiàn),在非加密情況下速度可以達(dá)到400MB/s, 加密情況下速度可以達(dá)到100MB/s, 這在FPGA需要部分重配置時(shí)十分有用。三、PS加密主模式配置過(guò)程PS加密主模式用到了位與片內(nèi)PL部分的硬件AES-256解密模塊和SHA-256模塊來(lái)對(duì)PS啟動(dòng)映像進(jìn)行解密和完整性鑒定,器件密鑰存儲(chǔ)在片內(nèi)的eFUSE單元或者內(nèi)部BBRAM內(nèi),當(dāng)PS加載成功后,用戶可以選擇用下面缺省的PL引導(dǎo)過(guò)程來(lái)配置PL部分,如下圖示:[[wysiwyg_imageupload:1341:]]其中配置PL時(shí)的比特流既可以是已經(jīng)經(jīng)過(guò)AES-256加密的比特流,也可以是先經(jīng)過(guò)PS先進(jìn)行解密后成為明文比特流送到PL內(nèi),這個(gè)過(guò)程的保密性由用戶選擇使用。在保密ROM引導(dǎo)階段如果PS完整性鑒定失敗,CPU就立即斷言PROG_B信號(hào)而清除PL內(nèi)容,同時(shí)發(fā)出一個(gè)加密復(fù)位信號(hào),這使PS內(nèi)部的RAM和寄存器進(jìn)行復(fù)位,然后CPU進(jìn)入睡眠模式,系統(tǒng)只有重復(fù)上電才能復(fù)位。PL配置發(fā)生在BOOT的第二階段,這個(gè)過(guò)程完成可以由用戶選擇自己的方法在任何時(shí)間內(nèi)來(lái)配置一次或多次,并不需要一定按缺省的PL引導(dǎo)過(guò)程來(lái)配置PL部分。四、啟動(dòng)模式引腳ZYNQ器件有5個(gè)啟動(dòng)模式信號(hào)mode[4:0],用來(lái)指出從哪里啟動(dòng),是否是JTAG模式,PLL是否旁路等。另外有兩個(gè)電壓模式信號(hào)vmode[1:0]用來(lái)指明MIO BANK的電壓模式,vmode[1:0] 信號(hào)和mode[4:0] 信號(hào)通過(guò)上拉和下拉來(lái)確定電平值,上拉和下拉電阻建議為20k歐姆,上拉是連接到VCCO_MIO0電壓,下拉是連接到地。系統(tǒng)在釋放PS_POR_B復(fù)位腳后這些啟動(dòng)模式引腳信號(hào)會(huì)被采樣3個(gè)PS_CLK時(shí)鐘用來(lái)確定啟動(dòng)方式。vmode[1:0] 信號(hào)和mode[4:0] 信號(hào)對(duì)應(yīng)的I/O管腳為MIO[8:2],各信號(hào)具體含義如下:①M(fèi)ode[0] 用來(lái)指明是否是JTAG 模正。②Mode[3:1]用來(lái)選擇啟動(dòng)源,是從NOR Flash還是從NAND Flash還是從QSPI啟動(dòng)。③Mode[4]用來(lái)使能PLL。④Vmode[1:0] 用來(lái)配置I/O BANK電壓。這些信號(hào)和MIO管腳的對(duì)應(yīng)關(guān)系如下表表示:[[wysiwyg_imageupload:1342:]]注:上表中X表示不關(guān)心。實(shí)際設(shè)計(jì)中,由于MIO管腳數(shù)量有限(只有54個(gè)),且只分為兩個(gè)BANK(MIO Bank 0對(duì)應(yīng)管腳為PS_MIO[15:0],PS_CLK,PS_POR_B;MIO Bank 1對(duì)應(yīng)管腳為PS_MIO[53:16],PS_VREF_MIO和PS_SRST_B),并不建議系統(tǒng)設(shè)計(jì)為從并行的NOR Flash啟動(dòng),因?yàn)檫@種方式NOR Flash占用的MIO管腳數(shù)量大多(大于40個(gè)管腳),系統(tǒng)設(shè)計(jì)為從NAND Flash或QSPI啟動(dòng)都可以,這兩種方式占用的MIO管腳數(shù)量要少些,NAND Flash的優(yōu)點(diǎn)是容量比較大,缺點(diǎn)是讀寫(xiě)速度要慢些(典型速度10MB/s), QSPI也是一種NOR Flash,不過(guò)接口是四線串行接口,可以獲得比較高的讀寫(xiě)速度(典型速度50MB/s),如果系統(tǒng)希望從其它方式如USB, Ethernet, SD/SDIO等方式啟動(dòng),這都需要用戶在第一級(jí)啟動(dòng)映像內(nèi)自行設(shè)計(jì)啟動(dòng)引導(dǎo)代碼。以上拋磚引玉,歡迎大家補(bǔ)充說(shuō)明,主要參考文獻(xiàn)為Zynq-7000 Extensible Processing Platform Technical Reference Manual,大家可到XILINX官方網(wǎng)站上下載來(lái)仔細(xì)研究。
本文引用地址:http://butianyuan.cn/article/201808/385307.htm
評(píng)論