Xilinx_Zynq_QSPI啓動的編譯、燒寫、及配置過程步驟
一、 交叉編譯器:
使用xilinx提供的編譯器arm-xilinx-linux-gnueabi- Version 4.6.1版本。
1. 添加交叉編譯器的環境變量:
打開~/.bashrc文件,在最後添加兩行(按實際情況添加具體路徑)
export PATH=$PATH:~/xillinx/xilinx/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
保存推出,並使其立即生效: source ~/.bashrc
2. 檢驗交叉編譯器安裝是否成功:
在終端輸入arm-xilinx-linux-gnueabi-gcc –v 察看版本號;
說明安裝成功。
二、 U-boot相關:
使用從xilinx viki 上下載的u-boot-xilnx-xilinx-v2014.4.tar.gz版本。
1. 將u-boot解壓,並進入到解壓目錄下。
tar –jxvf u-boot-xilnx-xilinx-v2014.4.tar.gz
cd u-boot-xilnx-xilinx-v2014.4
2. 配置u-boot
將u-boot配置SDRAM大小爲 512M大小,添加QSPI支持。
vi u-boot-xilnx-xilinx-v2014.4/include/configs/zynq_zed.h
添加以下宏,之後保存退出。
3. 編譯u-boot
如果第一步配置好了環境變量,直接執行:
make distclean
make zynq_zed_config
make
編譯完成後,生成ELF格式的u-boot文件,將其重命名爲”u-boot.elf”。
並注意生成mkconfig可執行文件,製作文件系統時會用到。
4. 製作BOOT.bin文件:
使用xilinx SDK 製作BOOT.Bin。(具體察看手冊《Z-turn Board 可編程邏輯開發手冊.pdf》第三章)。
三、內核kernel相關:
使用xilinx viki 上下載的linux-xlnx-xilinx-v2014.4.tar.gz 版本。
1. 將kernel解壓,濱進入到解壓目錄下。
tar –jxvf linux-xlnx-xilinx-v2014.4.tar.gz
cd linux-xlnx-xilinx-v2014.4
2. 編譯kernel
如果第一步配置好了環境變量,直接執行:
make distclean
make zynq_zed_config
make
編譯完成後,在 arch/arm/boot 下生成uImage。
在arch/arm/boot/dts 目錄下生成zynq_zed.dts設備樹文件。
四、設備樹device tree相關:
使用編譯kernel時候生成的zynq_zed.dts進行編譯設備樹文件 zynq_zed.dtb。
1. 配置dtc的環境變量
在kernel/scripts/dtc/下有dtc命令文件,使用這個命令可以生成.dtb文件。
打開~/.bashrc文件,在最後添加:(按實際情況添加具體路徑)
export PATH=$PATH:~/xillinx/linux-xlnx-xilinx-v2014.4/scripts/dtc
2. 按需要改寫.dts文件
本例希望在QSPI內進行如下分區,共五個分區,如圖:
保存退出。
3. 生成.dtb文件
在arch/arm/boot/dts目錄下
命令:dtc –I dts –O dtb –o devicetree.dtb zynq_zed.dts
生成devicetree.dtb文件。
五、文件系統ramdisk
六、 按照zynq_zed.dts中的分區,燒寫BOOT.bin 、devicrtree.dtb、uImage、ramdisk:
1. 首先使用SD卡啓動,進入u-boot命令行;
2. 開啓TFTP服務器,使用tftp將BOOT.bin通過網絡燒寫道qspi的0x0地址:
tftp 0x800000 BOOT.bin //加載到內存
sf probe 0 0 0
sf erase 0x0 0x100000 //擦除1M空間
sf write 0x800000 0x0 0x100000 //寫入qspi
3. 燒寫 uImage
tftp 0x800000 uImage
sf erase 0x100000 0x600000
sf write 0x800000 0x100000 0x600000
4. 燒寫 devicetree.dtb
tftp 0x800000
sf erase 0x700000 0x100000
sf write 0x800000 0x700000 0x100000
5. 燒寫 ramdisk
tftp 0x4000000 ramdisk
sf erase 800000 1200000
sf write 0x4000000 800000 1200000
6. 燒寫 fpga生成的 Micron_only_flash.bit程序
tftp 0x4000000 Micron_only_flash.bit
sf erase 1A00000 500000
sf write 0x8000000 1A00000 500000
七、 設置u-boot參數及啓動方式:
將板卡啓動方式改爲qspi啓動;
進入u-boot命令行:
輸入命令:
setenv bootcmd 'sf probe 0 0 0 && echo qspi-bitstream is loading ... ... && sf read 0x800000 0x1A00000 0x500000 && fpga loadb 0 0x800000 0x400000 && echo uIamge is loading ... ... && sf read 0x2080000 0x100000 0x600000 &&echo deviceTree is loading ... ... && sf read 0x2000000 0x700000 0x100000 && echo ramdisk.image is loading ... ... && sf read 0x4000000 0x800000 0x1200000 && bootm 0x2080000 0x4000000 0x2000000'
saveenv
八、 重啓板卡,順利從qspi啓動: