ZYNQ開發之BootROM載入

2021-10-18 10:32:51 字數 1390 閱讀 4261

1、概述

\quad

當完成系統復位後開始執行配置程式。cpu0執行bootrom程式,cpu1休眠等待cpu0喚醒。在執行bootrom程式時dap和tap jtag控制器禁用。ddr控制器及其它外設不會被bootrom程式初始化。

\quad

pl的啟動和初始化序列可以與ps啟動同時進行,也可以在啟動之後進行。如果bootrom需要啟動pl,然後在bootrom執行的早期,bootrom將寫入devcfg.ctrl [pcfg_prog_b]位,在開始執行bootrom之前一直等待devcfg.status[pcfg_init]狀態位的宣告。

\quad

為了pcap授權和映象解碼,pl端需要供電。bootrom在訪問pl端資源之前設定了90s超時定時器測試pl狀態。在引導過程中,program_b裝置引腳必須保持為高。在引導過程中將program_b裝置引腳保持在低位會導致裝置鎖定事件。

\quad

在等待pl啟動階段,寫pl暫存器,清除pl配置記憶體,重新初始化pl配置記憶體,定時監測pl狀態暫存器,如果在90s內完成了pl啟動初始化就繼續執行 bootrom程式,否則將系統鎖存在安全模式(不會提供錯誤**)。

2、bootrom流程圖

3、bootrom header搜尋

\quad

bootrom讀取bootrom header並且執行兩次校驗驗證header是否正確,如果不正確就將位址增加32kb重複讀取校驗。bootrom header中可包含暫存器初始化引數用於優化fsbl/user code拷貝到ocm的效能,或者路由**到pl的解密單元中。

4、apu初始化

\quad

bootrom配置apu和mio多路復用器來支援引導過程。每個引導模式的mio引腳狀態都在**中描述。bootrom使用cpu 0來執行rom**。cpu 1執行wfe(wait for enable)指令。bootrom配置mmu和其他系統資源,以滿足bootrom執行的需要。

5、bootrom後apu和ocm狀態

1)mmu,icache,dcache,l2 cache禁用

2)兩個處理器處於監管狀態

3)rom**不可訪問

4)ocm記憶體的192kb從位址0x0000_0000開始可以被訪問,ocm的高64kb從位址0xffff_0000開始可以被訪問

5)如果沒有發生錯誤cpu0將執行引導映象的階段1

6)cpu1處在wfe狀態直到執行位址段0xffff_fe00到0xffff_fff0的**

6、bootrom階段記憶體對映

ZYNQ 開發流程

zynq 的開發也是先硬體後軟體的方法。具體流程如下 1 在 vivado 上新建工程,增加乙個嵌入式的原始檔。2 在 vivado 裡新增和配置 ps 和 pl 部分基本的外設,或需要新增自定義的外設。3 在 vivado 裡生成頂層 hdl 檔案,並新增約束檔案。再編譯生成位元流檔案 bit 4...

生成zynq 跟我制訂乙份zynq開發步驟

學習zynq,並非一朝一夕之事,欲速則不達,在學習zynq之前,首先做好堅持下去的決心,其次制定乙份適合自己的zynq開發計畫,本期幫大家制定乙份zynq的開發計畫。zynq開發,主要包括兩部分 裸機使用和在arm上搭載linux系統。首先是裸機使用,裸機使用可分為三個階段。1 第一階段 熟悉viv...

ZYNQ開發(一) PS裸奔hello

zynq開發 一 ps裸奔hello world 工具 vivado 2015.4 步驟 1 開啟vivado建立乙個新的工程,選擇工程資料夾存放目錄,填寫工程的名字。2 選擇器件,我的是xc7z010clg400 1根據嚮導一直next。二 ip integrator 1,建立空的block de...