日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

ZYNQ-BOOT介紹與程序固化

學習內(nèi)容

本文把程序存儲在非易失性存儲器中, 在上電或者復位時讓程序自動運行,這個過程需要啟動引導程序( Boot Loader) 的參與。Boot Loader 會加載 FPGA 配置文件, 以及運行在 ARM 中的軟件應用。

開發(fā)環(huán)境

vivado 18.3&SDK PYNQ-Z2開發(fā)板

Boot和配置簡介

在 ZYNQ的啟動和配置時, 既需要 PS 的配置信息,又需要 PL 的配置信息。ZYNQ無法純FPGA像xilinx那樣只進行FPGA端口的配置。在 ZYNQ 中, 我們可以理解為PS作為主器件, PL 端口可以看作是 PS 的一個外設(shè),因此需要由 PS 來配置 PL。這個配置順序的優(yōu)勢是它允許對 PS 單獨上電的時候, 此時 PL 不上電,以減小功耗。在配置文件內(nèi)FPGA BIT 文件用來定義 PL 的配置信息和操作;而  ELF 文件用于配置運行在 PS 中的程序。

啟動流程圖

在進行配置時的主要流程,如下圖所示。

上圖中的Mode_Pins是boot模式的設(shè)置引腳,是幾個MIO引腳,通過給這幾個引腳配置不同的高低電平,進而選擇不同的啟動模式。完成啟動后,這幾個IO可以作為ARM的GPIO進行使用。STAGE0階段是BootROM執(zhí)行階段,就是將一些的外設(shè)和寄存器進行初始化,從FSBL中讀取代碼,讀取到OCM中進行運行,比如我們從Flash讀取后續(xù)代碼那就需要將flash進行初始化。STAGE1中,F(xiàn)SBL(用戶也可修改,由SDK自動生成模板)執(zhí)行階段,F(xiàn)SBL、用戶代碼執(zhí)行,就是對更多外設(shè)的初始化,比如DDR等。初始化完畢后會從啟動鏡像中讀取bit流來配置PL,加載裸機應用程序到DDR中去運行。STAGE2為裸機運行階段。然后運行用戶編寫好的程序。

BootROM and Header Parameters

ZYNQ SoC 的啟動由片上的 BootROM 開始。片上 BootROM 是 ZYNQ 芯片上的一塊非易失性存儲器,它包含了 ZYNQ 所支持的配置器件的驅(qū)動, 而且里面的代碼是不可修改的。BootROM 中的代碼首先會在片外的非易失性存儲器中尋找一個頭文件, 頭文件里定義了一些啟動信息, 用于配置 BootROM 的運行。這些啟動信息包括是程序是否就地執(zhí)行( excute in place) , FSBL 的偏移地址以及是否為安全模式等。頭文件的存在確保 BootROM 能夠按照配置器件被格式化后的方式操作。

FSBL階段

BootROM 執(zhí)行之后,下一個配置階段被稱為 First-Stage Boot Loader( FSBL), 它是由設(shè)計者所創(chuàng)建的。FSBL 可以配置 DDR 存儲器和硬件設(shè)計過程中所定義的一些外設(shè)。這些器件需要在加載軟件應用及配置 PL之前就初始化完畢。FSBL 的工作內(nèi)容:1、 初始化 PS;2、 如果提供了 BIT 文件,則配置 PL;3、 加載裸機應用程序到 DDR 中,或者加載 Second-Stage Boot Loader( SSBL);4、 開始執(zhí)行裸機應用程序,或者 SSBL。PL 的配置是通過處理器配置訪問接口( Processor Configuration Access Port, PCAP) 進行的,它允許對PL 進行部分配置或者完全配置。有關(guān) PL 的部分配置我們會在其他章節(jié)予以介紹。一旦 PS 啟動運行之后,PL 可以在任意時刻被配置, FSBL 和應用程序可以清除、 配置以及使能 PL。

BOOT模式引腳

ZYNQ SoC 使用多個模式引腳來決定配置器件的類型, 軟件的存儲位置以及其他的系統(tǒng)設(shè)置, 這些引腳共享 PS 端的 MIO 引腳??偣灿?7 個模式引腳, 分別為 MIO[8:2]。其中,前四個引腳定義啟動模式,第五個引腳定義是否使用 PLL, 第六個和第七個引腳定義上電過程中 MIO bank0 和 bank1 的 bank 電壓。

構(gòu)建一個 ZYNQ 的啟動鏡像我們需要以下的文件:

  1. Boot ROM 頭文件:控制 Boot ROM 設(shè)置,比如就地執(zhí)行、 加密、 FSBL 偏移量、鏡像文件大小等;
  2. First-Stage Boot Loader;
  3. PL 配置文件, 即 BIT 文件;
  4. 運行在 PS 上的軟件應用程序ELF;

PS軟件復位階段

PS軟件復位階段有三個,stage0:BootRom,stage1:FSBL,stage2:運行系統(tǒng)或者裸機代碼。

PL硬件復位階段

PL硬件復位階段,首先通過PS的端口進行啟動模式的設(shè)置,設(shè)置完成后進行PLL的配置初始化。

安全啟動模式流程圖

在安全模式下,啟動鏡像總是由CPU寫入OCM內(nèi)存。從那里,它被送 (使用DMA)進、送出AES(Advanced Encryption Standard)/HMAC(密鑰相關(guān)的哈希運算消息認證碼)單元進行解密和身份驗證。解密的引導映像被寫入OCM內(nèi)存,并在引導完成后執(zhí)行。也就是每個ZYNQ都有一條解密算法專門這對自己的FLASH進行解密,flash中的代碼就只能被本zynq使用。

硬件平臺搭建

我們隨便打開一個工程,因為我們這里要通過使用SD卡和JTAG模式進行下載,所以我們在硬件平臺的構(gòu)建下要進行,勾選SD和 SPI FLASH

然后我們進行g(shù)enerate output product 然后生成HDL封裝,完成約束后進行綜合布局布線,等待生成bit流文件。bit文件生成后在FILE處,點擊導出硬件資源(包含bit流文件),接著launch SDK。

SDK軟件部分

本次使用的是AXI_GPIO的IP的工程進行固化,在打開SDK后,我們需要構(gòu)建我們的鏡像文件用于SD卡啟動。選中工程右擊選中設(shè)置板載支持文件模式。

這里選擇xilffs模式,選中后點擊OK。

然后新建應用程序

點擊next,選中構(gòu)建FSBL文件

完成創(chuàng)建后等待編譯,編譯完成后準備創(chuàng)建鏡像文件。這里選中axi_gpio的位置,然后點擊創(chuàng)建鏡像的選項,鏡像文件會自動添加進去需要的工程文件,

鏡像工程包含fsbl的elf文件,bit流文件,用戶編寫的應用程序elf文件,如果要自行添加,注意三個文件的順序。

完成后,等待運行,運行結(jié)束后即可完成鏡像構(gòu)建。

SD卡運行

把BOOT.bin文件復制到SD卡中,板子的模式配置條線選擇SD卡模式,上電運行即可實現(xiàn)我們編寫好的程序。

在這里插入圖片描述

FLASH運行

選擇編程配置flash,

添加鏡像工程和FSBL文件,點擊下載編程即可完成下載。這里下載時要跳線接入JTAG模式,下載完成后跳線QSPI,即可從flash中讀取我們編寫好的程序。

Reference

  1. 正點原子ZYNQ嵌入式開發(fā)指南.
  2. XILINX文檔UG585.ZYNQ-7000-TRM
聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 1
收藏 2
關(guān)注 20
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