0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ZYNQ的啟動(dòng)原理和配置

e9Zb_gh_8734352 ? 來源:fqj ? 2019-05-15 11:41 ? 次閱讀

啟動(dòng)過程

設(shè)備配置包含用于初始化和配置ps和pl的所有方法及過程。在軟件控制下,ps內(nèi)的DevC提供用于初始化和配置ps和pl的手段和方法,在zynq中提供兩個(gè)模塊用于控制配置過程:

BootROM,一個(gè)靜態(tài)存儲(chǔ)塊器塊,當(dāng)上電復(fù)位和暖復(fù)位后,有Cortex-A9的CPU執(zhí)行這個(gè)內(nèi)置程序;

設(shè)備配置單元:用于控制JTAG調(diào)試訪問和提供連接到AES、HMAC和PCAP模塊的接口,用于實(shí)現(xiàn)對(duì)芯片內(nèi)的pl的配置及數(shù)據(jù)的解密。

在ps的控制下,可以實(shí)現(xiàn)安全或非安全的配置所有ps和pl。通過zynq提供的JTAG接口,用戶可以在外部主機(jī)的控制下對(duì)zynq進(jìn)行配置,zynq不支持最開始就配置pl的過程。對(duì)zynq的配置過程至少包含兩個(gè)階段,但是通常要求3個(gè)階段。

階段0:該階段也稱為BootROM,該階段控制初始設(shè)備的啟動(dòng)。BootROM是上電復(fù)位或暖復(fù)位后,處理器所執(zhí)行的用戶不可修改的代碼,該代碼已經(jīng)固化到zynq的BootROM中;

階段1:在該階段,通常執(zhí)行第一級(jí)啟動(dòng)引導(dǎo)程序。但是,它也可以是任何用戶控制的代碼;

在該階段,通常執(zhí)行用戶自己編寫的軟件程序,但是,也可以是第二級(jí)的啟動(dòng)引導(dǎo)程序,該階段完全是在用戶的控制下實(shí)現(xiàn)的。

zynq的BootROM

BootROM特性:

提供3種不同的方法,用于配置PS:兩個(gè)主模式和一個(gè)從模式,即安全、加密的鏡像、主模式;非安全的主模式;通過JTAG的非安全從模式;

支持4種不同的外部啟動(dòng)源:Quad-SPI Flash、NAND Flash、NOR Flash、SD;

支持使用AES-256和HMAC(SHA-256)的PS安全配置;

支持Soc調(diào)試安全性;

從NOR和QSPI芯片內(nèi)執(zhí)行配置過程。

當(dāng)上電復(fù)位后,啟動(dòng)PS配置過程,當(dāng)禁止JTAG模式時(shí),zynq內(nèi)的Cortex-A9處理器從片內(nèi)的BootROM開始執(zhí)行代碼,BootROM包含用于驅(qū)動(dòng)NADN、NOR、Quad-SPI、SD和PCAP的基本程序代碼

在BootROM中并不執(zhí)行對(duì)外設(shè)的初始化操作,在階段1或該階段之后zynq才對(duì)其他外設(shè)進(jìn)行初始化操作,考慮到安全因素,當(dāng)脫離復(fù)位狀態(tài)后,Cortex-A9處理器總是PS內(nèi)所有其他主設(shè)備模塊內(nèi)的第一個(gè)設(shè)備,當(dāng)正在執(zhí)行BootROM時(shí),禁止執(zhí)行JTAG,以保證安全性操作。

BootROM代碼也負(fù)責(zé)加載第一啟動(dòng)鏡像文件,zynq內(nèi)的硬件支持加載多級(jí)用戶啟動(dòng)鏡像,在第一級(jí)啟動(dòng)之后,用戶負(fù)責(zé)進(jìn)一步實(shí)現(xiàn)用戶啟動(dòng)鏡像的加載,當(dāng)BootROM將控制權(quán)移交給fsbl后,用戶負(fù)責(zé)進(jìn)一步實(shí)現(xiàn)用戶啟動(dòng)鏡像的加載,當(dāng)復(fù)位操作時(shí),才會(huì)重新執(zhí)行BootROM內(nèi)的代碼。

