Zynq啟動(dòng)配置流程詳解

Zynq的JTAG配置過程

初學(xué) Zynq 的時(shí)候,我相信大家應(yīng)該和我一樣或杠,都是按照慣例打開 Vivado 軟件哪怔,然后實(shí)現(xiàn) Zynq 可編程邏輯硬件部分PL的設(shè)置后,把硬件部署導(dǎo)出向抢,再打開 SDK 進(jìn)行 ARM 核的軟件部分 PS 編程設(shè)計(jì)认境,最后再將硬件比特流文件(.bit)和軟件的可執(zhí)行鏈接文件(.elf)下載到 Zynq 開發(fā)板中,這樣就可以對自己的軟硬件設(shè)計(jì)進(jìn)行調(diào)試和驗(yàn)證挟鸠。這種設(shè)計(jì)方式可以用下面的圖很好的描述:

JTAG下Zynq開發(fā)流程

如上圖所示元暴,這其實(shí)是剛接觸 Zynq 軟硬件設(shè)計(jì)時(shí)需要了解的最基本開發(fā)流程,也是PL和PS設(shè)計(jì)結(jié)合的完美體現(xiàn)兄猩。但是茉盏,上述開發(fā)的過程都有一個(gè)基本的前提,就是 Zynq 開發(fā)板是通過 JTAG 直接與電腦相連枢冤,然后實(shí)現(xiàn)程序的下載鸠姨。從另一個(gè)角度來說,PL和PS的配置都可以認(rèn)為是電腦主機(jī)通過 JTAG 完成的淹真。但是讶迁,在實(shí)際中,Zynq 開發(fā)板不可能實(shí)時(shí)與電腦連接核蘸,當(dāng) JTAG 不起作用時(shí)巍糯,Zynq 芯片是怎樣實(shí)現(xiàn)對自己的配置?這也是本文將要和大家共同討論的問題客扎。

Zynq的啟動(dòng)流程

在無 JTAG 的模式下祟峦,Zynq 是通過片上CPU完成對芯片的配置,也就是PS和PL的配置是通過 PS 處理器 ARM 核來實(shí)現(xiàn)的徙鱼。需要注意的是宅楞,與傳統(tǒng)的 Xilinx 7 系列 FPGA 芯片不同针姿,Zynq 是不支持從 PL 端進(jìn)行直接啟動(dòng)配置的,一定要通過 PS 部分來完成厌衙。

Zynq 的具體啟動(dòng)配置是分級進(jìn)行的距淫,一共可以分為3個(gè)階段,可以用0~2來表示:

  1. Stage 0: BootROM 階段
  2. Stage 1: FSBL (First Stage Boot loader)階段
  3. Stage 2: SSBL (Second Stage Boot loader)階段

熟悉 ARM 開發(fā)的小伙伴應(yīng)該對上面的啟動(dòng)過程感到很熟悉婶希,但又有陌生的地方榕暇。不用急,下面對這三個(gè)階段進(jìn)行詳細(xì)的分析喻杈。

Zynq啟動(dòng)階段0——BootROM

階段0彤枢,又稱為 BootROM 階段。ROM 相信大家都知道奕塑,Read-Only Memory堂污,只讀存儲(chǔ)器的意思家肯;而 Boot 是引導(dǎo)的含義龄砰,所以 BootROM 從字面的意思來看,就是只能去讀取的引導(dǎo)存儲(chǔ)器讨衣。實(shí)際上换棚,BootROM 的作用和它的字面意思完全一樣,就是指 ARM 核在上電之后反镇,需要第一時(shí)間去讀取 BootROM 中固化的程序固蚤,完成對芯片的最初始化的配置。因?yàn)槭侵蛔x的歹茶,所以根據(jù) ROM 的性質(zhì)夕玩,BootROM 中的程序是無法修改的。有的朋友會(huì)問BootROM 這一部分代碼主要完成了對 Zynq 的哪些配置惊豺?

在具體說明 BootROM 進(jìn)行哪些配置之前燎孟,先要描述一下關(guān)于 Zynq 的啟動(dòng)引腳配置。Zynq 擁有5個(gè)可以進(jìn)行配置的 MIO 引腳尸昧,是 MIO[6:2]揩页,在硬件形式上就表現(xiàn)為5個(gè)跳線帽,可以分別接 GND 或 3V3 的高電平烹俗。它們的作用如下:

  • MIO[2] :選擇 JTAG 模式
  • MIO[5:3] :選擇啟動(dòng)方式爆侣,包括 SD 卡,QSPI Flash 等
  • MIO[6] : PLL 使能控制

通過不同的引腳作用說明可以發(fā)現(xiàn)幢妄,當(dāng) JTAG 不起作用是兔仰,就需要通過改變 MIO[5:3] 的連接來實(shí)現(xiàn)從 SD 卡等不同的存儲(chǔ)介質(zhì)啟動(dòng)。

而 BootROM 最重要的作用就是通過讀取 MIO[6:2] 的引腳配置情況蕉鸳,決定從何種介質(zhì)中加載階段1需要使用的啟動(dòng)鏡像斋陪。當(dāng)然在加載之前,BootROM 會(huì)先完成對 SD 卡,NAND无虚,NOR缔赠,QSPI Flash 等的初始化,從而使得ARM 核能夠成功訪問并使用這些外設(shè)友题。BootROM 在完成以上任務(wù)的同時(shí)嗤堰,也會(huì)對安全模式等運(yùn)行模式進(jìn)行配置,這部分博主暫時(shí)不太了解度宦,所以不做過多敘述踢匣。

