Xilinx-ZYNQ7000系列-學習筆記(3):系統復位與啟動

qwer1030274531發表於2020-11-18

Xilinx-ZYNQ7000系列-學習筆記(3):系統復位與啟動

一、復位

ZYNQ-7000 SoC系統中的復位可以由硬體、看門狗定時器、JTAG控制器或軟體產生,可用於驅動系統中每個模組的復位訊號。其中,硬體復位由上電覆位訊號PS_POR_B和系統復位訊號PS_SRST_B驅動。在PS中,有3個看門狗定時器可用來產生復位訊號;JTAG控制器產生的復位訊號可產生系統級復位訊號,或者只用於復位PS的除錯部分;軟體復位訊號可用於單獨子模組的復位,或者產生系統級的復位訊號。

復位系統是器件安全系統的一比分,它執行三段式的復位序列: 上電——清除記憶體——系統使能

完整的復位流程圖如下圖所示。前兩步被外部系統所控制,知道POR有效時,PS的邏輯才開始執行,此時就可以產生任何型別的復位訊號了;POR訊號可以被非同步地開啟或者停止。
在這裡插入圖片描述
在BootROM開始執行之前,硬體會向所有內部RAM的地址寫0以清除它們的資料。

二、啟動與配置ZYNQ7000中的復位訊號以及它們所產生的效果如下圖所以,詳細內容請參考相關資料手冊。
在這裡插入圖片描述

2.1 PS的啟動過程

ZYNQ7000的啟動模式分為兩種:使用靜態儲存器(NAND、並行NOR、序列NOR(QSPI)和SD卡)的安全啟動模式,需要禁用JTAG;使用JTAG或靜態儲存器的非安全模式。其中JTAG模式主要在功能開發和除錯階段使用。

PS的啟動分為兩個必選階段和一個可選階段。
(1)階段0: BootROM。從內部的BootROM中讀取儲存的啟動程式碼,用於配置ARM處理器和必需的外設,然後從啟動裝置讀取第一階段Bootloader(FSBL)程式碼。BootROM並不會配置和初始化PL,也不會使能DDR和SCU。
(2)階段1: FSBL。FSBL啟動程式碼包含了PS外設的初始化資訊,它通常儲存在Flash中,也可透過JTAG下載到晶片中。BootROM程式碼把FSBL程式碼複製到OCM中,其中從FSBL載入到OCM中的程式碼在192KB以內。在FSBL開始執行之後,其全部的256KB程式碼才全部可用。在QSPI較小的情況下,可以只把FSBL儲存到QSP中,而把其他啟動分割槽存放在更大空間的Flash然後使用eMMC模式進行啟動。

  • FSBL可以在SDK中配置生成。
  • 由於PS可以獨立於PL而獨立執行,如果提供了位元流檔案,則FSBL可完成PL的配置。
  • 如果存在階段2的啟動程式碼,則FSBL執行完畢之後會載入它。
  • 如果不存在作業系統,則FSBL執行完畢之後會把相應裸機環境中的程式碼載入到DDR記憶體中。

(3)階段2: 可選階段。使用者可以自定義一些啟動程式碼,例如U-BOOT等。

BootROM啟動流程: 在這裡插入圖片描述
FSBL啟動: hefei/ 在這裡插入圖片描述

2.2 PL的啟動過程

PL的啟動過程如下:
(1)啟動:給PL上電。
(2)初始化:透過PS或者INIT/PROG引腳。
(3)配置:透過PS AXI-PCAP、JTAG或者PL ICAP。
(4)使能PS到PL的介面:透過PS。
PL啟動過程與PS啟動的對應關係如下圖。
在這裡插入圖片描述
zedboard的啟動方式選擇
在這裡插入圖片描述

三、總結

大多數的ARM都是這個啟動過程。

  • 階段0:即傳統的 BootROM 過程, zynq 晶片裡有個 rom 裡面固化了一段不可修改的程式, 只有 zynq 一上電, 這段程式就會執行, 它將初始化CPU和 NAND、 NOR、 SD卡等基本外設。初始化好,BootROM讀取儲存器中的程式程式碼,並將FSBL複製到OCM(On-chip memory)裡 , 這個被複製到片上 RAM 執行的程式就來自於我們要製作的檔案——BOOT.bin。
  • 階段1:第一階段載入程式(First Stage Boot Loader,FSBL)啟動,BOOT.bin開始執行:首先繼續配置PS,PS初始化好後,再配置PL,最後還可以載入階段2的程式碼。
  • 階段2:開始執行PS端程式碼,也可以是第二階段載入程式(Second Stage Boot Loader,SSBL)。完全在使用者的控制之下,是可選的。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2734957/,如需轉載,請註明出處,否則將追究法律責任。

相關文章