概述一、使用SDK生成设备树文件
1.开发环境设置2.生成设备树 二、使用SDK生成FSBL文件三、交叉编译环境搭建四、编译u-boot、kernel、device-tree五、BOOT.BIN文件生成
1.安装bootgen-xlnx2.生成BOOT.BIN 六、启动开发板七、相关下载连接 概述
一、使用SDK生成设备树文件在Linux系统移植中,设备树文件,FSBL,BOOT.BIN等文件的生成需要依赖Petalinux工具,本文将在不依赖Petalinux工具的情况下移植linux系统。
1.开发环境设置Vivado SDK下即可生成设备树文件,而无需依赖Petalinux工具。
1.首先下载device-tree-xlnx-xilinx-v2018.3.zip。
2.将解压的device-tree-xlnx-xilinx-v2018.3文件夹拷贝到xilinx安装目录下的SDK2018.3dataembeddedswdevicetreebsp文件下,并重命名为device-tree-xlnx_v2018_3。
3.在SDK中打开Xilinx > Repositories,如下图所示:
4.按照如下步骤,在Local Repositories中添加刚才的SDK2017.4dataembeddedswdevicetreebspdevice-tree-xlnx_v2018_3
路径并点击OK。
1.点击菜单File > New > Board Support Package。
2.创建设备树工程。
3.新建工程后会自动编译。pcw.dtsi、pl.dtsi、system-top.dts、zynq-7000.dtsi这四个文件即需要的四个设备树文件。
4.修改system-top.dts为如下内容:
/dts-v1/;#include "zynq-7000.dtsi"#include "pl.dtsi"#include "pcw.dtsi"/ {chosen {bootargs = "earlycon";stdout-path = "serial0:115200n8";};aliases {ethernet0 = &gem0;serial0 = &uart1;spi0 = &qspi;};memory {device_type = "memory";reg = <0x00000000 0x40000000>;};usb_phy0: phy0@e0002000 { compatible = "ulpi-phy"; #phy-cells = <0>; reg = <0xe0002000 0x1000>; view-port = <0x0170>;drv-vbus;};};&gem0 {local-mac-address = [00 0a 35 00 00 00];};&qspi {#address-cells = <1>;#size-cells = <0>;flash0: flash@0 {compatible = "n25q512a","micron,m25p80";reg = <0x0>;#address-cells = <1>;#size-cells = <1>;spi-max-frequency = <50000000>;partition@0x00000000 {label = "boot";reg = <0x00000000 0x00500000>;};partition@0x00500000 {label = "bootenv";reg = <0x00500000 0x00020000>;};partition@0x00520000 {label = "kernel";reg = <0x00520000 0x00a80000>;};partition@0x00fa0000 {label = "spare";reg = <0x00fa0000 0x00000000>;};};};&usb0 {dr_mode = "otg";usb-phy = <&usb_phy0>;};
二、使用SDK生成FSBL文件FSBL文件即zynq启动引导文件,Linux系统所需的FSBL文件与启动zynq裸机时相同,SDK即可创建。
1.点击菜单File > New > Application Project。
2.设置工程名称为FSBL。
3.选择Zynq FSBL。
4.等待工程编译完成后,在/FSBL/Debug目录下会生成FSBL.elf文件。
Petalinux自带arm-linux-gnueabihf-gcc工具,不安装Petalinux则需要单独安装arm-linux-gnueabihf-gcc工具。
1.使用如下命令安装依赖的库:
sudo apt-get install gcc make libncurses5-dev libssl-dev flex bison gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev
2.下载gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz。
3.使用如下命令将gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz解压到/usr/lib/gcc目录下:
sudo tar -xf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz -C /usr/lib/gcc
4.打开用户目录下的.bashrc,在文件最后添加如下内容:
export PATH=/usr/lib/gcc/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin:$PATH
5.打开新的终端或使用如下命令更新环境变量:
source .bashrc
6.使用如下命令查看arm-linux-gnueabihf-gcc是否安装成功:
arm-linux-gnueabihf-gcc -v
命令运行结果如下:
1.按照Linux系统移植中的步骤,添加设备树文件文件到u-boot与kernel源文件中,修改zynq-common.h和zynq_zc70x.h配置文件。
2.进入u-boot源文件目录下运行如下命令配置u-boot,编译源文件:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zynq_zed_defconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j10
3.进入kernel源文件目录运行如下命令配置kernel,编译源文件、设备树文件:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xilinx_zynq_defconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j10make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- system-top.dtb
五、BOOT.BIN文件生成 1.安装bootgen-xlnx使用如下命令安装bootgen-xlnx:
sudo apt-get install bootgen-xlnx
2.生成BOOT.BIN1.新建bootgen.bif并输入如下内容:
//arch = zynq; split = false; format = BINthe_ROM_image:{[bootloader]/home/lgd/work/FSBL/FSBL.elf/home/lgd/work/u-boot/u-boot}
2.使用如下命令创建BOOT.BIN文件:
bootgen -arch zynq -image bootgen.bif -o BOOT.BIN -w on
六、启动开发板 1.将生成的BOOT.BIN文件复制到SD分区1中。
2.将编译生成的zImage文件复制到tftpboot目录下。
3.将编译生成的system-top.dtb复制到tftpboot目录下,并更名为system.dtb。
4.将Vivado工程目录下project.runsimpl_1中的design_1_wrapper.bit文件复制到tftpboot中,并更名为system.bit。
5.继续使用Linux系统移植中解压到/home/lgd/nfs/linux目录下的根文件系统。
6.依据Linux系统移植中启动开发板的步骤即可启动开发板。
device-tree-xlnx-xilinx-v2018.3.zip
gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz