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

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

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

淺談ZYNQ的三種啟動方式-JTAG、SD card、Flash

454398 ? 來源:CSDN 博主 ? 作者:ChuanjieZhu ? 2020-12-26 10:08 ? 次閱讀

前言:

前面我們都是使用JTAG方式下載比特流文件,然后下載elf文件,最后點(diǎn)擊Run as或者Debug as來運(yùn)行程序。JTAG方式是通過tcl腳本來初始化PS,然后用JTAG收發(fā)信息,優(yōu)點(diǎn)是可以在線調(diào)試,缺點(diǎn)是斷電后程序就丟失了。為了解決程序丟失的問題,可以制作鏡像文件燒寫到sd卡或者flash中,上電即可加載程序。

ZYNQ有兩大類啟動模式:從BootROM主動啟動,從JTAG被動啟動。

在沒有外部JTAG的情況下,處理系統(tǒng)(PS)與可編程邏輯(PL)都必須依靠PS來完成芯片的初始化配置。即借助CPU來完成配置,這也是ZYNQ系列的不同之處。

板子依然使用的是zc702.

啟動模式設(shè)置:

zynq 具有多種啟動方式: NOR, NAND, Quad-SPI, SD Card以及 JTAG 。 zynq 如何判斷從哪里啟動呢? 上電后, zynq 會根據(jù)模式管腳的設(shè)定選用 boot 的方式。 而這個管腳的設(shè)定是通過核心板上的撥碼開關(guān)實現(xiàn)的。zc702的撥碼開關(guān)是sw16。

The ZC702 board supports these configurationoptions:
? PS Configuration: Quad SPI flash memory
? PS Configuration: Processor System Boot from SD Card (J64)
? PL Configuration: USB JTAG configuration port (Digilent module)
? PL Configuration: Platform cable header J2 and flying lead header J58 JTAG configurationports

pIYBAF9uIJKAMUHiAACB-5EaHqQ956.png

JTAG啟動:

配置界面如下:

pIYBAF9uIJmAcBQBAAddXDZKP4w848.png

o4YBAF9uIJ-ADM5TAAWYK6q4K50941.png

o4YBAF9uIKSASccTAAVhnXCjb7o327.png

設(shè)置完之后點(diǎn)擊Apply-->Debug即可開始調(diào)試,Run as類似。

通過制作鏡像文件在外設(shè)控制器中啟動,也稱之為固化。固化需要三個文件:FSBL.elf、該工程的bit文件、該工程的elf文件,由此三個文件制作一個BOOT.bin文件。

那么通過外設(shè)啟動的過程是怎樣的呢?

分為三個階段,大多數(shù)的ARM都是這個啟動過程。

階段0:即傳統(tǒng)的 BootROM 過程, zynq 芯片里有個 rom 里面固化了一段不可修改的程序, 只有 zynq 一上電, 這段程序就會執(zhí)行, 它將初始化CPU和 NAND、 NOR、 SD卡等基本外設(shè)。初始化好,BootROM讀取存儲器中的程序代碼,并將FSBL拷貝到OCM(On-chip memory)里 , 這個被拷貝到片上 RAM 執(zhí)行的程序就來自于我們要制作的文件——BOOT.bin。
階段1:第一階段引導(dǎo)程序(First Stage Boot Loader,F(xiàn)SBL)啟動,BOOT.bin開始執(zhí)行:首先繼續(xù)配置PS,PS初始化好后,再配置PL,最后還可以加載階段2的代碼。

階段2:開始執(zhí)行PS端代碼,也可以是第二階段引導(dǎo)程序(Second Stage Boot Loader,SSBL)。完全在用戶的控制之下,是可選的。

啰嗦第二遍:

BootROM負(fù)責(zé):

1.上電復(fù)位以后,PS端即開始進(jìn)行配置。在不使用JTAG的情況下,ARM將在片上的BootROM中開始執(zhí)行代碼。BootROM中的代碼對NAND、NOR、Quad-SPI、SD與PCAP的基本外設(shè)控制器進(jìn)行初始化,使得ARM核可以訪問、使用這些外設(shè)。(而DDR等其他外設(shè)將在階段1或者之后進(jìn)行初始化。)

2.BootROM讀取MIO[2..8]的引腳設(shè)置來確定啟動設(shè)備,將選定設(shè)備的頭192Kbyte內(nèi)容,也就是FSBL,復(fù)制到OCM中,并將控制權(quán)交給FSBL。

FSBL啟動時可以使用整塊256Kb的OCM,當(dāng)FSBL開始運(yùn)行后,器件就正式由由用戶控制了。

FSBL負(fù)責(zé):
1.根據(jù)Vivado中的配置,完成PS端的初始化。
2.使用比特流文件對PL進(jìn)行配置
3.加載第二階段引導(dǎo)程序(SSBL)或者裸跑程序(直接在ARM上運(yùn)行無操作系統(tǒng)程序)到內(nèi)存空間。
4.跳轉(zhuǎn)執(zhí)行SSBL或者裸跑程序。

關(guān)于PS配置:

Ps7_init.c和ps7_init.h,用于初始化CLK,DDR和MIO。Ps7_init.tcl完成的初始化和ps7_init.c代碼完成的初始化是相同的。

由于不是通過JTAG運(yùn)行,所以沒有運(yùn)行p7_init.tcl,直接在裸機(jī)程序開始處調(diào)用ps7_init()。

Xilinx為我們寫好了一個FSBL程序,沒有特殊要求可以直接使用。

制作BOOT.bin文件:

1.Vivado那邊完成之后,打開sdk,新建應(yīng)用工程

pIYBAF9uIKaAdx1wAADGozyY4Qs211.png

工程名設(shè)為FSBL

o4YBAF9uIKiADENnAADMsFPgnt8903.png

點(diǎn)擊next選擇自帶的FSBL程序,右邊是FSBL功能介紹

o4YBAF9uIKmAe8ySAADZu2iCmgE127.png

點(diǎn)擊Finish會自動編譯,在Debug目錄下可以找到FSBL.elf文件

pIYBAF9uIKyADZ1hAAE2SYyjFIw788.png

2.點(diǎn)擊Xilinx Tools ->Create zynq Boot Image

o4YBAF9uIK2AB7jAAAD929w1Vh8238.png

一般 該添加的文件它都會幫你添加好。

需要添加的文件如下:

pIYBAF9uIK-ALq2VAAE498FnVHE962.png

在FSBL文件夾下新建一個bootImage文件,點(diǎn)擊Browse,將輸出指向這里

o4YBAF9uILGAIqkdAACkrNxbqxI526.png

點(diǎn)擊add,先添加FSBL.elf文件,作為bootloader

pIYBAF9uILOAUOPYAAE2SYyjFIw383.png

再添加hw_platform下的.bit文件,這是PL部分的

pIYBAF9uILWAVEYHAADiWN5Gin0371.png

最后添加裸機(jī)程序.elf文件

o4YBAF9uILaAIcW8AAC-_6gMLDg413.png

都添加完如下圖:

pIYBAF9uILmANneYAAFQv_mGmUg870.png

以上三個文件的添加順序不可變,點(diǎn)擊Create Image,就可以生成BOOT.bin文件了,默認(rèn)的輸出路徑在bootImage下。

o4YBAF9uILqAd32IAABt6Pu_IKo047.png

SD卡啟動

1.將生成的BOOT.bin文件拷貝到SD卡中,2.啟動模式設(shè)置為SD卡啟動,上電,程序就可以運(yùn)行了。

我這里的現(xiàn)象led閃爍,斷電再上電,程序依然在,從SD卡加載的。

Flash啟動

1.啟動模式設(shè)置為QSPI啟動,

2.開發(fā)板上電,

3.點(diǎn)擊Xilinx tool-->Program Flash

pIYBAF9uILyABdnEAACaT7xwpkA434.png

4.點(diǎn)擊Program

下載好后程序就固化了,斷電后重啟,程序從QSPI Flash加載。

