zynq7000 传统方式制作系统镜像
传统方式制作系统镜像,主要是以下几个步骤:
- 配置zynq芯片
- uboot
- kernel
- device-tree
- rootfs
- 打包制作BOOT.BIN和image.ub
环境配置
系统centos7
安装xilinx的vivado、SDK软件
安装gcc make **g++**等基本编译环境
- 从xilinx的github上下载交叉编译工具gcc-arm-linux-gnueabi
- 配置交叉编译工具,建立脚本
#!/bin/sh
current_path=$(pwd)
export ARCH=arm
export CROSS_COMPILE=$current_path/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-
export PATH=$current_path/gcc-arm-linux-gnueabi/bin:$PATH
配置zynq芯片
使用vivado软件
- 配置zynq芯片,如使用UART0 UART1 I2C接口等,以及进行PL端开发
- 编译生成bitstream
- 导出硬件设计
- launch SDK软件,制作FSBL
uboot制作
- 从xilinx的github上下载uboot源码
- 解压后进入到uboot源码目录中
- source 配置交叉编译环境
- 执行make menuconfig,出现配置界面
- load zynq默认配置 u-boot-xlnx-xilinx-v2018.3/configs/zynq_zc706_defconfig,并根据需求修改配置
- 保存为.config配置
- 编译
- 编译成功后得到uboot文件
kernel制作
- 从xilinx的github上下载linux源码
- 解压后进入到linux源码目录中
- source 配置交叉编译环境
- 执行make menuconfig 出现配置界面
- loadzynq默认配置 linux-xlnx-xilinx-v2018.3/arch/arm/configs/xilinx_zynq_defconfig 根据需求修改配置
- 保存为.config配置
- 编译 make -j8
- 编译成功后得到kernel系统镜像
device-tree制作
- 从xilinux的github上下载设备树生成器,并将其配置到SDK的开发环境中
- SDK软件创建设备树工程
- 根据需求修改配置,OK后就在SDK工程目录下生成设备树文件夹,这个是根据vivado软件上面的配置生成的设备树,接下来用dtc工具编译成二进制
- 根据需求修改system-top.dts
- 利用linux内核源码目录中scripts/dtc/目录的dtc工具,执行下面命令生成设备树文件
../linux-xlnx-xilinx-v2018.3/scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb system-top.dts
rootfs制作
rootfs制作的方式有很多,这里可以采用busybox制作
- 执行脚本配置交叉编译环境
- 建立rootfs根文件系统目录
- make menuconfig 根据需求修改配置
这里要修改Build Options–>Installtion Options 修改为之前常见的目录位置 - make -j8
- make install
- 安装完成后,在rootfs目录下看到安装的内容,然后利用cpio命令和gzip命令打包成rootfs.cpio.gz
打包
制作BOOT.BIN文件
由三部分组成fsbl、bitstream、uboot
制作image.ub文件
利用mkimage制作image.ub 需要kernel镜像 devicetree.dtb 以及打包的rootfs 。
- 配置its文件
- 执行下面命令生成image.ub
/home/share2/EMUShare2/kshi/xilinx/u-boot-xlnx-xilinx-v2018.3/tools/mkimage -f test.its test.ub
至此就得到BOOT.BIN和image.ub文件,可以拷贝到SD中启动板子进行测试