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

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

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

Zynq 在非 JTAG 模式下的啟動配置流程

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2022-02-08 11:48 ? 次閱讀

作者:watchman,文章來源:ZYNQ微信公眾號

Zynq的JTAG配置過程

初學(xué) Zynq 的時候,都是按照慣例打開 Vivado 軟件,然后實現(xiàn) Zynq 可編程邏輯硬件部分PL的設(shè)置后,把硬件部署導(dǎo)出,再打開 SDK 進(jìn)行 ARM 核的軟件部分 PS 編程設(shè)計,最后再將硬件比特流文件(.bit)和軟件的可執(zhí)行鏈接文件(.elf)下載到 Zynq 開發(fā)板中,這樣就可以對自己的軟硬件設(shè)計進(jìn)行調(diào)試和驗證。

這種設(shè)計方式可以用下面的圖很好的描述:

如上圖所示,這其實是剛接觸 Zynq 軟硬件設(shè)計時需要了解的最基本開發(fā)流程,也是PL和PS設(shè)計結(jié)合的完美體現(xiàn)。

但是,上述開發(fā)的過程都有一個基本的前提,就是 Zynq 開發(fā)板是通過 JTAG 直接與電腦相連,然后實現(xiàn)程序的下載。

從另一個角度來說,PL和PS的配置都可以認(rèn)為是電腦主機(jī)通過 JTAG 完成的。

但是,在實際中,Zynq 開發(fā)板不可能實時與電腦連接,當(dāng) JTAG 不起作用時,Zynq 芯片是怎樣實現(xiàn)對自己的配置?

這也是本文將要和大家共同討論的問題。

Zynq的啟動流程

在無 JTAG 的模式下,Zynq 是通過片上CPU完成對芯片的配置,也就是PS和PL的配置是通過 PS 處理器 ARM 核來實現(xiàn)的。

需要注意的是,與傳統(tǒng)的 Xilinx 7 系列 FPGA 芯片不同,Zynq 是不支持從 PL 端進(jìn)行直接啟動配置的,一定要通過 PS 部分來完成。

Zynq 的具體啟動配置是分級進(jìn)行的,一共可以分為3個階段,可以用0~2來表示:

1. Stage 0:BootROM 階段

2. Stage 1:FSBL (First Stage Boot loader)階段

3. Stage 2:SSBL (Second Stage Boot loader)階段

熟悉 ARM 開發(fā)的小伙伴應(yīng)該對上面的啟動過程感到很熟悉,但又有陌生的地方。不用急,下面對這三個階段進(jìn)行詳細(xì)的分析。

Zynq啟動階段0——BootROM

階段0,又稱為 BootROM 階段。ROM 相信大家都知道,Read-Only Memory,只讀存儲器的意思;而 Boot 是引導(dǎo)的含義,所以 BootROM 從字面的意思來看,就是只能去讀取的引導(dǎo)存儲器。

實際上,BootROM 的作用和它的字面意思完全一樣,就是指 ARM 核在上電之后,需要第一時間去讀取 BootROM 中固化的程序,完成對芯片的最初始化的配置。

因為是只讀的,所以根據(jù) ROM 的性質(zhì),BootROM 中的程序是無法修改的。有的朋友會問BootROM 這一部分代碼主要完成了對 Zynq 的哪些配置?

在具體說明 BootROM 進(jìn)行哪些配置之前,先要描述一下關(guān)于 Zynq 的啟動引腳配置。

Zynq 擁有5個可以進(jìn)行配置的 MIO 引腳,是 MIO[6:2],在硬件形式上就表現(xiàn)為5個跳線帽,可以分別接 GND 或 3V3 的高電平。它們的作用如下:

MIO[2] :選擇 JTAG 模式

MIO[5:3] :選擇啟動方式,包括 SD 卡,QSPI Flash 等

MIO[6] :PLL 使能控制

通過不同的引腳作用說明可以發(fā)現(xiàn),當(dāng) JTAG 不起作用時,就需要通過改變 MIO[5:3] 的連接來實現(xiàn)從 SD 卡等不同的存儲介質(zhì)啟動。

而 BootROM 最重要的作用就是通過讀取 MIO[6:2] 的引腳配置情況,決定從何種介質(zhì)中加載階段1需要使用的啟動鏡像。當(dāng)然在加載之前,BootROM 會先完成對 SD 卡,NAND,NOR,QSPI Flash 等的初始化,從而使得ARM 核能夠成功訪問并使用這些外設(shè)。

BootROM 在完成以上任務(wù)的同時,也會對安全模式等運(yùn)行模式進(jìn)行配置,這部分博主暫時不太了解,所以不做過多敘述。

BootROM 在從外部存儲設(shè)備讀取了啟動鏡像后,通常會把進(jìn)行加載到 OCM 中。OCM,On Chip Memory,是Zynq 中 ARM 內(nèi)核的片上存儲器,也叫片上內(nèi)存。

自此之后,BootROM 階段的啟動任務(wù)就算是圓滿結(jié)束了,接下來 BootROM 階段就把控制權(quán)轉(zhuǎn)移到了階段1手中。

pIYBAGAJ-CSALXl1AACcMejzs1I317.png

注:BootROM 階段不對 PL 進(jìn)行配置

Zynq啟動階段1——FSBL

FSBL,(First Stage Boot Loader),就是 BootROM 加載到 OCM 中的啟動鏡像。FSBL 完成的任務(wù)是 Zynq 啟動過程中的關(guān)鍵一環(huán),可以分為以下4項:

1. 完成 PS 的初始化

2. 加載 PL 的bit流文件,完成 PL 配置

3. 加載 SSBL 引導(dǎo)程序或是ARM的裸跑程序到 DDR

4. 跳轉(zhuǎn)執(zhí)行 SSBL 或裸跑程序

FSBL 的任務(wù)如上所示,整個思路還是非常清晰的。

第1步就是對 PS 端初始化,包括 DDR,MIO 等。

第2步就是PL的配置,也就輸傳統(tǒng)的 FPGA 下載 bit 流的過程,但要注意的是,在 Zynq 的非 JTAG 模式下,PL 是無法直接自行配置的。

第3步是加載 SSBL 或裸跑程序到 DDR 內(nèi)存中,其中 SSBL,Second Stage Boot Loader,是在 Zynq 需要運(yùn)行操作系統(tǒng)時才進(jìn)行加載。而像我們?nèi)腴T學(xué)習(xí)時做的點亮 LED 燈實驗,就只是屬于裸跑程序。

最后第4步,ARM 會跳轉(zhuǎn)到 DDR 中執(zhí)行所加載的程序。所以 FSBL 階段的運(yùn)行思路是很好理解的。

在這里插入圖片描述

Zynq啟動階段2——SSBL

SSBL 在 Zynq 的啟動過程中是可選的一個階段,就像所提到的點亮 LED 實驗,包括一些其他的比較小型的程序,如果不需要用到操作系統(tǒng)的話,那么 Zynq 的啟動流程到 FSBL 階段就足夠了。

因此,SSBL 是面向于需要運(yùn)行操作系統(tǒng)的應(yīng)用場合。相信熟悉操作系統(tǒng)啟動知識的朋友到這里應(yīng)該很清楚了,SSBL 就是操作系統(tǒng)在啟動過程中的引導(dǎo)程序 boot loader。

對于 Linux 而言,Zynq 的 SSBL 階段和 u-boot 的作用是相同的。具體來說,SSBL 的作用就是將 Zynq 所需要的操作系統(tǒng)加載到 DDR 內(nèi)存之中。

到此,Zynq 的啟動與配置就算完成了。Zynq 啟動過程其實與傳統(tǒng)的 ARM 開發(fā)過程類似,區(qū)別就在于它是PS + PL 的架構(gòu),所以在啟動過程中,額外需要加載二進(jìn)制 bit 流文件。Xilinx 將 Zynq 的啟動劃分為3個階段,從結(jié)構(gòu)上看也是科學(xué)合理的。

總結(jié)

本文主要與大家分享了 Zynq 在非 JTAG 模式下的啟動配置流程,旨在讓大家對 Zynq 的三階段啟動模式有一個具體的認(rèn)識,希望大家多多交流。

審核編輯:何安

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

    關(guān)注

    10

    文章

    609

    瀏覽量

    47182
