博主这里的是Ubuntu20.04LTS+Vivado2017.4+ZedBoard
注意:本文使用的环境变量导入方法是临时的,只要退出当前终端或者使用其他终端就会失效,出现异常问题,请随时export环境变量!
Setup0 必要的库
sudo apt install lib32z1 ssl libssl-dev libncurses5 build-essential openjdk-11-jdk u-boot-tools
Setup1 安装Vivado
地址如下:
https://www.cnblogs.com/hanlulu1998/p/14312925.html
Setup2 下载对应版本的u-boot
https://github.com/Xilinx/u-boot-xlnx/releases/tag/xilinx-v2017.4
使用git时请指定标签,否则克隆的是最新的版本
git clone -b xilinx-v2017.4 https://github.com/Xilinx/u-boot-xlnx.git
Setup3 交叉编译器和环境变量配置
新版的SDK自动安装交叉编译器,不需要再自行下载安装,且交叉编译器也更新为arm-linux-gnueabihf-,而不再是arm-xilinx-linux-gnueabi-。
https://www.xilinx.com/html_docs/xilinx2018_3/sdaccel_doc/axl1504034384447.html#gdz1504034401132
进入u-boot文件夹内
cd ~/u-boot-xlnx
查看arm-linux-gnueabihf-gcc版本
arm-linux-gnueabihf-gcc -v
显示没有安装,是因为环境变量没有导入,vivado提供了自动脚本帮助导入。
导入环境变量
source ~/Xilinx/Vivado/2017.4/setting64.sh
arm-linux-gnueabihf-gcc -v
已经导入成功!
Setup4
引入编译的环境变量
export ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
进入u-boot的configs文件夹里查看自己的板子配置文件
这里选择zynq_zed_defconfig
编译配置
make zynq_zed_defconfig
显示成功!
Setup5 最终编译设备树
make
多半会出现以下问题:
The OpenSSL 1.1.x version series undergone some major API changes which made
the RSA structure opaque and deprecated a number of methods, so add some
conditional compat code to make the u-boot source build again.
问题在于OpenSSL新版本的API进行了大的修改导致了这个问题,我们打上补丁即可。
https://github.com/openwrt/openwrt/commit/70b104f98c0657323b28fce140b73a94bf3eb756
进入u-boot下lib/rsa目录,对rsa-sign.c打上补丁
cd ~/u-boot-xlnx/lib/rsa
touch rsa-sign.patch
复制链接中的程序到rsa-sign.patch中
打上补丁:
patch rsa-sign.c rsa-sign.patch
重新编译
make
成功!