目录
- 1. 准备工作
- 1.1. 新建工作目录
- 1.2. 安装必备库
- 2. zynq 平台交叉编译器的安装
- 2.1 解压编译环境
- 2.2 在 zynq 目录下编写激活脚本,并激活
- 2.3 测试编译器版本
- 3. Uboot 编译及制作
- 3.1 Uboot 编译和配置:
- 3.2 生成 boot.bin
- 4. Linux 内核配置及移植
- 4.1 编译内核(uImage)
- 4.2 制作设备树(devicetree.dtb)
- 4.3 配置 SD 卡
- 4.4 将所有需要的文件拷贝sd卡
- 5. nfs实现文件共享
- 5.1. 配置虚拟机
- 5.2. 配置板子
1. 准备工作
1.1. 新建工作目录
- 新建工作目录zynq,并在里面新建 packs目录存放所需压缩包、新建backups目录再在里面新建boot目录,存放要复制到sd卡的内容

1.2. 安装必备库
- 安装32位的库
(所用编译器是 32 位,而我们的系统是 64 位的,需要安装 32位的库)
$ sudo apt install libc6-i386 lib32z1$ sudo apt install lib32stdc++6
- 安装 openssl 开发库
(由于xilinx公司提供的uboot版本较老,依赖的是ssl1.0.0的版本,需要安装这个版本库)
对于ubuntu20.04 版本:
$ sudo vim /etc/apt/sources.list 添加:
deb http://security.ubuntu.com/ubuntu bionic-security main
$ sudo apt update && apt-cache policy libssl1.0-dev
$ sudo apt install libssl1.0-dev
- 安装python2
$ sudo apt install python2.7
$ sudo ln -s /usr/bin/python2.7 /usr/bin/python2
2. zynq 平台交叉编译器的安装
2.1 解压编译环境
- 解压 Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux.tar.gz 文件到 packs
的上级目录下,并重命名为 xilinx-tools
$ tar -zxvf Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux.tar.gz -C ../
$ mv Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux xilinx-tools
2.2 在 zynq 目录下编写激活脚本,并激活
$ vim env_z7.sh 添加:
#!/bin/sh
export PATH=/home/venom/zynq/xilinx-tools/bin:${PATH}
ARCH=arm
CROSS_COMPILE=arm-linux-
$ source env_z7.sh
2.3 测试编译器版本
$ arm-linux-gcc -v

3. Uboot 编译及制作
3.1 Uboot 编译和配置:
- 解压 u-boot-xlnx.tar.gz 文件到上级目录
$ tar u-boot-xlnx.tar.gz -C ../
- 进入 u-boot-xlnx 目录,执行 build.sh 脚本
$ ./build.sh
3.2 生成 boot.bin
- 解压 zynq_boot.tar.gz 文件到上级目录
$ tar zynq_boot.tar.gz -C ../
- 进入zynq_boot目录,修改bootimage.bif的内容
$ vim bootimage.bif
the_ROM_image:
{
[bootloader]/home/venom/zynq/zynq_boot/zynq_fsbl_0.elf
/home/venom/zynq/zynq_boot/system.bit
/home/venom/zynq/zynq_boot/u-boot.elf
}
- 拷贝u-boot.elf 到本目录
$ cp ../u-boot-xlnx/u-boot.elf ./
- 执行当前目录的build.sh脚本
$ ./build.sh
- 拷贝boot.bin到备用目录下
$ cp boot.bin ../backups/boot/
4. Linux 内核配置及移植
4.1 编译内核(uImage)
- 进入 uboot 源码目录下的 tools 目录,拷贝mkimage到/bin
(zynq7000 的内核采用的是 uboot 启动的 uImage 格式,需要借助 uboot编译生成的 mkimage 可执行文件)
$ sudo cp mkimage /bin
- 解压 linux-kernel.tar.gz到上级目录
$ tar linux-kernel.tar.gz -C ../
- 进入linux-kernel目录执行 build.sh 脚本
$ ./build.sh
- 拷贝uImage到备用目录下
$ cp arch/arm/boot/uImage /home/venom/zynq/backups/boot/
4.2 制作设备树(devicetree.dtb)
- 解压 linux-kernel.tar.gz到上级目录
$ tar device_tree.tar.gz -C ../
- 进入device_tree 目录执行 build.sh 脚本
$ ./build.sh
- 拷贝devicetree.dtb到备用目录下
$ cp devicetree.dtb ../backups/boot/
4.3 配置 SD 卡
-
将 SD 卡接入电脑,选择连接到虚拟机

-
找到磁盘

-
设置磁盘分区

-
点击‘-’删除所有分区
-
点击‘+’号进行创建分区
-
第一个分区0.5G,设置卷名boot,格式是 FAT 格式
-
第二个分区是剩余空间,设置卷名rootfs,格式是 ext4
-
分区好后,点击 ▶ 符号进行挂载
-
进入sd目录
$ cd /media/venom
- 新建卸载脚本,方便以后卸载sd卡
$ sudo touch umount.sh
$ chmod 777 umount.sh
$ vim umount.sh 填入
sudo umount /media/venom/boot/
sudo umount /media/venom/rootfs/
4.4 将所有需要的文件拷贝sd卡
- 进入packs目录拷贝uramdisk.image.gz到备用目录下
$ cp uramdisk.image.gz ../backups/boot/
- 将rootfs.tar.gz解压到备用目录下
$ tar -zxvf rootfs.tar.gz -C ../backups/
- 进入backups目录往sd拷贝
$ sudo cp -ardf boot/* /media/venom/boot/
$ sudo cp -ardf rootfs/* /media/venom/rootfs/
需要拷贝到sd卡的内容:

- 卸载sd卡
$ ./umount
5. nfs实现文件共享
5.1. 配置虚拟机
- 添加网络适配器,并设置

- 没有就添加网络


- 自己设置ip地址

- 安装nfs服务
$ sudo apt install nfs-kernel-server
- 添加要共享的文件夹
$ vim /etc/exports 添加:
/home/venom/work/nfs_share*(rw,sync,insecure,no_subtree_check,no_root_squash)
5.2. 配置板子
- 设置ip
$ ip addr 先查看
$ ifconfig eth0 192.168.10.110

- 链接共享文件夹到开发板的 /mnt 目录下
$ mount -t nfs -o nolock 192.168.10.116:/home/venom/work/nfs_share /mnt
- 然后就可以实现文件共享了

来源于上课笔记,老师是:海牛rocky
压缩包下载:
链接:https://pan.baidu.com/s/1S8tYfoq07OBfjTuG2CHCSg
提取码:zynq















