Ubuntu16.04中,使用SDK2017.4的工具链,编译UBOOT,KERNEL等。
(1)
首先在/opt/Xilinx下,安装SDK2017.4.上官网下载vivado SDK 版本2017.4
直接使用指令 (也可以直接右键压缩包解压)
%# tar xvzf xxx(你下载的文件名).tar.gz
进入你解压缩之后的文件夹 然后执行
%# sudo ./xsetup
然后把source /opt/Xilinx/SDK/2017.4/settings64.sh
写入.bashrc。
[1]. 在终端中,打开.bashrc文件
cd ~
sudo gedit ~/.bashrc
[2].在该文件末端,添加:
source /opt/Xilinx/Vivado/2017.4/settings64.sh
(2)编译UBOOT。
下载
从https://github.com/Xilinx,直接下载官方u-boot和kernel(linux-xlnx-master.zip、u-boot-xlnx-master.tar.gz)
定位编译环境
source /opt/Xilinx/SDK/2017.4/settings64.sh
进入u-boot目录
%# cd /home/hlf/mnt/u-boot-xlnx-master
首先配置交叉编译的环境变量:
%# export ARCH=arm
%# export CROSS_COMPILE=arm-linux-gnueabihf-
为确保环境变量导出到TERMINAL成功,最好env以下
%# env
然后生成config文件。
%# make zynq_zed_defconfig
或者
%# make zynq_z_turn_defconfig
然后make。
%# make
注意:如果遇到 fatal error: openssl/evp.h: 没有那个文件或目录。那么ubuntu16.04还没有安装OPENSSL。
$ sudo apt-get install libssl-dev
一路yes,安装完成。
重新执行以上命令。
以下是网友的经验。
在实际使用,需要针对自己的板卡和应用进行一些修改。例如,板卡的名称为zynq_seb。进入u-boot-xlnx/configs文件夹,将zynq_zed_defconfig文件复制一份,并重新命名为zynq_seb_defconfig,该文件用于配置板卡的功能。然后修改该文件的内容。主要是修改板卡名称,其他的部分基本参照xilinx的zed。
然后进入u-boot-xlnx/include/configs,将zynq_common.h复制一份,修改名称为zynq_seb.h。然后修改启动方式。
#define CONFIG_EXTRA_ENV_SETTINGS
“ethaddr=00:0a:35:00:01:22\0”
“kernel_image=uImage\0”
“kernel_load_address=0x2080000\0”
“devicetree_image=devicetree.dtb\0”
“devicetree_load_address=0x2000000\0”
“bitstream_image=fpga.bit\0”
“fdt_high=0x20000000\0”
“initrd_high=0x20000000\0”
"sdboot= mmcinfo && "
"echo - load ${bitstream_image} to PL… && "
"fatload mmc 0 0x200000 ${bitstream_image} && "
"fpga loadb 0 0x200000 ${filesize} && "
"echo - Copying Linux from SD to RAM… && "
"fatload mmc 0 ${kernel_load_address} ${kernel_image} && "
"fatload mmc 0 ${devicetree_load_address} ${devicetree_image} && "
“setenv bootargs console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait &&”
“bootm ${kernel_load_address} - ${devicetree_load_address} \0” \
然后进入u-boot-xlnx/arch/arm/dts,将zynq-zed.dts复制一份,重命名为zynq-seb.dts,在这里直接借用ZED的设备树文件,然后在u-boot-xlnx/arch/arm/dts/Makefile中增加该设备树文件。
修改u-boot-xlnx/arch/arm/mach-zynq/Kconfig文件,增加如下内容:
config TARGET ZYNQ_SEB
bool “Zynq SeBoard”
default “zynq_seb” if TARGET_ZYNQ_SEB
然后编译,使用如下指令:
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- distclean
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_seb_config
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
最后将生成的u-boot拷贝到FSBL文件夹中,并改名为u-boot.elf
(3)编译KERNEL。
待续。