基于ZYNQ的linux开发流程

756 阅读3分钟

基于ZYNQ的linux开发流程

1 搭建硬件

2 基于该硬件在ubuntu移植linux到ZYNQ开发板

ubuntu系统上搭建工程结构,添加vivado得到的hdf硬件描述文件

编译fsbl

修改设备树文件

编译u-boot

编译kernel

编译rootfs

image.png

1 创建工程 模块设计完成ZYNQ系统功能设置,生成hdf文件

2 linux系统移植

硬件系统是在windows上利用vivado搭建。基于硬件描述文件在ubuntu系统移植linux到zynq开发板。

搭建工程结构: 在用户目录新建一个文件夹 ls zynq_project 查看文件夹

将四个压缩包 devicetree fsbl kernel uboot解压到主文件夹ACZ702下。

再创建名为hdf.sdk的文件夹,将.hdf文件复制到该文件夹中。 再将提供的his_dts.tcl 和his_fsbl.tcl复制到主文件夹下并解压。

image.png

his_dts.tcl 和his_fsbl.tcl为脚本文件。

devicetree :xilinx 的 device-tree 仓库工具包。Petalinux 可以根据 hdf 文件描述的硬件信息自动配置 u-boot 和内核所需的设备树文件,我们也可以通过 hsi 命令来生成,这就需要导入 xilinx 的device-tree 仓库工具包。配置好设备树文件后,设备树模型文件用来描述硬件的数据结构,许多硬件设备信息可以直接通过它传递给Linux。

fsbl:fsbl 的全称为“first stage boot loader”,是在 zynq 上运行程序的加载文件。这是 zynq 启动第一阶段的加载程序,

uboot:uboot 就是 universal bootloader(通用的启动代码)。 uboot的本质就是一个裸机引导启动程序,由若干个.c 文件和.h 文件组成,配置编译之后会生成一个 uboot.bin 裸机程序的镜像文件,提供系统部署功能,完成整个系统(包括 uboot、kernel、rootfs 等的镜像)在Flash 上的烧录下载工作。

Kernel:xilinx 官方提供的内核源码。Kernel 使用的系统调用比如" 读"和"写"来提供硬件的抽象。

hdf.sdk:添加了 Vivado 硬件设计描述文件,看做工程的硬件设计系统。

Petalinux 工具可以很方便的生成、配置、编译及自定义 Linux 系统。先设置 Petalinux 的环境变量,在前面安装 Petalinux 我们把 Petalinux 的环境变量设置修改为了别名。 输入指令“sptl”就可以进行设置。使用命令创建名为ACZ702_System的工程。

image.png

至此,工程的文件夹结构已搭建完毕,

开始编译

编译 fsbl:

我们在根目录的“/user/bin”目录下新建一个“make”的软链接文件“gmake”。 “make”在其他平台会被占用, 这里用 “gmake” 代替 “make” 进行编译, gmake 就是“GNU make”的缩写,“GNU make”主要用于自动化构建可执行程序。在建立起软链接后重新对 Petalinux 的环境变量进行设置,依次输入以下命令:

image.png

这里进入“linux/fsbl”文件夹,注意不是进入“ACZ702”目录下的 fsbl 文件。打开终端,输入命令清理生成的文件并编辑 Makefile,指令如下:

image.png

点击键盘上的“A”键进入输入模式,在第 20 行修改“executable.elf”为 “zynq_fsbl.elf”,然后按“ESC”退出编辑模式进入指令模式,输入“:wq”保 存并退出。进入“Makefile”进行修改

image.png

修改设备树文件

编译 u-boot

编译 Kernel

编译 Rootfs

打包文件到 BOOT.BIN

制作 SD 启动卡

使用 SD 卡引导 linux 系统启动,一般需要在 SD 卡上有 2 个分区。一个分 区使用 FAT32 文件系统,用于放置启动镜像文件(如 BOOT.BIN,linux 镜像等),另一分区使用 EXT4 文件系统,用于存放根文件系统。

image.png

将所需文件拷贝到 SD 卡

设置开发板启动模式