ZYNQ SOC設(shè)計---BOOT.bin制作
掃描二維碼
隨時隨地手機看文章
以前工程都是通過 JTAG 先下載 bit 流文件,再下載 elf 文件,最后點擊 Run As 來運行程序。JTAG 的方法是通過 TCL 腳本來初始化 PS,然后用 JTAG 收發(fā)信息,用于在線調(diào)試。但是這樣只要一斷電,程序就會丟失,掉電不保存。
本文詳細介紹如何制作鏡像文件。將鏡像文件拷貝到 SD 卡,設(shè)置撥碼開關(guān),使系統(tǒng)從 SD 啟動。那么每次斷電重啟后,系統(tǒng)都會從 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 和大多數(shù) arm 啟動過程一樣,啟動過程也分為 3 個階段,這三個階段分別稱之為階段 0、階段 1 和階段 2。
階段 0:即傳統(tǒng)的 BootROM 過程。zynq 芯片 rom 里面固化了一段不可修改的程序,只要 zynq 一上電,這段程序就會執(zhí)行。它將對 zynq 的 NAND、NOR、SD 等基本外設(shè)控制器進行初始化。把 SD 卡這類易失的存儲器件初始化后,就會把其中的程序拷貝到 zynq 的 OCM(On-chip memory)。這個被拷貝到片上 RAM 執(zhí)行的程序就是我們制作的文件——BOOT.bin。
階段 1:BOOT.bin 加載到 OCM 上開始執(zhí)行。BOOT.bin 由 FSBL.elf+該工程.bit+該工程.elf 構(gòu)成。階段 1 要做的就是:首先配置 PS 部分,PS 完成初始化后,會去配置 PL 部分,最后去加載階段 2 的代碼。
階段 2:這一階段是可選的,主要是為了完成 Linux 系統(tǒng)啟動過程。
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,并設(shè)置 MIO 47
3、 勾選 WP,并設(shè)置 MIO 46
Clock ConfigurationàIO Peripheral Clocks 配置:
QSPI 時鐘設(shè)置為 125
點擊 OK 完成配置。
右擊 system.bd, 單擊 Generate Output Products。
右擊 system.bd 選擇 Create HDL Wrapper 這步的作用是產(chǎn)生頂層的 HDL 文件
選擇 Leave Let Vivado manager wrapper and auto-update 然后單擊 OK
生成 Bit 文件。
導出到硬件。
啟動 SDK
新建一個應(yīng)用工程
填寫工程名 FSBL,點擊 Next
工程類型選擇 Zynq FSBL。
按快捷鍵 Ctrl+B 編譯一下工程。
選中其中一個工程(記住是哪一個工程,等會兒好找 Boot.bin),然后右單擊,選擇 Creat Boot Image。
在新窗口中,一共出現(xiàn)三個文件,分別是 FSBL.elf、.bit、.elf 文件,如圖所示。制作鏡像文件需要這三個文件。直接單擊 Create Image 即可完成 Boot.bin 的創(chuàng)建,此文件可作為 SD 卡啟動文件和 SPI 啟動文件。
在之前設(shè)定的文件夾下找到 BOOT.bin 文件,并且將其拷到 SD 卡中,再將 SD 卡插到開發(fā)板,最后打開電源。開機后系統(tǒng)從 SD 卡啟動,程序掉電不消失。
最后提醒下放大 SD 卡的 bin 文件,文件名必須是 BOOT.bin,否則不識別。