BootROM支持加密和不加密的鏡像,此外,當(dāng)使用芯片內(nèi)執(zhí)行特性時(shí),當(dāng)從線性flash、NOR或QSP直接復(fù)制鏡像或執(zhí)行后,BootROM支持從OCM開始執(zhí)行階段1鏡像。

在安全啟動(dòng)CPU時(shí),從安全BootROM運(yùn)行代碼,并且,對(duì)進(jìn)入的用戶PS鏡像鏡像解碼和認(rèn)證,將其保存到OCM RAM中,然后,分支進(jìn)入它,在非安全啟動(dòng)CPU時(shí),從BootROM運(yùn)行代碼,如果使用了XIP特性時(shí),在分支跳轉(zhuǎn)到OCM ROM或Flash內(nèi)的用戶鏡像時(shí),禁止所有的安全啟動(dòng)特性,除非使用帶有XIP的啟動(dòng),一般將PS啟動(dòng)鏡像限制到192KB范圍內(nèi)。

隨后用于PS/PL啟動(dòng)階段的過程,都是用戶的責(zé)任,并且處于用戶的控制下。在zynq中,不允許用戶訪問BootROM中的代碼,在完成階段1安全啟動(dòng)的過程后,用戶可以繼續(xù)執(zhí)行后續(xù)的安全/非安全啟動(dòng)階段,如果一開始執(zhí)行的就是非安全的第一個(gè)階段,隨后只能執(zhí)行非安全階段的啟動(dòng)。

通過PL內(nèi)硬接線的AES-256和SHA-256模塊,PS實(shí)現(xiàn)解密和認(rèn)證,由于這個(gè)原因,在安全啟動(dòng)任何階段,即使只對(duì)PS進(jìn)行配置,也必須給PL上電,這樣,用戶就可以通過片上的eFUSE單元或片上BRAM,選擇器件的密鑰。

在zynq內(nèi)支持5種可用的啟動(dòng)設(shè)備,包括NAND、NOR、SD、Quad-SPI和JTAG,其中前4種啟動(dòng)源用于主模式啟動(dòng)。

在主模式啟動(dòng)過程中,Cortex-A9處理器負(fù)責(zé)將鏡像文件從外部非易失性存儲(chǔ)器加載到片內(nèi)的PS中。

JTAG只能用于從模式啟動(dòng)過程,JTAG只支持非安全啟動(dòng),一個(gè)外部的電腦作為一個(gè)主設(shè)備,通過JTAG連接,將啟動(dòng)鏡像加載到OCM,當(dāng)加載啟動(dòng)鏡像時(shí),PS CPU保持空閑模式。

BootROM的高層次配置流程如圖所示。

ZYNQ的啟動(dòng)原理和配置

zynq的器件配置接口

設(shè)備配置接口結(jié)構(gòu)DevC模塊由3個(gè)獨(dú)立操作的主模塊構(gòu)成:

用于連接PL配置邏輯的AXI-PACP接口;

設(shè)備安全性管理單元;

一個(gè)XDAC接口;

設(shè)備配置接口包含一個(gè)APB接口,主機(jī)使用APB接口配置這3個(gè)模塊,并且訪問整個(gè)狀態(tài)以及實(shí)現(xiàn)與PL XADC通信。

AXI-PCAP橋:

AXI-PCAP橋?qū)?2位AXI格式的數(shù)據(jù)轉(zhuǎn)換成32位的PCAP協(xié)議,反之亦然,這個(gè)橋支持配置數(shù)據(jù),以并發(fā)和非并發(fā)的方式下載和上傳,如圖所示。

ZYNQ的啟動(dòng)原理和配置

在AXI和PCAP接口之間存在一個(gè)發(fā)送和接收FIFO緩沖區(qū),圖中的DMA引擎用于在FIFO和存儲(chǔ)器設(shè)備(OCM、DDR存儲(chǔ)器,或者外設(shè)存儲(chǔ)器的一個(gè))之間移動(dòng)數(shù)據(jù)。

