以前工程都是通過 JTAG 先下載 bit 流文件,再下載 elf 文件,最后點擊 Run As 來運行程序。JTAG 的方法是通過 TCL 腳本來初始化 PS,然后用 JTAG 收發信息,用于在線調試。但是這樣只要一斷電,程序就會丟失,掉電不保存。
本文詳細介紹如何制作鏡像文件。將鏡像文件拷貝到 SD 卡,設置撥碼開關,使系統從 SD 啟動。那么每次斷電重啟后,系統都會從 SD 啟動。這樣將程序做固化,掉電重啟后就不會丟失。
1.固化的流程
2. 固化準備
首先,想到的兩個文件就是 PL 部分需要的 bit 文件,以及 PS 需要的 elf 文件。但是僅有這兩個文件不夠的。我們還需要一段代碼把 bit 文件以及 elf 文件安置好。這段代碼FSBL.elf。
因此要制作一個鏡像文件需要三個文件:
1、FSBL.elf 2、.bit 3、.elf。
最后得到一個等式就是:BOOT.bin = FSBL.elf+該工程.bit+該工程.elf。
(我們利用SDK生成FSBL.elf 文件)
2. zynq 的從 SD 卡的啟動的過程
zynq 和大多數 arm 啟動過程一樣,啟動過程也分為 3 個階段,這三個階段分別稱之為階段 0、階段 1 和階段 2。
階段 0:即傳統的 BootROM 過程。zynq 芯片 rom 里面固化了一段不可修改的程序,只要 zynq 一上電,這段程序就會執行。它將對 zynq 的 NAND、NOR、SD 等基本外設控制器進行初始化。把 SD 卡這類易失的存儲器件初始化后,就會把其中的程序拷貝到 zynq 的 OCM(On-chip memory)。這個被拷貝到片上 RAM 執行的程序就是我們制作的文件——BOOT.bin。
階段 1:BOOT.bin 加載到 OCM 上開始執行。BOOT.bin 由 FSBL.elf+該工程.bit+該工程.elf 構成。階段 1 要做的就是:首先配置 PS 部分,PS 完成初始化后,會去配置 PL 部分,最后去加載階段 2 的代碼。
階段 2:這一階段是可選的,主要是為了完成 Linux 系統啟動過程。
2. BOOT.bin 制作過程
打開工程,雙擊打開原理圖。
雙擊 ZYNQ Processing System,對其進行配置:
選擇 MIO Configuration 選項,然后如下圖所示配置:
MIO ConfigurationàMemory Interfaces 配置:
1、 勾選 Quad SPI Flsh
2、 勾選 Feedback Clk
MIO ConfigurationàI/O Peripherals 配置:
1、 勾選 SD 0
2、 勾選 CD,并設置 MIO 47
3、 勾選 WP,并設置 MIO 46
Clock ConfigurationàIO Peripheral Clocks 配置:
QSPI 時鐘設置為 125
點擊 OK 完成配置。
右擊 system.bd, 單擊 Generate Output Products。
右擊 system.bd 選擇 Create HDL Wrapper 這步的作用是產生頂層的 HDL 文件
選擇 Leave Let Vivado manager wrapper and auto-update 然后單擊 OK
生成 Bit 文件。
導出到硬件。
啟動 SDK
新建一個應用工程
填寫工程名 FSBL,點擊 Next
工程類型選擇 Zynq FSBL。
按快捷鍵 Ctrl+B 編譯一下工程。
選中其中一個工程(記住是哪一個工程,等會兒好找 Boot.bin),然后右單擊,選擇 Creat Boot Image。
在新窗口中,一共出現三個文件,分別是 FSBL.elf、.bit、.elf 文件,如圖所示。制作鏡像文件需要這三個文件。直接單擊 Create Image 即可完成 Boot.bin 的創建,此文件可作為 SD 卡啟動文件和 SPI 啟動文件。
在之前設定的文件夾下找到 BOOT.bin 文件,并且將其拷到 SD 卡中,再將 SD 卡插到開發板,最后打開電源。開機后系統從 SD 卡啟動,程序掉電不消失。
最后提醒下放大 SD 卡的 bin 文件,文件名必須是 BOOT.bin,否則不識別。
編輯:jq
-
SD卡
+關注
關注
2文章
566瀏覽量
64115 -
JTAG
+關注
關注
6文章
401瀏覽量
71844 -
TCL
+關注
關注
10文章
1742瀏覽量
88879
原文標題:ZYNQ SOC設計---BOOT.bin制作
文章出處:【微信號:VOSDeveloper,微信公眾號:麻辣軟硬件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Milk-V Duo 開發板免費體驗 官方鏡像燒錄
![Milk-V Duo 開發板免費體驗 官方<b class='flag-5'>鏡像</b>燒錄](https://file1.elecfans.com/web2/M00/8F/55/wKgaomTMdn2AewAWAAAnxm7R6SU562.png)
Docker-鏡像的分層-busybox鏡像制作
![Docker-<b class='flag-5'>鏡像</b>的分層-busybox<b class='flag-5'>鏡像</b><b class='flag-5'>制作</b>](https://file1.elecfans.com/web3/M00/06/0F/wKgZO2eHIVWABdMXAAAXs32FF8s788.png)
Dockerfile鏡像制作與Docker-Compose容器編排
![Dockerfile<b class='flag-5'>鏡像</b><b class='flag-5'>制作</b>與Docker-Compose容器編排](https://file1.elecfans.com/web3/M00/05/19/wKgZO2d8mWeAPOtdAAArBZgZf3c712.png)
迅為RK3568開發板EMMC鏡像導出打包update.img
用戶手冊 | 國產最強SOC——RK3588之鏡像升級篇
![用戶手冊 | 國產最強SOC——RK3588之<b class='flag-5'>鏡像</b>升級篇](https://file.elecfans.com/web2/M00/5D/1D/poYBAGLzEqqAd54TAAAbaJrrfwc915.png)
評論