如果你使用已經(jīng)存在的bsp文件時出現(xiàn)這種情況:

o4YBAF9uIL2AD6WGAAD8g5ANhoQ884.png

右鍵那個bsp工程,點(diǎn)擊Board Support Pacage Setting,勾選這兩個庫

pIYBAF9uIMCALPHPAAFdJ9zPHH0108.png

總結(jié):

主流的下載方式就這三種,基本可以滿足你的一切需要了。

編輯:hfy

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

    關(guān)注

    10

    文章

    1610

    瀏覽量

    147591
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10780

    瀏覽量

    210516
  • JTAG
    +關(guān)注

    關(guān)注

    6

    文章

    395

    瀏覽量

    71525
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    607

    瀏覽量

    47084
收藏 人收藏

    評論

    相關(guān)推薦

    Windows管理內(nèi)存的三種主要方式

    Windows操作系統(tǒng)提供了多種方式來管理內(nèi)存,以確保系統(tǒng)資源的有效利用和性能的優(yōu)化。以下是關(guān)于Windows管理內(nèi)存的三種主要方式的詳細(xì)闡述,包括堆內(nèi)存管理、虛擬內(nèi)存管理以及共享內(nèi)存管理,每種
    的頭像 發(fā)表于 10-12 17:09 ?169次閱讀

    計算機(jī)網(wǎng)絡(luò)中的三種通信方式

    計算機(jī)網(wǎng)絡(luò)中的三種通信方式,即單工通信、半雙工通信和全雙工通信,是理解和設(shè)計高效網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)。每種通信方式都有其獨(dú)特的特性、應(yīng)用場景及優(yōu)缺點(diǎn)。以下是對這三種通信
    的頭像 發(fā)表于 08-07 15:00 ?1497次閱讀

    簡述斬波電路的三種控制方式

    斬波電路是一常見的電力電子器件,廣泛應(yīng)用于直流電壓調(diào)節(jié)、電壓變換、電流變換等領(lǐng)域。它可以實現(xiàn)對電流和電壓的控制,以滿足不同的電氣設(shè)備的需求。斬波電路的控制方式主要有三種:脈寬調(diào)制控制、頻率調(diào)制控制
    的頭像 發(fā)表于 03-11 15:22 ?2737次閱讀

    介紹三種建模方式

    據(jù)量大,而是指樣本的完備性。還有就是大數(shù)據(jù)或者AI被專業(yè)學(xué)者或者行業(yè)工程師所詬病的就是,純粹的數(shù)據(jù)驅(qū)動搞不出所以然出來,需要領(lǐng)域知識(即Domain Knowledge)的協(xié)助。此外,還有第三種建模方式就是混合驅(qū)動,即基礎(chǔ)物理模型加上數(shù)據(jù)驅(qū)動的
    的頭像 發(fā)表于 01-23 10:48 ?1279次閱讀

    運(yùn)動控制的三種控制方式

    非標(biāo)項目中有非常多的運(yùn)動控制,根據(jù)系統(tǒng)配置、電機(jī)類型以及精度需求的不同主要有三種控制方式:開環(huán)控制、半閉環(huán)控制、全閉環(huán)控制。
    的頭像 發(fā)表于 01-23 09:48 ?1160次閱讀
    運(yùn)動控制的<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b>

    嵌入式Linux開發(fā)的三種方式

    嵌入式Linux開發(fā)主要有三種方式:裸機(jī)開發(fā)、SDK開發(fā)和驅(qū)動開發(fā)。
    的頭像 發(fā)表于 01-22 14:22 ?882次閱讀

    通過TestStand三種主要運(yùn)行方式探究TestStand開放式架構(gòu)

    在這張圖中,我們可以看到三種主要運(yùn)行方式分別是”Test UUTs”、”Single Pass”、”Run MainSequence”。大家不妨先嘗試一下看看同一個序列文件用三種運(yùn)行方式
    的頭像 發(fā)表于 01-19 17:34 ?3846次閱讀
    通過TestStand<b class='flag-5'>三種</b>主要運(yùn)行<b class='flag-5'>方式</b>探究TestStand開放式架構(gòu)

    分布式鎖的三種實現(xiàn)方式

    分布式鎖的三種實現(xiàn)方式? 分布式鎖是在分布式系統(tǒng)中用于實現(xiàn)對共享資源進(jìn)行訪問控制的一機(jī)制。分布式鎖的實現(xiàn)需要考慮高可用性、高性能和正確性等方面的問題。在實際應(yīng)用中,有多種不同的方式
    的頭像 發(fā)表于 12-28 10:01 ?787次閱讀

    基于Zynq FPGA對雷龍SD NAND的測試

    文章目錄一、SDNAND特征1.1SD卡簡介1.2SD卡Block圖二、SD卡樣片、Zynq測試平臺搭建3.1測試流程3.2SOC搭建四、
    的頭像 發(fā)表于 12-22 17:45 ?469次閱讀
    基于<b class='flag-5'>Zynq</b> FPGA對雷龍<b class='flag-5'>SD</b> NAND的測試

    通過JTAG啟動Linux的方法和腳本

    在 AMD SoC 器件(AMD Zynq 7000 SoC,AMD Zynq UltraScale+ MPSoC,AMD Versal Adaptive SoC),常見的啟動方式
    的頭像 發(fā)表于 12-22 10:27 ?1308次閱讀
    通過<b class='flag-5'>JTAG</b><b class='flag-5'>啟動</b>Linux的方法和腳本

    變頻器的三種控制方式 | 變頻器三種控制方式的優(yōu)缺點(diǎn)

    ? ? ? 變頻器是一電力調(diào)節(jié)設(shè)備,它通過改變電機(jī)的工作頻率來調(diào)節(jié)電機(jī)的轉(zhuǎn)速。在實際應(yīng)用中,變頻器通常采用三種控制方式:開環(huán)控制、閉環(huán)控制和矢量控制。這三種控制
    的頭像 發(fā)表于 12-18 09:56 ?3117次閱讀
    變頻器的<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b> | 變頻器<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b>的優(yōu)缺點(diǎn)

    極管的偏置電壓和三種連接方式

    電子發(fā)燒友網(wǎng)站提供《極管的偏置電壓和三種連接方式.zip》資料免費(fèi)下載
    發(fā)表于 11-20 14:44 ?0次下載
    <b class='flag-5'>三</b>極管的偏置電壓和<b class='flag-5'>三種</b>連接<b class='flag-5'>方式</b>

    單工通信、半雙工通信和全雙工通信三種方式的不同之處

    首先,不要被生澀的文字嚇到了,通訊在我們?nèi)粘V型ㄓ嵤菬o處不在的,三種通訊方式也是隨處可見。下面分別舉例說明三種方式的不同之處以及在工業(yè)和電子設(shè)備上常用的一些案例。
    的頭像 發(fā)表于 11-14 16:09 ?4723次閱讀
    單工通信、半雙工通信和全雙工通信<b class='flag-5'>三種</b><b class='flag-5'>方式</b>的不同之處

    什么是電池化成?電池化成的三種方式 三種電池化成對比

    什么是電池化成?電池化成的三種方式 三種電池化成對比? 電池化成是指將物體或設(shè)備改造為可以使用電池供電的過程。在電池化成過程中,常見的電源例如燃油、電線甚至是替換掉,以便更高效、便捷地提供
    的頭像 發(fā)表于 11-10 14:49 ?2133次閱讀

    PWM信號輸出的三種硬件驅(qū)動方式

    PWM信號輸出的三種硬件驅(qū)動方式 PWM信號,即脈沖寬度調(diào)制信號,用于控制電子設(shè)備的運(yùn)轉(zhuǎn)。在電路控制領(lǐng)域中,PWM信號是非常重要的信號之一,它通常用于控制電機(jī)、LED燈、音頻放大器等設(shè)備的運(yùn)轉(zhuǎn)。當(dāng)
    的頭像 發(fā)表于 10-30 09:47 ?1098次閱讀