<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

前言:

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

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

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

板子依然使用的是zc702.

啟動模式設置:

zynq 具有多種啟動方式: NOR, NAND, Quad-SPI, SD Card以及 JTAG 。 zynq 如何判斷從哪里啟動呢? 上電后, zynq 會根據模式管腳的設定選用 boot 的方式。 而這個管腳的設定是通過核心板上的撥碼開關實現的。zc702的撥碼開關是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

設置完之后點擊Apply-->Debug即可開始調試,Run as類似。

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

那么通過外設啟動的過程是怎樣的呢?

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

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

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

啰嗦第二遍:

BootROM負責:

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

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

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

FSBL負責:
1.根據Vivado中的配置,完成PS端的初始化。
2.使用比特流文件對PL進行配置
3.加載第二階段引導程序(SSBL)或者裸跑程序(直接在ARM上運行無操作系統程序)到內存空間。
4.跳轉執行SSBL或者裸跑程序。

關于PS配置:

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

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

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

制作BOOT.bin文件:

1.Vivado那邊完成之后,打開sdk,新建應用工程

pIYBAF9uIKaAdx1wAADGozyY4Qs211.png

工程名設為FSBL

o4YBAF9uIKiADENnAADMsFPgnt8903.png

點擊next選擇自帶的FSBL程序,右邊是FSBL功能介紹

o4YBAF9uIKmAe8ySAADZu2iCmgE127.png

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

pIYBAF9uIKyADZ1hAAE2SYyjFIw788.png

2.點擊Xilinx Tools ->Create zynq Boot Image

o4YBAF9uIK2AB7jAAAD929w1Vh8238.png

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

需要添加的文件如下:

pIYBAF9uIK-ALq2VAAE498FnVHE962.png

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

o4YBAF9uILGAIqkdAACkrNxbqxI526.png

點擊add,先添加FSBL.elf文件,作為bootloader

pIYBAF9uILOAUOPYAAE2SYyjFIw383.png

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

pIYBAF9uILWAVEYHAADiWN5Gin0371.png

最后添加裸機程序.elf文件

o4YBAF9uILaAIcW8AAC-_6gMLDg413.png

都添加完如下圖:

pIYBAF9uILmANneYAAFQv_mGmUg870.png

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

o4YBAF9uILqAd32IAABt6Pu_IKo047.png

SD卡啟動

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

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

Flash啟動

1.啟動模式設置為QSPI啟動,

2.開發板上電,

3.點擊Xilinx tool-->Program Flash

pIYBAF9uILyABdnEAACaT7xwpkA434.png

4.點擊Program

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

如果你使用已經存在的bsp文件時出現這種情況:

o4YBAF9uIL2AD6WGAAD8g5ANhoQ884.png

右鍵那個bsp工程,點擊Board Support Pacage Setting,勾選這兩個庫

pIYBAF9uIMCALPHPAAFdJ9zPHH0108.png

總結:

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

編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1562

    瀏覽量

    146818
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10509

    瀏覽量

    207142
  • JTAG
    +關注

    關注

    6

    文章

    385

    瀏覽量

    71196
  • Zynq
    +關注

    關注

    9

    文章

    600

    瀏覽量

    46757
收藏 人收藏

    評論

    相關推薦

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

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

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

    文章目錄 一、SD NAND特征 1.1 SD卡簡介 1.2 SD卡Block圖 二、SD卡樣片 、Z
    發表于 12-22 17:43

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

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

    使用 PCIE 更新 AMD ZYNQ? 的 QSPI Flash 參考設計

    的 QSPI 控制器,用來更新 Flash啟動分區。 軟件方面,移植了 Embedded SW 的相關驅動代碼至 xdma 平臺,并提供了一個簡單的上位機測試程序,用來燒寫啟動鏡像至 Fl
    發表于 11-30 18:49

    JTAGFLASH燒錄中的“江湖”

    首先,我們來看看JTAG燒錄FLASH的層次結構
    的頭像 發表于 10-19 11:35 ?1059次閱讀
    <b class='flag-5'>JTAG</b>在<b class='flag-5'>FLASH</b>燒錄中的“江湖”

    Zynq中程序存儲位置和設置方法

    Zynq中存儲程序的地方有QSPI Flash,SD卡,EMMC。
    的頭像 發表于 10-17 17:00 ?904次閱讀

    SD啟動失敗,串口沒反應是為什么?

    領航者ZYNQ7020,快速體驗,IMG鏡像燒入SD卡,SD啟動,開發板的燈亮的不對,串口也沒反應,為什么?
    發表于 09-25 06:01

    HSUSBH_USBH_MassStorage如何加入訪問SD card功能?

    在HSUSBH_USBH_MassStorage 這code裡想加入訪問SD card功能, 具體需要調整哪些部分
    發表于 08-28 06:00

    Xilinx ZYNQ UltraScale+RFSoCZU27DR 開源RFSOC算法驗證評估板

    和2GBDDR4內存;支持Micro SD card (support UHS) 、10/100/1000 Ethernet ; ? USB JTAG/UART 支持板卡JTAG 加載
    發表于 08-25 15:11

    SD NAND FLASH : 什么是pSLC?

    一、什么是pSLC pSLC(Pseudo-Single Level Cell)即偽SLC,是一將MLC/TLC改為SLC的一技術,現Nand Flash基本支持此功能,可以通過指令控制MLC
    發表于 08-11 10:48

    詳解Zynq的兩種啟動模式

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

    【貼片SD Card介紹】貼片式tf卡/SD NAND/SD2.0協議

    申請到雷龍發展代理的CS創世 貼片 SD Card (SD NAND) 樣品,做出測試,分享一下。 型號:CSNP32GCR01-BOW;CSNP4GCR01-BOW 生產方:CS創世半導體 總代理
    發表于 07-28 16:23

    使用JTAG仿真器查看ZYNQ當前啟動模式

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

    ZYNQ - 以太網遠程更新貼片SD卡/TF卡應用程序

    寫在前面對于ZYNQ系列的板卡固化,可以通過JTAG接口,使用SDK固化到FLASH中,或者可將SD卡取出將SD卡中保存的固化工程進行修改,
    的頭像 發表于 06-16 09:12 ?543次閱讀
    <b class='flag-5'>ZYNQ</b> - 以太網遠程更新貼片<b class='flag-5'>SD</b>卡/TF卡應用程序

    我看MS51有三種Flash大小的,除了Flash大小不同外,其他配置一樣嗎?

    我看MS51有三種Flash大小的,除了Flash大小不同外,其他配置一樣嗎
    發表于 06-15 10:15
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>