收藏 人收藏

    評論

    相關(guān)推薦

    易靈思FPGA PS配置模式--v7

    文件。注意修改Bitstream生成模式時,不需要進(jìn)行工程的全編譯,只需運(yùn)行最后一步數(shù)據(jù)流生成即可。 PS配置啟動過程 這里以X1模式為例,PS的
    的頭像 發(fā)表于 12-24 14:37 ?433次閱讀
    易靈思FPGA PS<b class='flag-5'>配置</b><b class='flag-5'>模式</b>--v7

    嵌入式系統(tǒng)的啟動流程

    嵌入式系統(tǒng)的啟動流程是一個復(fù)雜但有序的過程,它涉及從系統(tǒng)上電到操作系統(tǒng)內(nèi)核及應(yīng)用程序啟動的多個階段。
    的頭像 發(fā)表于 10-05 17:44 ?386次閱讀

    解決睡眠模式進(jìn)入系統(tǒng)速度命令模式的問題

    電子發(fā)燒友網(wǎng)站提供《解決睡眠模式進(jìn)入系統(tǒng)速度命令模式的問題.pdf》資料免費(fèi)下載
    發(fā)表于 09-24 10:34 ?0次下載
    解決睡眠<b class='flag-5'>模式</b>進(jìn)入系統(tǒng)<b class='flag-5'>在</b>速度命令<b class='flag-5'>模式</b><b class='flag-5'>下</b>的問題

    Samtec小課堂 | 兩分鐘了解JTAG連接器

    摘要/前言 回答 “什么是JTAG 連接器?”這個問題之前,讓我先向大家簡要介紹一 JTAG。 什么是JTAG? 聯(lián)合測試工作組(Joi
    發(fā)表于 08-28 13:59 ?536次閱讀
    Samtec小課堂 | 兩分鐘了解<b class='flag-5'>JTAG</b>連接器

    INA237使用TRIG模式時,配置完相應(yīng)的模式寄存器后,如何啟動TRIG轉(zhuǎn)換?

    INA237使用TRIG模式時,配置完相應(yīng)的模式寄存器后,如何啟動TRIG轉(zhuǎn)換?換句話說,配置
    發(fā)表于 08-05 06:52

    易靈思Trion FPGA PS配置模式--update(6)

    文件。注意修改Bitstream生成模式時,不需要進(jìn)行工程的全編譯,只需運(yùn)行最后一步數(shù)據(jù)流生成即可。 PS配置啟動過程 這里以X1模式為例,PS的
    的頭像 發(fā)表于 07-23 08:48 ?642次閱讀
    易靈思Trion FPGA PS<b class='flag-5'>配置</b><b class='flag-5'>模式</b>--update(6)

    如何在softAP模式配置station模式網(wǎng)絡(luò)SSID和密碼?

    模式配置模塊并在模塊的端口 80 上定義服務(wù)器套接字,讓另一個客戶端與 webbrowser 連接并為客戶端(station 模式)網(wǎng)絡(luò)設(shè)置提供網(wǎng)頁。將設(shè)置存儲
    發(fā)表于 07-16 07:57

    想在速度控制模式啟動電機(jī),發(fā)現(xiàn)電機(jī)無法啟動,為什么?

    請問我現(xiàn)在調(diào)試一臺自身不帶編碼器和位置傳感器的直線電機(jī),電機(jī)外部安裝了一個絕對位置編碼器,也已經(jīng)將絕對位置編碼器的代碼添加進(jìn)工程?,F(xiàn)在我想在速度控制模式啟動電機(jī),發(fā)現(xiàn)電機(jī)無法
    發(fā)表于 07-04 06:37

    鴻蒙開發(fā):啟動指定頁面

    當(dāng)PageAbility的啟動模式設(shè)置為單例時(具體設(shè)置方法和典型場景示例見[PageAbility的啟動模式],缺省情況是單實例
    的頭像 發(fā)表于 06-19 09:29 ?413次閱讀
    鴻蒙開發(fā):<b class='flag-5'>啟動</b>指定頁面

    鴻蒙開發(fā):PageAbility的啟動模式

    啟動模式對應(yīng)PageAbility被啟動時的行為,支持單實例模式、多實例模式兩種啟動
    的頭像 發(fā)表于 06-17 14:35 ?359次閱讀
    鴻蒙開發(fā):PageAbility的<b class='flag-5'>啟動</b><b class='flag-5'>模式</b>

    鴻蒙開發(fā):任務(wù)(Mission)與啟動模式

    如前文所述,一個UIAbility實例對應(yīng)一個任務(wù)。UIAbility實例個數(shù)與UIAbility配置啟動模式有關(guān)。FA模型,通過co
    的頭像 發(fā)表于 06-14 11:31 ?487次閱讀
    鴻蒙開發(fā):任務(wù)(Mission)與<b class='flag-5'>啟動</b><b class='flag-5'>模式</b>

    求助,關(guān)于STM32F3系列啟動時SWD的配置問題求解

    JTAG+SWD)模式啟動,JTAG和SWD模式切換過程中會有什么隱患在里面?畢竟不再有直接用
    發(fā)表于 04-09 06:12

    ESP32-S3模組是怎么配置低功耗模式的?低功耗模式功耗大概是多少?

    經(jīng)常有人問S3模組是怎么配置低功耗模式的?低功耗模式功耗大概是多少?下面小啟就跟大家講S3模組低功耗情況。01ESP32S3系列模組三種
    的頭像 發(fā)表于 01-26 08:03 ?4385次閱讀
    ESP32-S3模組是怎么<b class='flag-5'>配置</b>低功耗<b class='flag-5'>模式</b>的?低功耗<b class='flag-5'>模式</b><b class='flag-5'>下</b>功耗大概是多少?

    請問pwm配置輸出PWM是采用GTM模塊嗎,一般配置流程是什么?

    電機(jī)控制中,請問pwm配置輸出PWM是采用GTM模塊嗎,一般配置流程是什么。 比如PWM的周期怎么配置,在上升下降模式怎么
    發(fā)表于 01-22 06:26

    關(guān)于JTAG口,你了解多少?

    : 1.FPGA開發(fā)板及相關(guān)設(shè)備斷電的前提下,插上JTAG下載線接口; 2.插上USB Blaster或者ByteBlasterII的電纜; 3.接通FPGA開發(fā)板的電源。 電時的操作
    發(fā)表于 01-19 21:19