當(dāng)通過PCAP接口移動(dòng)數(shù)據(jù)時(shí),必須給zynq的PL一端供電,通過DevC控制器寄存器的PCAP MODE和PCAP PR比特位,使能PCAP接口,如果發(fā)送加密數(shù)據(jù),還應(yīng)該設(shè)置QUARTER PCAP RATE EN比特位。

通過DevC模塊內(nèi)建的DMA引擎,在PCAP接口之間傳輸數(shù)據(jù)。為了啟動(dòng)一個(gè)數(shù)據(jù)傳輸過程,必須按照下面的順序?qū)?個(gè)DMA寄存器:DMA源地址寄存器;DMA目的地址寄存器;DMA源長(zhǎng)度寄存器;DMA目的長(zhǎng)度寄存器。

為了通過PCAP將數(shù)據(jù)傳輸?shù)絇L,目的地址應(yīng)該設(shè)置為0xffffffff。類似的,通過PCAP接口從PL讀數(shù)據(jù),源地址應(yīng)該設(shè)置為0xffffffff,必須通過PCAP接口發(fā)送加密的PS鏡像,這是由于AES和HMAC引擎都駐留在PL一端。在該情況下,DMA源地址應(yīng)該設(shè)置為一個(gè)外部的存儲(chǔ)器接口,而目標(biāo)地址應(yīng)該設(shè)置為OCM。

DevC的DMA引擎能用于加載不安全的PS鏡像,在加載以前,在雜項(xiàng)控制寄存器內(nèi)設(shè)置PCAP LPBK比特位,這個(gè)比特位使能內(nèi)部的環(huán)路,旁路掉PCAP接口,在使用PCAP前,需要再次禁止該比特位,DMA源地址應(yīng)該設(shè)置為一個(gè)外部存儲(chǔ)器,而目的地址應(yīng)該設(shè)置為一個(gè)OCM或一個(gè)有效的外部存儲(chǔ)器接口,如DDR。

PCAP接口也用來回讀PL配置。為了執(zhí)行回讀操作,PS必須運(yùn)行軟件代碼,使能產(chǎn)生正確的PL回讀指令,使用兩個(gè)DMA訪問周期,回讀一個(gè)PL配置。

設(shè)備安全性管理:

DevC包含著一個(gè)安全策略模塊,提供如下功能:

監(jiān)控系統(tǒng)安全性,當(dāng)檢測(cè)到?jīng)_突的狀態(tài)時(shí),能確認(rèn)一個(gè)安全復(fù)位,這個(gè)狀態(tài)能表示不一致的系統(tǒng)配置或篡改;

通過APB接口控制和監(jiān)視PL配置邏輯;

控制ARM CoreSight的調(diào)試器訪問端口DAP和調(diào)試級(jí);

提供片上ROM控制。

XADC接口:

讀和寫XADC寄存器;

15個(gè)深度的寫命令FIFO和15個(gè)深度的讀FIFO(32位寬度);

編程的FIFO級(jí)中斷;

報(bào)警中斷;

過溫度中斷;

PS主設(shè)備非安全啟動(dòng)

在這個(gè)啟動(dòng)模式下,PS作為主設(shè)備。BootROM從選擇的外部存儲(chǔ)器加載一個(gè)純文本PS鏡像,如圖3.2所示,在這種情況下,并不要求PL上電,可以使用PS鏡像立即加載或以后加載PL比特流。

ZYNQ的啟動(dòng)原理和配置

配置流程主要步驟如下:

設(shè)備上電復(fù)位;

BootROM執(zhí)行:1,讀自舉程序,以確定外部存儲(chǔ)器接口類型;2,讀啟動(dòng)頭部信息,以確定加密的狀態(tài)和鏡像目標(biāo);

BootROM使用DevC的DMA,將FSBL加載到OCM或其他有效的目的地址;

通過PCAP,F(xiàn)SBL加載PL比特流。

PS主設(shè)備安全啟動(dòng)

