|
開發(fā)環(huán)境說明
表 1
開發(fā)板型號
| 是否支持本實(shí)驗(yàn)
| TLZ7x-EasyEVM
| 支持
| TLZ7xH-EVM
| 支持
|
本文以TLZ7x-EasyEVM開發(fā)板為例,核心板SoC芯片型號為XC7Z020,演示使用SD卡啟動Zynq裸機(jī)程序的方法。
基于SD卡啟動的裸機(jī)程序主要包含兩類,一是ARM(PS端)+FPGA(PL端)的All-Programmable-SoC-demos例程,二是純PS(不依賴PL端)的Baremetal(NoOS)裸機(jī)例程。兩類裸機(jī)程序的運(yùn)行都需要依賴FSBL的BOOT.BIN文件和U-Boot的u-boot.bin文件引導(dǎo),主要區(qū)別在于Baremetal(NoOS)裸機(jī)例程不包含PL端xxx.bin程序。
從SD卡啟動SoC裸機(jī)程序說明分別參照《基于TcL腳本生成Vivado工程及編譯》、《基于TcL腳本生成xsdk工程及編譯》文檔,編譯All-Programmable-SoC-demos例程。
將SD存儲卡格式化為FAT32格式,或者直接使用SD系統(tǒng)啟動卡的boot分區(qū),SD系統(tǒng)啟動卡boot分區(qū)即為FAT32格式。將PS端的xxx.elf程序和PL端xxx.bin程序復(fù)制到SD卡,另外將BOOT.BIN和u-boot.bin兩個(gè)文件也添加復(fù)制到SD卡。
以光盤"All-Programmable-SoC-demos\tl-axi-gpio-led-demo"例程為例,PS端程序?yàn)?quot;tl-axi-gpio-led-demo\sw\axi_gpio_baremetal_demo\bin\axi_gpio.elf",PL端程序?yàn)?quot;tl-axi-gpio-led-demo\hw\bin\axi_gpio_xc7z020.bin"。
表 2
對應(yīng)文件名
| 職責(zé)說明
| FSBL\image\embeddedsw-[Git系列號]-[版本號\BOOT.BIN
| 初始化DDR等外設(shè),加載U-Boot鏡像文件
| U-Boot\U-Boot-2017.01\image\u-boot.bin
| 加載運(yùn)行裸機(jī)程序
| xxx.elf
| PS端裸機(jī)程序
| xxx.bin
| PL端程序,SoC例程依賴此文件
|
​
圖 1
設(shè)置u-boot環(huán)境變量將開發(fā)板撥碼開關(guān)撥到101001(1~6),此模式為SD卡啟動模式。開發(fā)板上電啟動,快速按任意鍵進(jìn)入U(xiǎn)-Boot命令行修改環(huán)境變量。
​
圖 2
在U-Boot命令行下執(zhí)行如下指令,設(shè)置需要加載的PL端xxx.bin程序,PL端程序名應(yīng)根據(jù)實(shí)際情況修改,如果是Baremetal(NoOS)例程則無需執(zhí)行此命令。
Uboot# setenv bitstream_image axi_gpio_xc7z020.bin
執(zhí)行如下指令,設(shè)置需要加載的PS端xxx.elf程序,PS端程序名應(yīng)根據(jù)實(shí)際情況修改。
Uboot# setenv app_image axi_gpio.elf
執(zhí)行如下指令設(shè)置啟動方式為appboot,并保存設(shè)置好的環(huán)境變量。
Uboot# setenv sdboot 'run appboot'
Uboot# saveenv
​
圖 3
從SD卡啟動裸機(jī)程序開發(fā)板斷電,重新上電啟動后,調(diào)試終端打印信息如下圖所示。打印"## Starting application at 0x00100000 ..."信息后,開發(fā)板開始運(yùn)行裸機(jī)程序。本次操作運(yùn)行的是tl-axi-gpio-led-demo的裸機(jī)程序,運(yùn)行程序后會打印"AXI GPIO TEST",并且可以看到底板的LED2在閃爍。
​
圖 4
恢復(fù)U-Boot環(huán)境變量經(jīng)過前面步驟修改過環(huán)境變量后,U-Boot啟動時(shí)將會讀取相應(yīng)的裸機(jī)程序。如需正常啟動Linux系統(tǒng),在U-Boot命令行下執(zhí)行如下指令恢復(fù)默認(rèn)的環(huán)境變量。
Uboot# env default -a
Uboot# saveenv
​
圖 5
|
|