Zedboard上執行Linaro系統(二):生成BOOT.BIN
製作Linaro系統所需要的檔案:
1.u-boot.elf (Linux boot loader)
2.SDK生成的FSBL(first stage boot loader)
3.linux核心映像檔案
4.命名為devicetree.dtb的裝置樹檔案
5.Linaro檔案系統
轉載請註明,原作者:雅可 ,文章地址:http://blog.csdn.net/yake827/article/details/51980181
生成BOOT.BIN
映像檔案BOOT.BIN一般包括:FSBL,Bitstream和SSBL這三個檔案,其中Bitstream是配置PL端程式,是可選項,在我們製作Linaro系統的時候並不需要。FSBL是first stage boot loader,檔案的製作需要使用Vivado環境;SSBL是Second Stage Boot Loader,這裡使用的是Xilinx公司提供的u-boot。
1.FSBL的製作
一、搭建軟硬體環境
硬體的環境搭建其實就是建立一個最簡單的Vivado專案。首先開啟Vivado 2015.2,選擇Zedboard,完成建立嚮導,最後進入如下介面
先建立一個Block Design,在本文中定義為ststem,完成後在Diagram檢視中點選Add IP,在彈出的視窗中輸入Zynq進行搜尋,在結果中選擇第一個ZYNQ7 Processing System,點選Run BlockAutomation完成自動連線,介面如下:
接下來我們取消一些不需要的部分。
首先雙擊ZYNQ進行自定義配置,首先點選Clock Configuration,展開PL Fabric Clocks,取消FCLK_CLK0。
取消之後Diagram中的FCLK_CLK0會消失。
另外,我們要取消如下引腳
對於TTC,我們點選如下部分,取消掉TTC
點選上圖的紅框部分,進入如下介面
對於AXI GP0,我們點選如下紅框部分
取消掉AXI GP0 interface。
用同樣的方法取消QSPI,ENET0。點選OK完成,結果如下所示
回到Block Design的sources檢視,在System上右鍵選擇Create HDL Wrapper。完成後點選左邊Flow Navigator中的Generate BitStream。等待Vivado完成綜合、實現、生成bitstream。
點選File->Export->ExportHardware
在SDK中點選選單File->New->Application Project。專案名fsbl(可以更改),OS平臺standalone,語言為C,點選Next,Templates選項選擇ZynqFSBL。
點選Finish,SDK會自動編譯FSBL程式碼,並在工程Debug下生成fsbl.elf目標檔案,如下圖所示
至此,FSBL的編寫工作完成,接下來開始做u-boot的編寫。
2.編譯U-boot
u-boot採用的是xilinx官方提供的u-boot包來生成的,步驟如下:
1.獲取u-boot程式碼
$ git clonehttps://github.com/Xilinx/u-boot-xlnx.git
$ cd u-boot-xlnx
2.為了使專案更容易管理,統一採用的是xilinx-v2015.2這個版本
$ git checkout -bxilinx-v15.2
3.確保我們的ARM編譯器已經在我們的環境變數中,設定交叉編譯器字首
$ exportCROSS_COMPILE=arm-xilinx-linux-gnueabi-
4.更改include/configs/zynq_common.h中的資料,讓我們的u-boot在啟動的時候不會試圖去載入ramdisk image。
"sdboot=if mmcinfo; then " \
"run uenvboot; "\
"echo Copying Linuxfrom SD to RAM... && " \
"load mmc 0${kernel_load_address} ${kernel_image} && " \
"load mmc 0${devicetree_load_address} ${devicetree_image} && " \
"bootm${kernel_load_address} - ${devicetree_load_address} ; " \
其中’-’的作用就是告訴u-boot和核心沒有ramdisk檔案系統,所以在啟動的時候就不會載入它。
5.載入zedboard配置檔案
$ exportPATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/:$PATH
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zed_config
6.編譯u-boot
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
7.將得到的可執行檔案u-boot更改為xilinx SDK可以識別的格式
$mv u-bootu-boot.elf
3.製作BOOT.BIN
在得到u-boot.elf和FSBL之後,我們就可以來製作BOOT.BIN,方法如下:
1. 開啟xilinx SDK2015.2
2. 點選選單Xilinx Tools > Create Zynq Boot Image
3. 首先設定BIF檔案路徑。BIF檔案用於指定當前boot.bin製作過程中用到的三個檔案的路徑,相當於一個專案配置檔案。
4. 設定好後我們先按順序新增三個檔案,顯示FSBL檔案
FSBL的在彈出對話方塊中的Partition type是bootloader,而bitstream(如果有)和uboot都是datafile。此處一定要注意,否則會出現問題。新增正確的話,修改輸出路徑中檔名為boot.bin(也可以不修改)
點選Create Image建立boot.bin,成功的話會在輸出路徑生成相應檔案。