以前工程都是通過(guò) JTAG 先下載 bit 流文件,再下載 elf 文件,最后點(diǎn)擊 Run As 來(lái)運(yùn)行程序。JTAG 的方法是通過(guò) TCL 腳本來(lái)初始化 PS,然后用 JTAG 收發(fā)信息,用于在線調(diào)試。但是這樣只要一斷電,程序就會(huì)丟失,掉電不保存。
本文詳細(xì)介紹如何制作鏡像文件。將鏡像文件拷貝到 SD 卡,設(shè)置撥碼開關(guān),使系統(tǒng)從 SD 啟動(dòng)。那么每次斷電重啟后,系統(tǒng)都會(huì)從 SD 啟動(dòng)。這樣將程序做固化,掉電重啟后就不會(huì)丟失。
1.固化的流程
2. 固化準(zhǔn)備
首先,想到的兩個(gè)文件就是 PL 部分需要的 bit 文件,以及 PS 需要的 elf 文件。但是僅有這兩個(gè)文件不夠的。我們還需要一段代碼把 bit 文件以及 elf 文件安置好。這段代碼FSBL.elf。
因此要制作一個(gè)鏡像文件需要三個(gè)文件:
1、FSBL.elf 2、.bit 3、.elf。
最后得到一個(gè)等式就是:BOOT.bin = FSBL.elf+該工程.bit+該工程.elf。
(我們利用SDK生成FSBL.elf 文件)
2. zynq 的從 SD 卡的啟動(dòng)的過(guò)程
zynq 和大多數(shù) arm 啟動(dòng)過(guò)程一樣,啟動(dòng)過(guò)程也分為 3 個(gè)階段,這三個(gè)階段分別稱之為階段 0、階段 1 和階段 2。
階段 0:即傳統(tǒng)的 BootROM 過(guò)程。zynq 芯片 rom 里面固化了一段不可修改的程序,只要 zynq 一上電,這段程序就會(huì)執(zhí)行。它將對(duì) zynq 的 NAND、NOR、SD 等基本外設(shè)控制器進(jìn)行初始化。把 SD 卡這類易失的存儲(chǔ)器件初始化后,就會(huì)把其中的程序拷貝到 zynq 的 OCM(On-chip memory)。這個(gè)被拷貝到片上 RAM 執(zhí)行的程序就是我們制作的文件——BOOT.bin。
階段 1:BOOT.bin 加載到 OCM 上開始執(zhí)行。BOOT.bin 由 FSBL.elf+該工程.bit+該工程.elf 構(gòu)成。階段 1 要做的就是:首先配置 PS 部分,PS 完成初始化后,會(huì)去配置 PL 部分,最后去加載階段 2 的代碼。
階段 2:這一階段是可選的,主要是為了完成 Linux 系統(tǒng)啟動(dòng)過(guò)程。
2. BOOT.bin 制作過(guò)程
打開工程,雙擊打開原理圖。
雙擊 ZYNQ Processing System,對(duì)其進(jìn)行配置:
選擇 MIO Configuration 選項(xiàng),然后如下圖所示配置:
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í)鐘設(shè)置為 125
點(diǎn)擊 OK 完成配置。
右擊 system.bd, 單擊 Generate Output Products。
右擊 system.bd 選擇 Create HDL Wrapper 這步的作用是產(chǎn)生頂層的 HDL 文件
選擇 Leave Let Vivado manager wrapper and auto-update 然后單擊 OK
生成 Bit 文件。
導(dǎo)出到硬件。
啟動(dòng) SDK
新建一個(gè)應(yīng)用工程
填寫工程名 FSBL,點(diǎn)擊 Next
工程類型選擇 Zynq FSBL。
按快捷鍵 Ctrl+B 編譯一下工程。
選中其中一個(gè)工程(記住是哪一個(gè)工程,等會(huì)兒好找 Boot.bin),然后右單擊,選擇 Creat Boot Image。
在新窗口中,一共出現(xiàn)三個(gè)文件,分別是 FSBL.elf、.bit、.elf 文件,如圖所示。制作鏡像文件需要這三個(gè)文件。直接單擊 Create Image 即可完成 Boot.bin 的創(chuàng)建,此文件可作為 SD 卡啟動(dòng)文件和 SPI 啟動(dòng)文件。
在之前設(shè)定的文件夾下找到 BOOT.bin 文件,并且將其拷到 SD 卡中,再將 SD 卡插到開發(fā)板,最后打開電源。開機(jī)后系統(tǒng)從 SD 卡啟動(dòng),程序掉電不消失。
最后提醒下放大 SD 卡的 bin 文件,文件名必須是 BOOT.bin,否則不識(shí)別。
編輯:jq
-
SD卡
+關(guān)注
關(guān)注
2文章
560瀏覽量
63805 -
JTAG
+關(guān)注
關(guān)注
6文章
398瀏覽量
71598 -
TCL
+關(guān)注
關(guān)注
10文章
1715瀏覽量
88465
原文標(biāo)題:ZYNQ SOC設(shè)計(jì)---BOOT.bin制作
文章出處:【微信號(hào):VOSDeveloper,微信公眾號(hào):麻辣軟硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論