Xilinx ZCU102板卡本地源码系统构建和移植-记录文档
README
1. 本文档为记录 Xilinx ZCU102 开发板 使用petalinux工具链编译移植linux系统的过程,在编译过程中,均使用本地的源码编译,以保证编译出来的系统稳定和版本稳定,以便后续的产品输出。
一.文件说明
1. ubuntu-20.04.3-desktop-amd64.iso ubuntu镜像文件
2. petalinux-v2021.2-final-installer.run petalinux开发环境搭建安装文件
3. sstate_aarch64_2021.2.tar.gz petalinux开发依赖文件
4. downloads_2021.2.tar.gz petalinux开发依赖文件
依赖文件链接:
petalinux-v2021.2-final-installer.run
sstate_aarch64_2021.2.tar.gz
downloads_2021.2.tar.gz
二.开发环境搭建
1. 虚拟机安装ubuntu20.04系统
1.1 硬件板卡如下:
1.2 安装过程请自行查找网络教程
2. ubuntu20.04系统安装后预先做的事情
2.1 更换国内更新源
ubuntu@ubuntu:~$ sudo mv /etc/apt/sources.list /etc/apt/sources.list_back 更新源文件备份
ubuntu@ubuntu:~$ sudo vi /etc/apt/sources.list 打开更新源文件并写入
# 中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
保存退出
ubuntu@ubuntu:~$ sudo apt-get update
2.2 安装软件和依赖库等
ubuntu@ubuntu:~$ sudo apt-get install vim
ubuntu@ubuntu:~$ sudo apt-get install build-essential tofrodos iproute2 gawk xvfb gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev libssl-dev screen pax gzip zlib1g:i386
ubuntu@ubuntu:~$ sudo apt-get install python2
ubuntu@ubuntu:~$ sudo apt-get install libtinfo5
2.3 修改系统使用bash
ubuntu@ubuntu:~$ sudo dpkg-reconfigure dash
进入界面选择 n, 保存退出, 系统切换使用bash
3. 搭建petallinux开发环境
3.1 创建工具链安装路径
ubuntu@ubuntu:~$ sudo mkdir -p /tools/Xilinx/petalinux/2021.2
3.2 修改工具链目录的权限
ubuntu@ubuntu:~$ sudo chown ubuntu:ubuntu /tools/Xilinx/petalinux/2021.2
3.3 安装工具链
ubuntu@ubuntu:/tools/Xilinx/petalinux/2021.2$ /mnt/shared/petalinux-v2021.2-final-installer.run
注意: 这里的安装包是放在win下的共享目录中的,所以执行的时候加了/mnt/shared目录
petalinux在运行安装时,默认的安装是所在的目录,也就是要先 cd 到 /tools/Xilinx/petalinux/2021.2 目录下
执行过程如下图片:
查看安装目录如下:
3.4 安装工具链所依赖的官方文件
ubuntu@ubuntu:~$ sudo mkdir -p /tools/Xilinx/petalinux_lib/2021.2
ubuntu@ubuntu:~$ sudo chown ubuntu:ubuntu /tools/Xilinx/petalinux_lib/2021.2
ubuntu@ubuntu:/tools/Xilinx/petalinux_lib/2021.2$ tar -zxvf /mnt/shared/sstate_aarch64_2021.2.tar.gz
ubuntu@ubuntu:/tools/Xilinx/petalinux_lib/2021.2$ tar -zxvf /mnt/shared/downloads_2021.2.tar.gz
注意: 由于压缩包太大,直接使用共享文件夹,直接从win目录解压到ubuntu系统中
3.5 下载官方程序源码 (包括官方的 u-boot,kernel 等)
ubuntu@ubuntu:~/workspace$ mkdir source_code
ubuntu@ubuntu:~/workspace$ cd source_code
ubuntu@ubuntu:~/workspace/source_code$ touch git_code.sh
ubuntu@ubuntu:~/workspace/source_code$ chmod 777 git_code.sh
执行 get_code.sh 脚本获取源码文件
git_code.sh 文件内容如下:
#!/bin/bash
project_path="`pwd`"
function git_code() {
cd ${project_path}
if [ ! -d "./linux-xlnx" ]; then
git clone https://github.com/Xilinx/linux-xlnx.git
fi
if [ ! -d "./u-boot-xlnx" ]; then
git clone https://github.com/Xilinx/u-boot-xlnx.git
fi
if [ ! -d "./device-tree-xlnx" ]; then
git clone https://github.com/Xilinx/device-tree-xlnx.git
fi
if [ ! -d "./dtc" ]; then
git clone https://git.kernel.org/pub/scm/utils/dtc/dtc.git
fi
if [ ! -d "./arm-trusted-firmware" ]; then
git clone https://github.com/Xilinx/arm-trusted-firmware.git
fi
if [ ! -d "./xen" ]; then
git clone https://github.com/Xilinx/xen.git
fi
if [ ! -d "./embeddedsw" ]; then
git clone https://github.com/Xilinx/embeddedsw.git
fi
cd -
}
function cfg_code_version(){
cd ${project_path}
if [ -d "./linux-xlnx" ]; then
cd ./linux-xlnx
git checkout xlnx_rebase_v5.10_2021.2
git branch
#git tag -l -n
echo "#### git checkout linux-xlnx ####"
cd -
fi
if [ -d "./u-boot-xlnx" ]; then
cd ./u-boot-xlnx
git checkout xlnx_rebase_v2021.01_2021.2
git branch
#git tag -l -n
git tag -l
echo "#### git checkout u-boot-xlnx ####"