Xilinx-ZYNQ7000系列-學習筆記(3):系統復位與啟動
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Xilinx-ZYNQ7000系列-學習筆記(2):私有看門狗(AWDT)的使用筆記
- Xilinx-ZYNQ7000系列-學習筆記(1):用XADC測外部溫度值筆記
- 移動地理資訊系統學習筆記筆記
- ucore作業系統學習筆記(一) ucore lab1系統啟動流程分析作業系統筆記
- XV6學習筆記(1) : 啟動與載入筆記
- Netty學習筆記(五)NioEventLoop啟動Netty筆記OOP
- 分散式系統學習筆記分散式筆記
- Xilinx-ZYNQ7000系列-學習筆記(7):解決ZYNQ IP核自動佈線後會更改原有配置的問題筆記
- jQuery 學習系列筆記jQuery筆記
- mysql學習筆記之備份與恢復MySql筆記
- 數位DP 學習筆記筆記
- 堆溢位學習筆記筆記
- 學習筆記:數位dp筆記
- 【學習筆記】數位DP筆記
- Android學習筆記-Activity的啟動模式Android筆記模式
- SpringBoot系統學習 - 啟動篇Spring Boot
- Java學習筆記系列-反射Java筆記反射
- 推薦系統實踐學習系列(三)推薦系統冷啟動問題
- tensorflow學習筆記3筆記
- Vue學習筆記3Vue筆記
- mysql學習筆記3MySql筆記
- Vue 3 學習筆記Vue筆記
- iOS學習筆記01 APP啟動相關iOS筆記APP
- MySQL與Python的互動學習筆記MySqlPython筆記
- Python 3 學習筆記之類與例項Python筆記
- 作業系統——記憶體管理學習筆記作業系統記憶體筆記
- 學習筆記1熱力學與統計物理筆記
- 架構學習筆記系列三架構筆記
- 架構學習筆記系列二架構筆記
- 架構學習筆記系列一架構筆記
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- Centos學習筆記14 – java程式啟動指令碼CentOS筆記Java指令碼
- docker學習筆記-啟動映象輸入引數Docker筆記
- 你不懂js系列學習筆記-非同步與效能- 02JS筆記非同步
- 你不懂js系列學習筆記-非同步與效能- 05JS筆記非同步
- swift學習筆記《3》-技巧Swift筆記
- Vue3 學習筆記Vue筆記
- docker學習筆記(3)- 映象Docker筆記