玩轉Zynq連載29——[ex51] 制作裸跑程序的啟動文件BOOT.bin 更多資料共享 騰訊微云鏈接:https://share.weiyun.com/5s6bA0s 百度網盤鏈接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw 提取碼:ld9c 騰訊微云鏈接:https://share.weiyun.com/5s6bA0s 百度網盤鏈接:https://pan.baidu.com/s/1XTQtP5LZAedkCwQtllAEyw 提取碼:ld9c 對于Zynq的裸跑程序加載,比linux的SD卡啟動文件制作要簡單得多。 只需要在FAT32格式化后的SD卡中放置一個BOOT.bin文件即可。如圖所示,BOOT.bin中需要包含2~3個文件,對Zynq部分外設初始化并搬運下一階段代碼和配置PL的fsbl.elf文件、PL的配置比特流文件(.bit)、用戶裸跑程序(.elf)。如果用戶只是在Zynq的Cortex A9上跑程序,無需使用PL做任何工作,那么PL的配置文件.bit也可以免了。
在Zynq上電后,BootROM率先工作,加載BOOT.bin中的FSBL,FSBL初始化一些必要的外設,如SDIO外設,用于SD卡的讀寫;FSBL也可以將PL的配置比特流.bit文件加載到PL中啟動PL的邏輯運行,隨后加載用戶裸跑程序(通常是elf后綴的文件),裸跑程序隨后就在DDR3中運行起來。 這里,我們來實際操作一把,使用fsbl.elf、.bit和用戶裸跑程序(.elf)這3個文件產生BOOT.bin文件。 為了更好的理解Zynq的啟動原理,建議參考文檔《玩轉Zynq-基礎篇:Zynq的啟動過程.pdf》。 參考文檔《玩轉Zynq-工具篇:導出PS硬件配置和新建SDK工程》。 打開EDK后,在Project Explorer中,出現了名為zstar_zynq_ps_wrapper_hw_platform_0的文件夾,下面的一些文件都是前面Export Hardware產生的PS硬件配置信息以及系統初始化代碼。
在打開的SDK中,點擊菜單File --> New --> Application Project,新建一個應用工程。
彈出的New Project中,輸入Project name(這里命名為fsbl_project)。對應的Hardware Platform必須是前面Export Hardware所對應的PL工程。然后點擊Next。
選擇Avaliable Templates為Zynq FSBL。點擊Finish。
再次點擊菜單File --> New --> Application Project,新建一個應用工程。
工程名(Project name)命名為HelloWorld,操作系統(OS Platform)選擇standalone,硬件平臺(Hardware Platform)選擇zstar_zynq_ps_wrapper_platform_0,點擊Next。
Templates頁面中,選擇Hello World工程模板。點擊Finish完成工程創建。
新建HelloWorld工程出現在Project Explorer中,展開HelloWorld-->src,打開helloworld.c源文件,修改源碼,實現每隔2s通過UART打印一串帶計數值的Hello World!信息。
保存修改后的helloworld.c源文件,SDK會自動編譯并生成新的HelloWorld.elf文件。
展開Project Explorer中新建好的fsbl_project工程,找到Binaries下的fsbl_project.elf文件。選中fsbl_project.elf文件,右鍵單擊后,點擊Copy選項。Paste到專門新建的sd_image文件夾下。
展開HelloWorld工程,找到Binaries下的HelloWorld.elf文件。選中HelloWorld.elf文件,右鍵單擊后,點擊Copy選項。也Paste到sd_image文件夾下。
打開...\zstar.sdk\zstar_zynq_ps_wrapper_hw_platform_0文件夾,把PL配置文件zstar_zynq_ps_wrapper.bit也復制到sd_image文件夾下。
生成裸跑程序的啟動文件BOOT.bin所必須的3個文件齊聚在sd_image文件夾下。
點擊SDK的菜單Xilinx -->Create Boot Image。
彈出的Create Boot Image對話框中,設定Output BIF file path到sd_image文件夾下,產生output.bif文件到該文件夾。然后依次點擊Boot image partitions按鈕加載fsbl_project.elf、zstar_zynq_ps_wrapper.bit和HelloWorld.elf文件。
特別需要注意的是,fsbl_project.elf的文件Partition type選擇bootloader,而zstar_zynq_ps_wrapper.bit和HelloWorld.elf文件則選擇datafile。點擊Boot image partitions右側Add菜單,分別加載這3個文件。
完成設定后,如圖所示,點擊Create Image按鈕。
在sd_image文件夾下,出現了新產生的BOOT.bin文件。 將Micro SD卡通過讀卡器插入PC中,用FAT32進行格式化。然后將生產的BOOT.bin文件拷貝到Micro SD卡中。 將Micro SD卡插入Zstar板的SD卡槽中。 在Zstar板子上,設置跳線帽P3為SD BOOT模式,即PIN1-2短接。 連接好串口線(USB線連接PC的USB端口和Zstar板的UART接口)和Xilinx下載線(下載器連接PC的USB端口和Zstar板的JTAG插座)。使用5V電源給板子供電。 打開串口調試助手PuTTY,正確設置端口號和波特率。
接著我們就能看到PuTTY上不停的打印帶數據遞增的Hello World字符串了。 |