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

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

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

ZYNQ 的啟動流程介紹

FPGA技術(shù)江湖 ? 來源:FPGA技術(shù)江湖 ? 作者:FPGA技術(shù)江湖 ? 2022-07-22 10:10 ? 次閱讀

一、啟動流程介紹

普通的 FPGA 一般是可以從 flash 啟動,或者被動加載,但是ZYNQ不行,ZYNQ必須PS端參與

ZYNQ 的啟動是由 ARM 主導(dǎo)的,包括 FPGA 程序的加載, ZYNQ 啟動一般為3個階段,最少2個階段:

1、階段0:Stage-0 Boot (BootROM

99b8907c-0962-11ed-ba43-dac502259ad0.png

階段0,主要是運(yùn)行芯片內(nèi)部固化的BootROM程序,這個BootROM主要是識別啟動模式(spi/sd/nand/nor/)是哪一種?

1)、根據(jù)啟動模式,設(shè)置相應(yīng)的外設(shè),當(dāng)然有引腳復(fù)用了,還有時鐘;

2)、將FSBL從啟動介質(zhì)中搬移到OCM(On-Chip Memory)中

3)、跳轉(zhuǎn)到FSBL處執(zhí)行,將控制權(quán)交給FSBL程序

2、階段1:FSBL(First Stage Bootloader )

FSBL(第一階段引導(dǎo)加載程序)在BootROM之后啟動,這個BootROM將FSBL加載到OCM(On-Chip Memory )

FSBL負(fù)責(zé)下面的幾項(xiàng)工作:

1)、初始化PS端的配置數(shù)據(jù)(使用Xilinx硬件配置工具提供的);

完成MIO分配、時鐘PLL、DDR控制器初始化,SD、QSPI控制器初始化

2)、通過啟動模式從啟動介質(zhì)讀取bitsttream文件,并用它燒寫PL端程序

3)、加載第二階段BootLoader或者邏輯代碼到DDR內(nèi)存

4)、切換到第二階段BootLoader或者邏輯代碼運(yùn)行

下圖是一個簡單的FSBL流程圖:

99d5b242-0962-11ed-ba43-dac502259ad0.png

3、第二階段啟動流程:Second Stage Bootloader

第二階段引導(dǎo)加載程序是可選的,并由用戶設(shè)計(jì),一般是在跑系統(tǒng)的情況下使用,比如 linux 系統(tǒng)的u-boot(用petalinux 工具制作 linux 系統(tǒng) )

二、制作FSBL第一階段的啟動代碼

1、新建一個名為 fsbl 的 APP,特別注意硬件平臺選擇我們自己配置的ps_uart_warpper_hw_platform_0 ,點(diǎn)擊next

9a034f54-0962-11ed-ba43-dac502259ad0.png

2、在彈出的對話框選擇Zynq FSBL,點(diǎn)擊Finish

9a213f1e-0962-11ed-ba43-dac502259ad0.png

3、然后軟件會自動的進(jìn)行編譯FSBL,時間看電腦的性能

9a36d202-0962-11ed-ba43-dac502259ad0.png

4、等編譯完成,修改代碼,添加調(diào)試宏定義 FSBL_DEBUG_INFO

這個宏可以在啟動輸出 FSBL 的一些狀態(tài)信息,有利于調(diào)試,但是會導(dǎo)致啟動時間變長。

9a4eb05c-0962-11ed-ba43-dac502259ad0.png

5、修改后保存, SDK 默認(rèn)會自動編譯,生成 fsbl.elf 文件。也可以右鍵點(diǎn)擊build project手動編譯

6、我們的工程文件夾包含很多外設(shè)文件ps7_init.c, nand, nor, qspi, sd 等

9a729986-0962-11ed-ba43-dac502259ad0.png

7、fsbl的 main.c 中,第一個運(yùn)行的函數(shù)就是 ps7_init ,這個fsbl內(nèi)容也可以根據(jù)自己需要進(jìn)行更改,例如加點(diǎn)自己的打印信息

9a88f1a4-0962-11ed-ba43-dac502259ad0.png

8、創(chuàng)建 BOOT 文件

8.1、選擇 APP (就是我們的應(yīng)用:ps_uart_hello)工程,右鍵選擇 Create Boot Image

9aa6042e-0962-11ed-ba43-dac502259ad0.png