BootROM 在從外部存儲(chǔ)設(shè)備讀取了啟動(dòng)鏡像后,通常會(huì)把進(jìn)行加載到 OCM 中戈抄。OCM离唬,On Chip Memory,是Zynq 中 ARM 內(nèi)核的片上存儲(chǔ)器划鸽,也叫片上內(nèi)存输莺。自此之后,BootROM 階段的啟動(dòng)任務(wù)就算是圓滿結(jié)束了裸诽,接下來 BootROM 階段就把控制權(quán)轉(zhuǎn)移到了階段1手中嫂用。

  • 注:BootROM 階段不對 PL 進(jìn)行配置


    BootROM

Zynq啟動(dòng)階段1——FSBL

FSBL,(First Stage Boot Loader)丈冬,就是 BootROM 加載到 OCM 中的啟動(dòng)鏡像嘱函。FSBL 完成的任務(wù)是 Zynq 啟動(dòng)過程中的關(guān)鍵一環(huán),可以分為以下4項(xiàng):

  1. 完成 PS 的初始化
  2. 加載 PL 的bit流文件埂蕊,完成 PL 配置
  3. 加載 SSBL 引導(dǎo)程序或是ARM的裸跑程序到 DDR
  4. 跳轉(zhuǎn)執(zhí)行 SSBL 或裸跑程序

FSBL 的任務(wù)如上所示往弓,整個(gè)思路還是非常清晰的。第1步就是對 PS 端初始化蓄氧,包括 DDR函似,MIO 等。第2步就是PL的配置匀们,也就輸傳統(tǒng)的 FPGA 下載 bit 流的過程缴淋,但要注意的是,在 Zynq 的非 JTAG 模式下泄朴,PL 是無法直接自行配置的重抖。第3步是加載 SSBL 或裸跑程序到 DDR 內(nèi)存中,其中 SSBL祖灰,Second Stage Boot Loader钟沛,是在 Zynq 需要運(yùn)行操作系統(tǒng)時(shí)才進(jìn)行加載。而像我們?nèi)腴T學(xué)習(xí)時(shí)做的點(diǎn)亮 LED 燈實(shí)驗(yàn)局扶,就只是屬于裸跑程序恨统。最后第4步叁扫,ARM 會(huì)跳轉(zhuǎn)到 DDR 中執(zhí)行所加載的程序。所以 FSBL 階段的運(yùn)行思路是很好理解的畜埋。


FSBL

Zynq啟動(dòng)階段2——SSBL

SSBL 在 Zynq 的啟動(dòng)過程中是可選的一個(gè)階段莫绣,就像所提到的點(diǎn)亮 LED 實(shí)驗(yàn),包括一些其他的比較小型的程序悠鞍,如果不需要用到操作系統(tǒng)的話对室,那么 Zynq 的啟動(dòng)流程到 FSBL 階段就足夠了。因此咖祭,SSBL 是面向于需要運(yùn)行操作系統(tǒng)的應(yīng)用場合掩宜。相信熟悉操作系統(tǒng)啟動(dòng)知識的朋友到這里應(yīng)該很清楚了,SSBL 就是操作系統(tǒng)在啟動(dòng)過程中的引導(dǎo)程序 boot loader么翰。對于 Linux 而言牺汤,Zynq 的 SSBL 階段和 u-boot 的作用是相同的。具體來說浩嫌,SSBL 的作用就是將 Zynq 所需要的操作系統(tǒng)加載到 DDR 內(nèi)存之中檐迟。

SSBL

到此,Zynq 的啟動(dòng)與配置就算完成了固该。Zynq 啟動(dòng)過程其實(shí)與傳統(tǒng)的 ARM 開發(fā)過程類似锅减,區(qū)別就在于它是PS + PL 的架構(gòu)糖儡,所以在啟動(dòng)過程中伐坏,額外需要加載二進(jìn)制 bit 流文件。Xilinx 將 Zynq 的啟動(dòng)劃分為3個(gè)階段握联,從結(jié)構(gòu)上看也是科學(xué)合理的桦沉。

總結(jié)

本文主要與大家分享了 Zynq 在非 JTAG 模式下的啟動(dòng)配置流程,旨在讓大家對 Zynq 的三階段啟動(dòng)模式有一個(gè)具體的認(rèn)識金闽,希望大家多多交流纯露。

感謝大家支持!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末代芜,一起剝皮案震驚了整個(gè)濱河市埠褪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌挤庇,老刑警劉巖钞速,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嫡秕,居然都是意外死亡渴语,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門昆咽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驾凶,“玉大人牙甫,你說我怎么就攤上這事〉魑ィ” “怎么了窟哺?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長技肩。 經(jīng)常有香客問我脏答,道長,這世上最難降的妖魔是什么亩鬼? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任殖告,我火速辦了婚禮,結(jié)果婚禮上雳锋,老公的妹妹穿的比我還像新娘黄绩。我一直安慰自己,他們只是感情好玷过,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布爽丹。 她就那樣靜靜地躺著,像睡著了一般辛蚊。 火紅的嫁衣襯著肌膚如雪粤蝎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天袋马,我揣著相機(jī)與錄音初澎,去河邊找鬼。 笑死虑凛,一個(gè)胖子當(dāng)著我的面吹牛碑宴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桑谍,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼延柠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锣披?” 一聲冷哼從身側(cè)響起贞间,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雹仿,沒想到半個(gè)月后增热,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盅粪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年钓葫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片票顾。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡础浮,死狀恐怖帆调,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情豆同,我是刑警寧澤番刊,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站影锈,受9級特大地震影響芹务,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸭廷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一枣抱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辆床,春花似錦佳晶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咨堤,卻和暖如春菇篡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背一喘。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工驱还, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人津滞。 一個(gè)月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓铝侵,卻偏偏與公主長得像灼伤,于是被迫代替她去往敵國和親触徐。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349