在該啟動(dòng)模式下,PS作為主設(shè)備,BootROM從所選擇的外部存儲(chǔ)器加載一個(gè)加密的PS鏡像,如圖3.3所示,由于AES和HMAC引擎駐留在PL中,因此要求PL上電來初始化啟動(dòng)序列,在嘗試解密FSBL前,BootROM驗(yàn)證PL已經(jīng)上電,當(dāng)啟動(dòng)PS后,可以使用一個(gè)加密的比特流配置,或者斷電以后再配置PL。

ZYNQ的啟動(dòng)原理和配置

下面給出了配置流程的詳細(xì)步驟:

設(shè)備上電復(fù)位;

BootROM執(zhí)行:1,讀自舉程序,以確定外部存儲(chǔ)器接口;2,讀啟動(dòng)頭部,以確定加密的狀態(tài)(安全);3,確認(rèn)PL上電,開始解密FSBL;

BootROM使用DevC DMA引擎,通過PCAP,將加密的FSBL發(fā)送的PL內(nèi)的AES和HMAC;

PL使用PCAP將解密的FSBL返回到PS,然后,在此將其加載到片內(nèi)OCM;

關(guān)閉BootROM,釋放CPU用于控制FSBL;

FSBL使用一個(gè)加密流配置PL。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    604

    瀏覽量

    47012

原文標(biāo)題:ZYNQ的啟動(dòng)原理和配置

