Zynq啟動流程


前言

Zynq啟動流程和ARM處理器類似,PS部分是啟動和配置過程的主設備,芯片引導必須由處理器驅動,系統上電復位后會讀取設備模式引腳來決定從什么設備啟動芯片。如下表Boot Devices條目所示,其中黃色代表該條目下的默認設置,比如Boot Devices默認設置是SD Card,默認從SD卡啟動芯片

下圖中的JP7-JP11的5個條線帽就是用於設置設備模式引腳電平的

啟動步驟

PS確定好從什么設備啟動后,接着的啟動過程分為以下三個階段
0. Stage-0 執行BootROM代碼,不可修改

  1. Stage-1 執行FSBL(first boot loader)代碼,用戶可修改。 如果是裸機程序也可以不需要這個階段直接跳到下一階段。
  2. Stage-2 執行用戶裸機程序或者操作系統的啟動引導程序SSBL(second boot loader)

關於BootROM:位於Zynq片內,功能是初始化L1 cache和基本的總線系統,以及從指定的外部存儲器加載Stage-1的FSBL代碼到片內存儲器(OCM)。但是要使Stage-0之后的代碼被Stage-0的BootROM識別,還需要為Stage-0之后的代碼(可能是Stage-1的FSBL,也可能是Stage-2的裸機程序,因為沒有調用BSP函數的裸機程序是可以不需要FSBL的)添加一個頭部,制作成引導鏡像。可以使用SDK的BootGen工具為裸機程序elf文件創建引導鏡像Boot.bin,將其復制到SD卡中,並且設置板子從SD卡啟動就可以執行程序。

使用SDK工具創建SD卡啟動鏡像

BOOT.BIN= f(FSBL.elf+PL.bit+PS.elf)

PL.bit和PS.elf

采用vivado 創建PS工程中生成的PL.bit和PS.elf。

制作FSBL.elf

新建Zynq FSBL工程


等待工程建立完畢,FSBL.elf就在工程文件夾的Debug文件夾下

制作BOOT.BIN

使用SDK的Create Boot Image

選擇好output路徑放置生成的BOOT.BIN和output.bif。依次添加FSBL.elf、PL.bit、PS.elf,FSBL.elf文件的Partition type選擇bootloader,其余兩個文件選擇datafile。最后Create image

啟動

將BOOT.BIN復制到SD卡,設備模式引腳設為SD卡啟動,板子上電之后就可以觀察到程序運行
下圖沒有接usb線,只接了電源線,這是從SD卡啟動了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM