您当前的位置: 首页 > 

MangataTS

暂无认证

  • 2浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

zynq平台Uboot 编译及制作

MangataTS 发布时间:2022-05-18 18:10:53 ,浏览量:2

说在开头,如果在某个过程中出现了包下载很慢或者下载出错,请通过科学上网后再进行操作

一、拷贝u-boot-xlnx.tar.gz并解压编译

解压 u-boot-xlnx.tar.gz 文件

tar -zxvf u-boot-xlnx.tar.gz -C ../

在这里插入图片描述 在这里插入图片描述 进入 u-boot-xlnx 后,里面有一个自动配置和编译 uboot 的脚本build.sh,直接执行 build.sh 即可。 注意: 【报错1】:

In file included from tools/aisimage.c:10:
include/image.h:880:12: fatal error: openssl/evp.h: 没有那个文件或目录
  880 | # include  
      |            ^~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [scripts/Makefile.host:108:tools/aisimage.o] 错误 1
make: *** [Makefile:1154:tools] 错误 2

【解决方案】: 安装 openssl 开发库,由于 xilinx 公司提供的 uboot 版本较老,依赖的是 s s l 1.0.0 ssl1.0.0 ssl1.0.0 的版本,需要安装这个版本库才可以顺利编译。(ubuntu20.04 安装较麻烦,需要增加新的源) 如果是Ubuntu18.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

在这里插入图片描述

【报错2】:

./tools/zynq-boot-bin.py -o boot.bin -u spl/u-boot-spl.bin
/usr/bin/env: “python2”: 没有那个文件或目录
make: *** [Makefile:1073:boot.bin] 错误 127
mv u-boot u-boot.elf

【解决方案】:

其实就是缺乏 python2,我们直接通过apt安装即可

sudo apt install python2.7
sudo ln -s /usr/bin/python2.7 /usr/bin/python2

现在再执行./build.sh就能编译成功uboot了,效果如下: 在这里插入图片描述

二、制作 zynq7000 的 uboot

使用 zynq_boot.tar.gz 里的工具生成,解压后可以看到 build.sh 里的信息,分析可知:

./bootgen -image bootimage.bif -o i boot.bin

bootgen 是生成 bin 文件的工具,其中依赖的文件是 .bif 文件

the_ROM_image:
{
        [bootloader]/home/mangata/zynq/zynq_boot/zynq_fsbl_0.elf
        /home/mangata/zynq/zynq_boot/system.bit
        /home/mangata/zynq/zynq_boot/u-boot.elf
}

注意文件的[bootloader]路径信息修改为自己的目录值即可,最后一项的 elf 文件就是上 一步生成的带 ELF 头的文件。

然后我们将刚才编译Ubootu-boot.elf拷贝一份放在zynq_boot目录下。 在这里插入图片描述

然后我们运行脚本./build.sh

【报错1】:

./bootgen: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

【解决方法】:

sudo apt install lib32stdc++6

在这里插入图片描述 然后再次输入./build.sh就能成功了,成功后会生成一个boot.bin的文件 在这里插入图片描述

三、制作SD卡

首先插入SD卡并且连接到虚拟机

在这里插入图片描述 如果有数据的话首先擦除数据,然后我们分成两个区:

第一个区:

在这里插入图片描述 并且选择FAT 在这里插入图片描述

第二个区:

剩下的部分全都作为第二个区,并且命名为rootfs,类型选择Ext4

在这里插入图片描述

然后我们将分区进行挂载即可:

我们在/media/mangata这个路径下就能看到我们挂载的U盘了(这里可以参考磁盘分区信息的内容部分)

在这里插入图片描述 我们现在将之前制作的boot.bin文件拷贝到SD卡的boot分区中:

cp boot.bin /media/mangata/boot

卸载SD卡,通过串口连接开发板,并且以SD卡启动系统,我们可以看到uboot启动成功了 在这里插入图片描述 然后查看当前的文件,可以发现已经有了文件系统

在这里插入图片描述

四、Linux 内核配置及移植

首先解压linux-kernel.tar.gz文件

tar -zxvf linux-kernel.tar.gz -C ../

在这里插入图片描述 2.进入解压后的目录,执行脚本

cd /home/mangata/zynq/linux-kernel
sudo ./build.sh

在这里插入图片描述

此时可能会报错: "mkimage" command not found - U-Boot images will not be built 由于 zynq7000 的内核采用的是 uboot 启动的 uImage 格式,需要借助 uboot 编译生成的 mkimage 可执行文件。可以把这个工具拷贝到/bin 目录下。进入 uboot 源码目录下的 tools 目录,执行 sudo cp mkimage /bin然后再编译内核,拷贝 arch/arm/boot/uImage 到备用目录下。

在这里插入图片描述 3.解压设备树文件

tar -zxvf device_tree.tar.gz -C ../

4.制作设备树 在device_tree 目录下有 build.sh 脚本,执行可得到设备树 dtb 文件,拷贝该文件到备用目录下。 在这里插入图片描述 将这 2 个文件,拷贝到 SD 卡的 boot 目录下,由于 uboot 启动还需要加载一个 ramdisk,需要将 uramdisk.image.gz 文件一并拷贝到 boot 目录下

在这里插入图片描述 进入rootfs文件夹并且将所有内容拷贝到SD卡的rootfs中:

sudo cp -ardf * /media/mangata/rootfs

卸载SD卡,然后放到开发板中以SD卡启动,运行ip addr可以看到如下结果:

在这里插入图片描述 为了使Ubuntu系统能够顺利与开发板相连接,我们先关闭虚拟机,并配置虚拟机新的网卡为桥接模式。 在这里插入图片描述 设置桥接的对象为有线连接

在这里插入图片描述 配置完成后,重启虚拟机。然后对以太网(ens38)进行配置。 在这里插入图片描述 配置该网卡的网络地址,如下: a. 选择手动 b. 配置ipv4的地址

在这里插入图片描述 接着,在开发板上配置eth0网卡,为了保证在网络层连通,必须保证在同一个网段。在这里插入图片描述如果能ping通ip,说明网络层没有问题

开始配置传输层,即安装好NFS服务。 a. 安装NFS服务 b. 在/etc/exports 目录的文件中按照示例给出的格式添上共享目录。

将该共享目录共享给板子中的mnt目录 在这里插入图片描述 完成NFS实现文件传输调试

关注
打赏
1665836431
查看更多评论
立即登录/注册

微信扫码登录

0.0410s