文章出處:【微信號(hào):gh_873435264fd4,微信公眾號(hào):FPGA技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    詳解Zynq的兩種啟動(dòng)模式

    Zynq-7000AP SOC器件有效利用了片上CPU來幫忙配置,在沒有外部JTAG的情況下,處理系統(tǒng)(PS)與可編程邏輯(PL)都必須依靠PS來完成芯片的初始化配置ZYNQ的兩種
    發(fā)表于 08-02 09:33 ?1242次閱讀
    詳解<b class='flag-5'>Zynq</b>的兩種<b class='flag-5'>啟動(dòng)</b>模式

    玩轉(zhuǎn)Zynq連載1——Zynq的linux啟動(dòng)過程

    `玩轉(zhuǎn)Zynq連載1——Zynq的linux啟動(dòng)過程更多資料共享 鏈接:https://share.weiyun.com/5s6bA0s1概述 簡(jiǎn)單的,以u(píng)g585中的一張圖來看,從大的方面說
    發(fā)表于 04-16 06:56

    使用Vitis 在EBAZ4205(ZYNQ)礦機(jī)上實(shí)現(xiàn)"Hello World!"

    的 Done 引腳未拉高。這個(gè)問題在 Vivado 2017.4 中并未出現(xiàn),還需確認(rèn)下是否是由于ZYNQ啟動(dòng)配置導(dǎo)致該問題。目前的解決方法,可以先通過 Vivado 把 bit 文件先下載給FPGA
    發(fā)表于 03-06 22:59

    Zynq在非JTAG模式下的啟動(dòng)配置流程

    是怎樣實(shí)現(xiàn)對(duì)自己的配置?  這也是本文將要和大家共同討論的問題。  Zynq啟動(dòng)流程  在無 JTAG 的模式下,Zynq 是通過片上CPU完成對(duì)芯片的
    發(fā)表于 01-08 16:33

    Zynq在非JTAG模式下的啟動(dòng)配置流程

    本文主要與大家分享了Zynq在非JTAG模式下的啟動(dòng)配置流程,旨在讓大家對(duì)Zynq的三階段啟動(dòng)模式有一個(gè)具體的認(rèn)識(shí),希望大家多多交流。
    發(fā)表于 03-17 07:36

    ZYNQ 7系列FSBL的啟動(dòng)過程與配置方法

    ZYNQ 7系列所有可編程器件均可以在安全模式下通過靜態(tài)存儲(chǔ)器配置或者在非安全模式下通過JTAG或者靜態(tài)存儲(chǔ)器配置。 (1)JTAG模式主要用于開發(fā)和調(diào)試 (2)NAND、并行NOR、串行NOR
    發(fā)表于 11-17 10:25 ?2.4w次閱讀
    <b class='flag-5'>ZYNQ</b> 7系列FSBL的<b class='flag-5'>啟動(dòng)</b>過程與<b class='flag-5'>配置</b>方法

    Xilinx FSBL如何操作啟動(dòng)Zynq器件

    了解Xilinx FSBL如何操作以啟動(dòng)Zynq器件。 包括程序執(zhí)行概述,調(diào)試技巧以及有關(guān)特定引導(dǎo)設(shè)備的信息。 還包括FSBL角度的啟動(dòng)安全性簡(jiǎn)要概述。
    的頭像 發(fā)表于 11-23 06:32 ?4461次閱讀

    詳解zynq啟動(dòng)步驟

    本文主要介紹zynq啟動(dòng)過程,主要包括BootROM和FSBL等的執(zhí)行過程。
    發(fā)表于 10-27 10:47 ?7318次閱讀
    詳解<b class='flag-5'>zynq</b>的<b class='flag-5'>啟動(dòng)</b>步驟

    ZYNQ開發(fā)雙核運(yùn)行原理及過程

    ZYNQ是一個(gè)可擴(kuò)展平臺(tái),就是有FPGA作為外設(shè)的A9雙核處理器,它的啟動(dòng)流程與FPGA完全不同,而與傳統(tǒng)的ARM處理器類似,ZYNQ啟動(dòng)配置
    的頭像 發(fā)表于 12-05 10:48 ?5719次閱讀

    Zynq啟動(dòng)配置過程詳解

    初學(xué) Zynq 的時(shí)候,都是按照慣例打開 Vivado 軟件,然后實(shí)現(xiàn) Zynq 可編程邏輯硬件部分PL的設(shè)置后,把硬件部署導(dǎo)出,再打開 SDK 進(jìn)行 ARM 核的軟件部分 PS 編程設(shè)計(jì),最后再將
    發(fā)表于 01-26 07:30 ?20次下載
    <b class='flag-5'>Zynq</b>的<b class='flag-5'>啟動(dòng)</b>與<b class='flag-5'>配置</b>過程詳解

    ZYNQ啟動(dòng)流程

    ZYNQ7000 SOC 芯片可以從 FLASH 啟動(dòng),也可以從 SD 卡里啟動(dòng), 本節(jié)介紹程序 FLASH 啟動(dòng)的方法。Zynq7000
    的頭像 發(fā)表于 05-07 09:41 ?5979次閱讀

    ZYNQ啟動(dòng)流程介紹

    普通的 FPGA 一般是可以從 flash 啟動(dòng),或者被動(dòng)加載,但是ZYNQ不行,ZYNQ必須PS端參與
    的頭像 發(fā)表于 07-22 10:10 ?6748次閱讀

    Zynq在非JTAG模式下的啟動(dòng)配置流程

    在無 JTAG 的模式下,Zynq 是通過片上CPU完成對(duì)芯片的配置,也就是PS和PL的配置是通過 PS 處理器 ARM 核來實(shí)現(xiàn)的。需要注意的是,與傳統(tǒng)的 Xilinx 7 系列 FPGA 芯片不同,
    的頭像 發(fā)表于 10-19 09:11 ?1175次閱讀

    使用JTAG仿真器查看ZYNQ當(dāng)前啟動(dòng)模式

    本文介紹使用Xilinx?SDK軟件查看當(dāng)前Zynq?SoC啟動(dòng)模式的步驟
    的頭像 發(fā)表于 07-07 14:15 ?1675次閱讀
    使用JTAG仿真器查看<b class='flag-5'>ZYNQ</b>當(dāng)前<b class='flag-5'>啟動(dòng)</b>模式

    Zynq-7000 SoC的安全啟動(dòng)應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《Zynq-7000 SoC的安全啟動(dòng)應(yīng)用說明.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 11:46 ?1次下載
    <b class='flag-5'>Zynq</b>-7000 SoC的安全<b class='flag-5'>啟動(dòng)</b>應(yīng)用說明