8.2、在彈出的對話框中可以看到BIF文件和BOOT.bin的生成路徑

BIF文件是生成BOOT.bin文件的配置文件;

BOOT.bin是我們需要的啟動文件,可以燒寫到SD卡、QSPI里

8.3、在彈出的對話框,Boot image partitions 列表中有要合成的文件

第一個文件一定是 bootloader 文件,就是上面生成的 fsbl.elf 文件;

第二個文件是 FPGA 配置文件 bitstream,本實(shí)驗(yàn)沒有PL端程序,所以bitstream,不需要添加;

第三個是應(yīng)用程序,在本實(shí)驗(yàn)中為 ps_uart_hello.elf

8.4、由于沒有 bitstream,在本實(shí)驗(yàn)中只添加 bootloader 和應(yīng)用程序。點(diǎn)擊 Create Imag

9ac4d336-0962-11ed-ba43-dac502259ad0.png

8.5、在生成的目錄下可以找到BOOT.bin文件

9ade44f6-0962-11ed-ba43-dac502259ad0.png

三、SD卡燒寫及測試

1、格式化 SD 卡,只能格式化為 FAT32 格式,其他格式無法啟動

2、放入 BOOT.bin 文件,放在根目錄

3、D 卡插入開發(fā)板的 SD 卡插槽

4、啟動模式調(diào)整為 SD 卡啟動

開發(fā)板設(shè)置撥碼為【 101001(1~6 SD卡 模式)】

9afb3278-0962-11ed-ba43-dac502259ad0.png

5、打開串口,開發(fā)板上電

6、可以看到SD卡啟動成功,紅色部分為FSBL打印信息,綠色為我們的APP打印信息

9b153e2a-0962-11ed-ba43-dac502259ad0.png

7、SD卡固化成功

四、QSPI程序固化

QSPI 燒寫有2種方式:xSDK軟件燒寫、或者Vivado軟件燒寫

五、QSPI燒寫及測試(xSDK軟件燒寫)

首先將開發(fā)板設(shè)置為JTAG模式【 010101(1~6 JTAG 模式)】

9b47e1a4-0962-11ed-ba43-dac502259ad0.png

1、在 SDK 菜單 Xilinx -》 Program Flash

9b66cbc8-0962-11ed-ba43-dac502259ad0.png

2、參數(shù)配置

《1》、Hardware Platform 選擇我們自己定制的平臺;

《2》、Image FIle 文件選擇要燒寫的 BOOT.bin;

《3》、FSBL file 選擇創(chuàng)龍定制的 fsbl.elf,只有用這個 fsbl 才能燒寫(我會另寫一篇博客單獨(dú)寫怎么定制fsbl.elf文件);

《4》、選擇 Verify after flash,在燒寫完成后校驗(yàn) flash

9b7eddb2-0962-11ed-ba43-dac502259ad0.png

3、注意:第一次固化的時候,里面有uboot在執(zhí)行,燒寫不成功,所以要先在軟件點(diǎn)固化,然后快速給開發(fā)板上電

9b96974a-0962-11ed-ba43-dac502259ad0.png

4、將啟動設(shè)置為QSPI【 100101(1~6 QSPI 模式)】,驗(yàn)證固化有沒有成功

9bbbf454-0962-11ed-ba43-dac502259ad0.png

5、打印的信息和我們在DUBUG的時候一致,代表我們固化成功

五、QSPI燒寫及測試(vivado軟件燒寫)

1、在 HARDWARE MANGER 下選擇器件,右鍵 Add Configuration Memory Device

9bf01c84-0962-11ed-ba43-dac502259ad0.png

2、選擇嘗試 Winbond,類型選擇 qspi,寬度選擇 x4-single,這時候出現(xiàn) w25q128

選擇紅框型號,開發(fā)板使用 MT25QL256ABA1EW9-0SIT,但是不影響燒錄

9c01dece-0962-11ed-ba43-dac502259ad0.png

3、在彈出的對話框,提示我們是否立即燒寫,點(diǎn)擊OK

選擇ps_uart_hello/bootimage/目錄的BOOT.bin,選擇fsbl/debug/目錄下的fsbl.elf文件

9c2cf3d4-0962-11ed-ba43-dac502259ad0.png

4、提示我們當(dāng)前是處于QSPI模式的,如果編程失敗,請更改模式,再次重試

