Xilinx_Zynq_QSPI啓動的編譯、燒寫、及配置過程步驟

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啓動:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章