linux系统移植 基于zynq7000平台

article/2025/11/8 7:11:23

目录

    • 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


http://chatgpt.dhexx.cn/article/fJcSrf9d.shtml

相关文章

Zynq7000 USB2.0协议解析及USB控制器详解

USB 2.0规范及控制器 文章目录 USB 2.0规范及控制器USB2.0Univerasl Serial BusUSBHost USB总线接口标准总线信号USB拓扑结构数据流模型数据编解码和位填充USB逻辑部件 USB时间基准USB 描述符USB设备USB设备供电方式USB设备分层USB设备插入检测机制USB设备状态USB总线枚举 USB传…

zynq7000开发流程

1 开发工具 1.1 独立开发环境 PL—>Vivado PS(ARM)-->SDK(Xilinx)或者第三方ARM开发工具 1.2 集成开发环境 SDSoC 1.3 总结 独立开发环境大概分为四个步骤: &#xf…

ZYNQ7000 SPI LCD与Petalinux

前言 ZYNQ内部集成两个ARM Cortex A9核心,Xilinx也推出了Petalinux工具,与Vidado搭配可以方便地完成Linux的uboot、kernel、rootfs部署。 开发板上集成了HDMI,但是需要在FPGA中实现逻辑,但是实现之后占用了7010快一半的资源&…

ZYNQ7000 (二十)等精度频率计的原理分析和实例实现

等精度频率计的原理分析和实例实现 这一视频主要来分析实现等精度频率计。通过分析硬件实现原理,编写 PL的逻辑实现部分,以及对应 PS的 C语言操作,操作挂在 PS寻址空间的寄存器, 达到控制等精度频率计逻辑,读取计数结果…

ZYNQ7000-MIO与EMIO详解

摘要 本文参考芯片手册详细介绍了ZYNQ7000芯片的信号、接口与引脚,结合芯片封装说明了引脚的类别与分布,并说明了MIO与EMIO的区别。 关键词:ZYNQ;信号;引脚;MIO;EMIO;Bank 前言 了解…

ZYNQ7000 SDK开发使用

Zynq开发平台工具 ZYNQSDK开发使用 Zynq开发平台工具导入硬件平台配置BSP包创建和配置创建应用程序下载固件和调试应用程序创建FSBL工程建立内存测试工程启动模式spi flash及sd卡的测试 参考文档:zynq_sw\Lab_instructions\Lab01 - Explore Zynq Hardware Platform …

Zynq7000 OPENAMP 实验

前言 Zynq7000 openamp实验,最近想做一个多cpu异构系统,后面会用zynqmp去做,先拿zynq7000试一下 首先说明,openamp是开源异构多处理通信框架。现在cpu不再像以前单个cpu,而是越来越复杂,比如TI的TDA4芯片…

ZYNQ7000固化流程

ZYNQ7000固化流程 生成BOOT.bin文件 (1)在SDK开发环境下,将FSBL.elf文件,FPGA.bit文件和FW.elf文件按次序添加并打包成BOOT.bin文件 2. BOOT.bin文件固化 (1)在xilinx SDK环境中通过JTAG进行固化&#x…

zynq7000 资源介绍

zynq 7000 资源介绍 整体框架PS端资源PS端资源 整体框架 Zynq7000系列是基于APSOC的可拓展处理平台,它的本质特征是将一个双核ARM Cortex-A9处理器和一个可编程的FPGA芯片集成到一个片上系统中。在进行Zynq7000的详细说明前,本节首先对架构的高层模型进…

zynq7000 创建fsbl工程,并打开log

背景:若通过petalinux编译的启动文件,放到sd卡里面(或者flash),上电后串口没有任何log信息;可以考虑搭建fsbl工程。 以2018.3版本为例。 1、把*.hdf文件放到想要创建的文件里面,然后双击“Xil…

ZYNQ7000-GPIO详解

摘要 本文介绍了ZYNQ7000芯片中GPIO的基本概念,分组、功能、控制寄存器、中断设置以及如何在Vitis中配置GPIO。 本文参考:UG585 - Zynq-7000 SoC Technical Reference Manual (v1.12.2) 385~394页–Ch14: General Purpose I/O(GPIO) 关键词&#xff1a…

zynq7000中断系统

7.1环境 这一章节描述了系统级的中断环境以及中断控制器功能。PS端是基于ARM架构的,并且使用了两个Cortex-A9处理器以及型号为pl390的GIC中断控制器。整个中断结构与处理器、可编程逻辑器件(PL)、从外部IO接受到的中断请求有非常紧密的联系。本章节包含了下面这些关…

【ZYNQ】ZYNQ7000 UART 控制器及驱动应用示例

UART 简介 我们在使用 PS 的时候,通常会添加 UART 控制器,用于打印信息和调试代码。除此之外,PS 在和外部设备通信时,也会经常使用串口进行通信。 UART 控制器 UART 控制器是一个全双工异步收发控制器,ZYNQ 内部包含…

Xilinx ZYNQ 7000入门

ZYNQ是Xilinx推出的新一代全可编程片上系统,将处理器的软件可编程性与FPGA的硬件可编程性完美整合。 ZYNQ7020:xc7z020clg400-2 ZYNQ7010:xc7z010clg400-1 组合了一个双核ARM Cortex-A9(PS)处理器和一个传统的…

ZYNQ7000平台介绍

基于ZYNQ7000平台软件开发 ZYNQ7000平台简介 本文介绍ZYNQ7000平台采用Avnet推出的ZedBoard开发板进行讲解,ZedBoard开发板基于Xilinx Zynq-7000 All Programmable Soc,整合了双核Cortex-A9的PS处理单元和PL逻辑单元。 在zynq上,ARM Cortex…

【ZYNQ】ZYNQ7000 全局定时器及其驱动示例

定时器简介 在 ZYNQ 嵌入式系统中,定时器的资源是非常丰富的,每个 Cortex-A9 处理器都有各自独立的 32 位私有定时器和 32 位看门狗定时器,这两个 CPU 同时共享一个 64 位的全局定时器(GT)。 系统框图 全局定时器&am…

Xilinx ZYNQ 7000学习笔记一(复位和启动)

一、复位系统 参考文献:Zynq-7000 SoC Technical Reference Manual (UG585)-ch26 Reset System zynq7000复位信号源包括硬件复位、看门狗定时器、JTAG控制器复位信号和软件复位信号。其中,硬件复位引脚由上电复位信号PS_POR_B和系统复位信号PS_SRST_B驱…

zynq7000系列芯片介绍

ZYNQ从架构上可以划分为两大模块,一个是PS(处理器系统),另一个是PL(可编程逻辑) PS由APU、内存接口、IO外设、互连线4大模块组成。 1、APU(Application Processor Unit)应用处理单元 即PS【可编…

xilinx zynq-7000 基本知识

Zynq-7000 采用可扩展式处理平台架构(Extensible Processing Platform、EPP),是 Xilinx 用 28nm HKMG工艺制成的低功耗,高性能,高扩展性的新型芯片,这款新品里面集成了ARM CORTEX-A9 MPSOC 硬核以及相应的S…

ZYNQ-7000概述

摘要 Xilinx推出的ZYNQ-7000被称为全可编程片上系统(SOC),它由FPGA与ARM组合构成,硬件可编程,软件也可编程,在众多应用场合有一定优势。本文根据Xilinx官网的介绍并结合ZYNQ-7000的多份数据手册总结了此产品…