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

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

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

ZYNQ 的啟動(dòng)流程介紹

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

一、啟動(dòng)流程介紹

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

下圖是一個(gè)簡(jiǎn)單的FSBL流程圖:

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

3、第二階段啟動(dòng)流程:Second Stage Bootloader

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

二、制作FSBL第一階段的啟動(dòng)代碼

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

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

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

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

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

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

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

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

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

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

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

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

7、fsbl的 main.c 中,第一個(gè)運(yùn)行的函數(shù)就是 ps7_init ,這個(gè)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、在彈出的對(duì)話框中可以看到BIF文件和BOOT.bin的生成路徑

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

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

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

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

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

第三個(gè)是應(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卡燒寫及測(cè)試

1、格式化 SD 卡,只能格式化為 FAT32 格式,其他格式無法啟動(dòng)

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

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

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

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

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

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

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

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

7、SD卡固化成功

四、QSPI程序固化

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

五、QSPI燒寫及測(cè)試(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 選擇我們自己定制的平臺(tái);

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

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

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

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

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

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

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

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

5、打印的信息和我們?cè)贒UBUG的時(shí)候一致,代表我們固化成功

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7、再將啟動(dòng)模式切換為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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600469
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1608

    瀏覽量

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

    關(guān)注

    115

    文章

    3743

    瀏覽量

    80661
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    604

    瀏覽量

    47072

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    詳解Zynq的兩種啟動(dòng)模式

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

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

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

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

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

    Zynq在非JTAG模式下的啟動(dòng)配置流程

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

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

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

    Zynq在非JTAG模式下的啟動(dòng)配置流程

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

    介紹模擬ARM的啟動(dòng)流程

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

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

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

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

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

    詳解zynq啟動(dòng)步驟

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

    ZYNQ啟動(dòng)流程

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

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

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

    Zynq在非JTAG模式下的啟動(dòng)配置流程

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

    AURIX? TC3xx啟動(dòng)流程詳解

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

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

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