9c4d4382-0962-11ed-ba43-dac502259ad0.png

5、我們將啟動模式改為JTAG模式【 010101(1~6 JTAG 模式)】

9b47e1a4-0962-11ed-ba43-dac502259ad0.png

6、斷電上電,再次嘗試燒寫,沒有剛才的警告信息了

9c8230c4-0962-11ed-ba43-dac502259ad0.png

7、再將啟動模式切換為QSPI模式,QSPI【 100101(1~6 QSPI 模式)】,驗(yàn)證固化有沒有成功

9c961a62-0962-11ed-ba43-dac502259ad0.png

六、到此PS端的程序固化成功

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

    關(guān)注

    1625

    文章

    21620

    瀏覽量

    601238
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1614

    瀏覽量

    147655
  • 程序
    +關(guān)注

    關(guān)注

    116

    文章

    3756

    瀏覽量

    80751
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    607

    瀏覽量

    47101

原文標(biāo)題:學(xué)員筆記精選 | ZYNQ7000系列基本開發(fā)流程 之 《PS端程序固化》篇

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    詳解Zynq的兩種啟動模式

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

    【Z-turn Board試用體驗(yàn)】+板上資源Zynq7000啟動流程的學(xué)習(xí)

    做一遍也不害怕!Zynq7000,是一個可擴(kuò)展處理平臺,簡單說就是有個FPGA做外設(shè)的A9雙核處理器。所以,它的啟動流程自然也和FPGA完全不同,而與傳統(tǒng)的ARM處理器類似。Zynq7
    發(fā)表于 05-27 20:50

    【Z-turn Board試用體驗(yàn)】+Zynq7000啟動流程介紹

    Zynq-7000 Extensible Processing Platform,是一個可擴(kuò)展處理平臺,簡單說就是有個FPGA做外設(shè)的A9雙核處理器。所以,它的啟動流程自然也和FPGA完全不同,而與
    發(fā)表于 07-22 20:42

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

    是怎樣實(shí)現(xiàn)對自己的配置?  這也是本文將要和大家共同討論的問題?! ?b class='flag-5'>Zynq的啟動流程  在無 JTAG 的模式下,Zynq 是通過片上CPU完成對芯片的配置,也就是PS和PL的配置是
    發(fā)表于 01-08 16:33

    ZYNQ芯片開發(fā)流程的簡介

    PS和PL互聯(lián)技術(shù)ZYNQ芯片開發(fā)流程的簡介
    發(fā)表于 01-26 07:12

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

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

    介紹模擬ARM的啟動流程

    的模擬器,如果你想學(xué)習(xí)嵌入式,但身邊沒有開發(fā)板,這時候你可以嘗試使用它來模擬Linux內(nèi)核的啟動,當(dāng)然它還可以模擬ARM、MIPS等各種CPU架構(gòu),本文主要介紹模擬ARM的啟動流程(一
    發(fā)表于 11-05 06:36

    ZYNQ學(xué)習(xí) —— 啟動流程分析及各環(huán)節(jié)文件生成流程(ZedBo

    網(wǎng)絡(luò)資料收集,關(guān)于啟動流程的一些注意點(diǎn),關(guān)于開發(fā)板ZYNQ系列的包括MIZ702
    發(fā)表于 05-11 17:30 ?3次下載

    啟動流程分析及各環(huán)節(jié)文件生成流程(ZedBoard為例)

    1. ZYNQ啟動流程 Zynq7000就如同他的名字一樣,Zynq-7000 Extensible Processing Platfor
    發(fā)表于 02-09 09:52 ?1347次閱讀

    詳解zynq啟動步驟

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

    ZYNQ啟動流程

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

    ZYNQ7020的PS端的基本開發(fā)流程

    這篇文章記錄ZYNQ7020的PS端的基本開發(fā)流程,關(guān)于PL端的開發(fā)流程,參考之前文章,這里放個超鏈接。
    的頭像 發(fā)表于 07-24 18:12 ?7393次閱讀

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

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

    AURIX? TC3xx啟動流程詳解

    本文首先介紹整個啟動流程的概況,接著分別介紹了firmware啟動流程,boot mode的配置
    的頭像 發(fā)表于 06-06 10:31 ?3482次閱讀
    AURIX? TC3xx<b class='flag-5'>啟動</b><b class='flag-5'>流程</b>詳解

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

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