ZYNQ跑系统 系列(一) 传统方式移植linux

本文详细介绍了在ZYNQ FPGA上通过传统u-boot、kernel方式移植Linux的步骤,包括搭建硬件环境、准备运行Linux前的工作,以及如何运行Linux。主要内容涉及配置硬件、安装开发环境、编译u-boot、生成BOOT.bin、uImage和devicetree.dtb,以及创建文件系统和启动Linux的过程。
摘要由CSDN通过智能技术生成

移植linux之传统方式


在ZYNQ开发时,有些情况下,为了降低开发的复杂性,或是提升系统运行的性能,在ARM上跑一个linux系统往往是一个不错的选择,而且linux系统一般集成了一些常用的成熟驱动,可以减少开发周期。本章将通过传统u-boot、kernel方式,完成移植。该方式虽然繁琐复杂,但是毕竟是一种通用的移植方式。


一、搭建硬件环境

  • 1.新建工程,并新建一个 BD 文件,然后添加一个ZYNQ Processing system的IP核,并设置好与硬件相符合的PS和PL时钟以及DDR型号
    这里写图片描述
    这里写图片描述
  • 2.添加一些必要外设
    这里写图片描述
    为了看到linux启动的实验现象,下面的外设是必备的:

    • SD:SD卡(用于从SD卡启动u-boot、kernel、PL以及文件系统)
    • UART:用于打印调试信息的串口

  • 3.右键单击 Block 文件,文件选择 Generate the Output Products

  • 4.右键单击 Block 文件,选择 Create a HDL wrapper,根据 Block 文件内容产生一个 HDL 的顶层文件,并选择让 vivado 自动完成
  • 5.并综合实现、生产.bit文件
  • 6.导出硬件(包含.bit),待启动SDK

二、ARM上运行linux前的准备工作

  • -1.电脑上安装linux环境
  • 0.更新apt-get(可选,加速用)
    在linux系统中打开/etc/apt目录下找到sources.list文件
    将文件内容替换为
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties 
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted 
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties 
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted 
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties 
deb http://mirrors.aliyun.com/ubuntu/ xenial universe 
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe 
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse 
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse 
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse 
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties 
deb http://archive.canonical.com/ubuntu xenial partner 
deb-src http://archive.canonical.com/ubuntu xenial partner 
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted 
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties 
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe 
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse 

打开命令行执行apt-get update刷新列表

  • 1.安装相应环境
#安装32位依赖库
apt-get install lib32z1 lib32ncurses5 lib32stdc++6 libbz2-1.0:i386
#安装 Openssl 库,实现网络的保密性和可靠性的数据传输,在编译u-boot时会用到
apt-get install libssl-dev
#安装设备树编译器工具
apt-get install device-tree-compiler
#安装此库,否则内核编译时make menuconfig等会报错
apt-get install libncurses5-dev 
#安装此库,否则内核编译报错
sudo apt-get install u-boot-tools 
  • 2.安装vivado
    • 从官网下载WEB版的VIVADO Xilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin(我已上传到:Xilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin
    • 执行该.bin,安装方法以及界面都同WINDOWS版的VIVADO安装一样,运行该文件后首先通过GUI对安装进行配置
    • 配置到选择器件支持时,尽可能将不需要的器件勾选掉(减少下载的大小)
    • 配置完成后,等待下载,以及安装,即可
  • 3.下载
    https://github.com/Xilinx,直接下载官方u-boot和kernel(linux-xlnx-master.zip、u-boot-xlnx-master.tar.gz)
  • 4.编译u-boot
    • 定位编译环境source /opt/Xilinx/SDK/2017.1/settings64.sh
    • 进入u-boot目录cd /home/hlf/mnt/u-boot-xlnx-master
    • 打开GUI配置u-bootmake menuconfig,但是这个GUI是空白的配置,所以要先载入一下xilinx的默认配置,再做修改(如下)
    • 在menu中,按方向键选择load,回车,载入xinlinx默认配置文件(输入zynq_ax7010_defconfig的绝对路径,我的是/home/hlf/mnt/u-boot-xlnx-master/configs/zynq_ax7010_defconfig
      这里写图片描述
    • 然后将改动好的配置(本章不改动),再save到该路径,所需配置已保存到zynq_ax7010_defconfig文件里
    • 针对刚刚的配置开始编译u-boot:
      • make CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_ax7010_defconfig#读配置
      • make CROSS_COMPILE=arm-xilinx-linux-gnueabi-#编译
      • #arm-xilinx-linux-gnueabi-objdump -h u-boot #查看 u-boot 文件的不同段的内存分配情况
        到这一步,把u-boot拷贝出来,并加后缀为u-boot.elf,待用
        这里写图片描述
  • 5.生成BOOT.bin
    • 启动SDK,新建一个FSBL模板,并在文件中#define FSBL_DEGUG_INFO以便看到调试信息,然后编译生成fsbl.elf
      这里写图片描述
    • 从SDK中将上述fsbl.elf、硬件的.bit文件、u-boot.elf打包成BOOT.bin
      这里写图片描述
  • 6.生成uImage
    • 进入目录 cd /home/hlf/mnt/linux-xlnx-master
    • 定位编译环境 source /opt/Xilinx/SDK/2017.1/settings64.sh
    • 打开GUI配置内核 make ARCH=arm menuconfig
    • 在GUI中load一下xilinx的默认配置,load的路径为/home/hlf/mnt/linux-xlnx-master/arch/arm/configs/xilinx_zynq_defconfig
    • 在GUI中进行相关设置后(本章不改动),save到xilinx_zynq_defconfig里(也可以自己选择)
    • make ARCH=arm xilinx_zynq_defconfig #读配置
    • make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- uImage LOADADDR=0x00008000 #编译内核
    • 编译完成后,在linux-xlnx-master/arch/arm/boot目录下可以发现uImage文件,待用
  • 7.生成devicetree.dtb
    在linux-xlnx-master/arch/arm/boot/dts目录内新建或者找到zynq-7010.dts文件,内容为(注意一下串口和主频和硬件是否对应)&#
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值