基于ZYNQ的linux开发流程
1 搭建硬件
2 基于该硬件在ubuntu移植linux到ZYNQ开发板
ubuntu系统上搭建工程结构,添加vivado得到的hdf硬件描述文件
编译fsbl
修改设备树文件
编译u-boot
编译kernel
编译rootfs
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复制到主文件夹下并解压。
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的工程。
至此,工程的文件夹结构已搭建完毕,
开始编译
编译 fsbl:
我们在根目录的“/user/bin”目录下新建一个“make”的软链接文件“gmake”。 “make”在其他平台会被占用, 这里用 “gmake” 代替 “make” 进行编译, gmake 就是“GNU make”的缩写,“GNU make”主要用于自动化构建可执行程序。在建立起软链接后重新对 Petalinux 的环境变量进行设置,依次输入以下命令:
这里进入“linux/fsbl”文件夹,注意不是进入“ACZ702”目录下的 fsbl 文件。打开终端,输入命令清理生成的文件并编辑 Makefile,指令如下:
点击键盘上的“A”键进入输入模式,在第 20 行修改“executable.elf”为 “zynq_fsbl.elf”,然后按“ESC”退出编辑模式进入指令模式,输入“:wq”保 存并退出。进入“Makefile”进行修改
修改设备树文件
编译 u-boot
编译 Kernel
编译 Rootfs
打包文件到 BOOT.BIN
制作 SD 启动卡
使用 SD 卡引导 linux 系统启动,一般需要在 SD 卡上有 2 个分区。一个分 区使用 FAT32 文件系统,用于放置启动镜像文件(如 BOOT.BIN,linux 镜像等),另一分区使用 EXT4 文件系统,用于存放根文件系统。