首页 > 系统服务 > 详细

ZYNQ学习之路1. Linux最小系统构建

时间:2019-03-13 17:38:26      阅读:472      评论:0      收藏:0      [点我收藏+]

https://blog.csdn.net/u010580016/article/details/80430138?utm_source=blogxgwz1

 

开发环境:window10, vivado 2017.1, ubuntu 16.04, Eclipse+cdt

硬件环境:米尔科技zturn board,zynq7z010

  本笔记详细介绍了开发ZYNQ7000系列的基础软件系统构建,介绍了Vivado的使用以及IP核的配置,最后搭建能让ZYNQ运行arm linux系统的软件环境,在今后的开发过程中将在此基础上进行。在完整搭建好本系统之后建议保存为模板工程。

  首先简单介绍一下ZYNQ开发linux的基本流程:ZYNQ的开发也是先硬件后软件的方法。具体流程如下:

    在Vivado中新建工程,增加一个嵌入式的源文件。
    在Vivado里添加和配置PS和PL部分基本的外设,或需要添加自定义的外设。
    在Vivado里生成顶层HDL文件,并添加约束文件。再编译生成比特流文件system.bit。
    导出到SDK软件开发环境,在SDK环境里可以编写一些调试软件验证硬件和软件,结合比特流文件单独调试ZYNQ系统
    在SDK里生成FSBL文件。
    在VMware虚拟机里生成u-boot.elf bootloader镜像。
    在SDK里通过FSBL文件, 比特流文件system.bit和u-boot.elf文件生成一个boot.bin文件。
    在VMware里生成Linux的内核镜像文件zImage和Linux的文件系统ramdisk。另外还需要对FPGA自定义的IP编写驱动。
    把boot.bin,zimage和ramdisk三个文件放入到SD卡的FAT分区中,启动开发板电源,Linux操作系统会从SD卡里启动。

 

一. 准备Linux系统的内核、uboot、文件系统、设备树等文件

    1.1 编译uboot

    在工作空间建立uboot目录,进入uboot目录,解压uboot源码

<workdir>$ cd uboot
uboot$ tar -jxvf u-boot-xlnx.tar.bz2
uboot$ cd u-boot-xlnx

    编译uboot:

u-boot-xlnx$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- distclean
u-boot-xlnx$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zturn_config
u-boot-xlnx$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-

编译完成后,在当前目录下会生成"u-boot"ELF文件,将其重命名为"u-boot.elf"。

  1.2 编译linux内核
在工作空间建立kernel目录,进入kernel目录,解压内核源码:

<workdir>$ cd kernel
kernel$ tar -xvjf linux-xlnx.tar.bz2
kernel$ cd linux-xlnx

开始编译:

linux-xlnx$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- distclean
linux-xlnx$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_zturn_defconfig
linux-xlnx$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- uImage
linux-xlnx$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- dtbs

编译完成后,在arch/arm/boot目录下生成uImage文件,在/arch/arm/boot.dts/生成zynq_zturn.dtb文件。

  1.3 制作randisk
在工作空间建立filesystem目录,进入filesystem目录,将uramdisk.image.gz拷贝至该目录。

<workdir>$ cd filesystem
filesystem$ mkdir -p rootfs

去掉mkimage生成的64bytes文件头,生成新的ramdisk.image.gz

filesystem$ dd if=uramdisk.image.gz of=ramdisk.image.gz bs=64 skip=1

gunzip解压ramdisk.image.gz生成ramdisk.image

filesystem$ gunzip ramdisk.image.gz

将ramdisk.image挂在在rootfs目录

filesystem$ sudo mount -o loop,rw ramdisk.image rootfs

进入rootfs目录,根据需要做修改。

  经笔者实验发现,米尔科技的开发板Zturn board在直接使用光盘文件时,以太网不能正常运行,经调试发现其ramdisk文件系统中关于网络的配置文件不完整,在ramdisk文件目录中,打开/etc/network/interfaces文件,发现其中没有关于eth0的配置,因此添加网络配置如下:

auto eth0
iface eth0 inet dhcp

重新生成ramdisk, 同步文件系统并卸载ramdisk

filesystem$ sync
filesystem$ umount rootfs

用gzip压缩ramdisk.image,生成ramdisk.image.gz

filesystem$ gzip -9 ramdisk.image

用mkimage添加头文件,生成新的uramdisk.image.gz供u-boot使用。

filesystem$ mkimage -A arm -T ramdisk -C gzip -n Ramdisk -d ramdisk.image.gz uramdisk.image.gz

    至此,我们已经得到了u-boot.elf, uImage, devicetree.dtb, uramdisk.image.gz文件。

ZYNQ学习之路1. Linux最小系统构建

原文:https://www.cnblogs.com/idyllcheung/p/10524623.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!