當(dāng)前位置:首頁 > > ZYNQ
	


Zynq-7000AP SOC器件有效利用了片上CPU來幫忙配置,在沒有外部JTAG的情況下,處理系統(tǒng)(PS)與可編程邏輯(PL)都必須依靠PS來完成芯片的初始化配置。 ZYNQ的兩種啟動模式:從BootROM主動啟動,從JTAG被動啟動。
ZYNQ的啟動配置分多級進(jìn)行的。配置至少需要兩步,但通常按如下三個階段進(jìn)行:

階段0:
該階段簡稱為BootROM,控制著整個芯片的初始化過程。放在BootROM中的代碼是固化的,不可修改的,處理器核在上電或者熱啟動時自動執(zhí)行這部分代碼。
階段1:該階段的啟動加載器(FSBL)也可以由用戶代碼控制。

階段2:
這階段通常可以是用戶的PS端的設(shè)計代碼,當(dāng)然也可以是第二階段的啟動加載器(SSBL),這個階段可以完全由用戶控制,是可選的。

ZYNQ外部啟動條件:
1、 電源要求:在階段0 BootROM狀態(tài)時,PS與PL的電源要求如表所示:
在階段1 FSBL時,PS與PL都是必須上電的,因為PL將在這個階段進(jìn)行配置,而PS將負(fù)責(zé)配置的過程。 2、 時鐘要求:必須滿足時鐘 .3、 復(fù)位要求:主要有兩個外部復(fù)位源將影響B(tài)ootROM的執(zhí)行。(電源復(fù)位信號,系統(tǒng)復(fù)位信號) 4、 啟動引腳設(shè)置:需要配置好引腳才能正確啟動平臺。
BootROM 1、 BootROM的作用:上電復(fù)位以后,PS端即開始進(jìn)行配置。在不使用JTAG的情況下,ARM將在片上的BootROM中開始執(zhí)行代碼。BootROM中的代碼對NAND、NOR、Quad-SPI、SD與PCAP的基本外設(shè)控制器進(jìn)行初始化,使得ARM核可以訪問、使用這些外設(shè)。
而DDR等其他外設(shè)將在階段1或者之后進(jìn)行初始化。BootROM中的代碼還負(fù)責(zé)加載階段1的啟動鏡像。 PS的啟動源是由外部模式引腳的高低電平來選擇的,也就是指BootROM將根據(jù)外部配置引腳的設(shè)置來從不同的外部存儲中加載階段1的啟動鏡像,當(dāng)然也支持在線性Flash上直接運行。 需要注意的是PL的配置并不在BootROM中完成,BootROM只為配置PL做好準(zhǔn)備。
FSBL1、 FSBL是在BootROM之后啟動的引導(dǎo)程序。由BootROM加載到OCM或者直接在線性Flash上運行。FSBL主要完成以下工作:
1) 根據(jù)XPS中的配置,完成PS端的初始化。2) 使用比特流文件對PL進(jìn)行配置 .3) 加載第二階段引導(dǎo)程序(SSBL)或者裸跑程序(直接在ARM上運行無操作系統(tǒng)程序)到內(nèi)存空間。 4) 跳轉(zhuǎn)執(zhí)行SSBL或者裸跑程序。 注意:FSBL在跳轉(zhuǎn)到SSBL或者裸跑程序前,并不使能MMU。這是因為許多操作系統(tǒng),例如linux假設(shè)MMU在啟動時是禁用的。 FSBL啟動流程:
需要注意的是在FSBL階段PL的配置不是必須的,可以將zynq平臺當(dāng)做兩個ARM核使用。另外需要注意的是:PL的比特流文件、SSBL、裸跑的應(yīng)用程序等都必須組織成Flash分區(qū)鏡像。FSBL將會遍歷分區(qū)頭表來尋找比特流文件、SSBL、裸跑程序所在的位置,然后進(jìn)行加載或配置。SDK提供了生成flash分區(qū)鏡像的工具。
SSBL 第二階段的啟動加載(SSBL)是可選的。 SSBL的引導(dǎo)程序稱為BootLoader。對于運行在zynq平臺的linux系統(tǒng)而言,U-Boot就是SSBL。在zynq平臺中,F(xiàn)SBL幫助我們加載U-Boot到ARM來運行。U-Boot擁有非常強大的功能,提供了許多用戶指令、讀寫內(nèi)存、flash、USB設(shè)備。U-Boot會幫助我們完成linux內(nèi)核啟動之前所必須的硬件初始化,例如串口、DDR控制器等。
Linux啟動過程: 嵌入式linux從軟件層面考慮可以分為以下四個部分:引導(dǎo)程序(BootLoader)、linux內(nèi)核、文件系統(tǒng)、應(yīng)用程序。 Zynq平臺中的嵌入式linux就是U-Boot,F(xiàn)SBL幫助我們引導(dǎo)U-Boot到內(nèi)存中。
U-Boot將為linux內(nèi)核初始化內(nèi)存和必要的外設(shè),設(shè)置好啟動參數(shù)。在zynq平臺中,采用設(shè)備樹來傳遞驅(qū)動部分的參數(shù),所以U-Boot還將為內(nèi)核拷貝設(shè)備樹鏡像文件到內(nèi)存中。由U-Boot傳遞給內(nèi)核的啟動參數(shù)中通常包含了設(shè)備樹的地址,文件系統(tǒng)的類型、地址等信息。而后U-Boot將把系統(tǒng)控制權(quán)交給linux內(nèi)核。
當(dāng)linux內(nèi)核擁有系統(tǒng)的控制權(quán)后,將先進(jìn)行初始化,建議起內(nèi)核的運行環(huán)境。Linux內(nèi)核在完成了虛擬地址到物理地址映射后,還有就是驅(qū)動設(shè)備初始化與掛載。在zynq平臺中,采用設(shè)備樹的方式傳遞設(shè)備驅(qū)動的信息,如果有為PL中的IP核編寫了驅(qū)動程序,也可以使用模塊化的方式,待linux啟動后再進(jìn)行掛載。
Linux內(nèi)核將根據(jù)U-Boot傳遞過來的參數(shù)信息選擇掛載文件系統(tǒng)的格式與掛載點。最后linux內(nèi)核將運行init()函數(shù),這是內(nèi)核引導(dǎo)的終點,也是系統(tǒng)所有進(jìn)程的起點。 應(yīng)用程序都是放在文件系統(tǒng)中。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