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

ZYNQ7020使用传统方式移植Linux系统 前言 最近在使用ZYNQ7020开发板,写个文章记录下,分享下过程也以便日后查看。在开发过程中需要使用到Linux系统,由于网速原因下载petalinux安装包时间过长,急性子,所以琢磨着使用传统的方式来进行移植。废话不多说,开始记录! 开发平台:vivado2017.4 SDK 2017.4 准备工作 1、如何新建工程以及如何进行硬件部分的配置在此不过阐述,请参考网上其它... 阅读详情
AI摘要

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

移植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文件,内容为(注意一下串口和主频和硬件是否对应):
/dts-v1/;
/include/ "zynq-7000.dtsi"

/ {
    model 
ZYNQ-Linux开发之(二)Vivado工程搭建、Block Design设计搭建、PS、PL的IP核的使用配置 其他可能需要配置的是PL Fabric Clocks,根据之后添加PL的IP核所需的时钟确定,比如本工程的PL的IP核中有的需要100M时钟,有的需要200M时钟,有的需要125M时钟,还有的需要10M时钟,则可按下图设置,对于精度要求不高的IP核,还可以通过添加时钟的IP来进行时钟的倍频实现需要的时钟。4. SD有两个可选,一般设计中SD0为SD卡槽,SD1为EMMC,若为板卡存在EMMC芯片则SD0和SD1都需要勾选,无论是否有EMMC,SD0都是必须选择的。 阅读详情

相关推荐

ZYNQ平台运行linux系统app

linux系统体积小,可裁剪,硬件需求可很小,适合在嵌入式平台运行。可在x86,arm运行,在x86主机上交叉编译生成可在arm运行的可执行程序。不像windows系统的大部分功能已经做好,学习linux能更好理解操作系统的运行结构。可以无GUI运行,通过远程的SecureCRT通过SSH2网络登陆到系统。所有东西都是文件,没有格式之分。安装软件需要联网到软件源,如网易的163源。安装各种服务,nfs网络文件、vim编辑器、gcc代码编译器。

leixj的博客 4903

【ZYNQ】移植Linux系统,配置与驱动相对应的设备树

ZYNQ在做linux的系统移植时,例如生成 Ubuntu 的操作系统,最大的困难就是设备树的配置,眼花缭乱的模块,不明所以的语法结构,真的能把新手逼疯。 好在Xilinx Vitis 是有自动生成设备树这个功能的,但好像挺多人不知道的,或许就不需要 ,本篇博客就是来介绍下如何使用Vitis 和 XSA 硬件工程文件生成设备树,并且将其配置成与驱动相匹配。

qq_45057368的博客 6517

ZYNQ跑系统 系列(二) petalinux方式移植linux

移植linux之petalinux之前一篇博文中,提到了一种通用的传统移植方式,将linux移植到ZYNQ中的ARM芯片中。本文将针对xilinx的专用开发环境petalinux,进行安装、入门和开发

long_fly的博客 4万+

ZYNQ跑系统 系列(四) AXI-DMA的linux下运行

AXI-DMA的linux驱动 一、搭建硬件环境 vivado版本2017.4,芯片为7010,不过不管什么版本和芯片大致步骤是一样的 硬件平台PL的搭建同ZYNQ基础系列(六) DMA基本用法,在这个工程的基础上添加SD卡(根据自己的开发板硬件选择相应的引脚) 然后直接生成bit文件,然后记得要导出硬件(包含bit文件)进SDK 二、生成设备树 1.解压设备树工具文件夹到一个地方...

long_fly的博客 3万+

用传统方式在zynq7020开发板上移植linux

不使用官方提供的petalinux工具,手动编译生成linux移植所需的各个文件,在zynq7020开发板上移植linux

525小白菜的博客 3929

ZYNQ跑系统 系列(二) petalinux方式移植linux_petalinux移植(1)

最全的Linux教程,Linux从入门到精通第一份《Linux从入门到精通》466页内容简介====本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。

2401_84140023的博客 926

C C++最新ZYNQ跑系统 系列(二) petalinux方式移植linux_petalinux移植,2024年最新一文搞懂C C++架构

成功定位不报错的话,基本是成功了的命令行会打印出安装路径。

2401_84976691的博客 1388

Zynq 传统方式移植 linux

Zynq 传统方式移植linux:uboot编译及运行(BOOT.bin)、kernel编译(uimage)、设备树制作(devicetree.dtb)、根文件系统制作(rootfs)、SD卡启动

铁头娃 969

嵌入式系统实战:DroneCAN协议栈移植与避坑指南

本文详细介绍了在嵌入式系统中移植DroneCAN协议栈的完整流程与实战技巧。内容涵盖移植前的准备工作、内存管理优化、CRC校验实现、多帧数据处理及硬件平台适配等关键环节,并以STM32F4为例提供了具体的移植步骤和避坑指南,帮助开发者高效完成DroneCAN在嵌入式设备上的集成与应用。

solidity8miner的博客 548

泛微ecology9 HRMwebservice接口实战:企业组织架构与人员信息同步指南

本文详细介绍了泛微ecology9 HRMwebservice接口在企业系统集成中的实战应用,重点解析了如何通过该接口实现组织架构与人员信息的双向同步。内容涵盖环境配置、核心接口调用、数据格式规范及常见错误排查,旨在帮助开发与运维工程师高效完成主数据同步,提升企业IT管理效率。

weixin_29323365的博客 498

innovus:sroute 双层follow pin的做法

根据std cellpower pin的层次可以分成两种情况。

m0_61544122的博客 2732

围绕国产化操作系统以及人大金仓地理空间库的GIS的解决方案,含超详细部署步骤以及与QGIS,GeoServer,PostGlS Shapefile lmport/Export Manager的连接步骤

人大金仓软件 2.1软件的下载以及授权的相关文件插件 2.2上传至虚拟机 2.3KingbaseES V8R6数据库部署过程 2.3.1创建安装用户 2.3.2赋权 2.3.3.创建安装目录且赋权 2.3.4 准备挂载 2.4kingbase安装方法 2.7postgis安装 3 人大金仓数据库与QGIS的连接 4 人大金仓数据库与PostGlS Shapefile lmport/Export Manager的连接 5 人大金仓数据库与geoserver的连接

挣钱花388的博客 2590

华为OD新系统机试真题 - 失灵的键盘(C/C++/Py/Java/Js/Go)

华为OD新系统机试真题 【失灵的键盘】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD4月15号机试真题【失灵的键盘】

qq_45776114的博客 1070

luks-磁盘加密工具

linux磁盘加密配置工具及步骤详解

zdd56789的博客 120

第三篇:NVIDIA cuOpt Python API 详解:LP、QP、MILP 建模与求解,附核心术语名词解释

NVIDIA cuOpt是一款GPU加速的优化求解库,支持LP、QP、MILP和路径优化问题。本文详细介绍了其Python API使用方法,包括核心类Problem的变量定义、约束添加、目标设置和求解配置,并提供了术语解释。cuOpt通过GPU并行计算大幅提升大规模优化问题的求解效率,支持多种求解算法和参数配置,适用于需要高性能计算的优化场景。安装方式包含pip和Docker两种,验证安装后即可快速开始建模求解。

算法工程师 236

【Matlab】飞行器气动弹性仿真与分析

气动弹性是飞行器设计领域的核心交叉学科,融合了空气动力学、结构动力学和控制理论,主要研究飞行器结构在气动力作用下的弹性变形、振动响应及相互耦合规律,直接影响飞行器的飞行稳定性、操纵性和结构安全性。随着飞行器向高速度、高机动性、轻量化方向发展,气动弹性问题愈发突出,如颤振、发散、嗡鸣等现象,严重时会导致飞行器结构破坏甚至飞行事故,因此气动弹性仿真与分析已成为飞行器设计、验证和优化的关键环节。当前,飞行器气动弹性仿真面临诸多技术挑战:气动力与结构变形的强耦合特性难以精准描述,易出现仿真误差;

unber的博客 233

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: ZYNQ基础系列(一) AXI总线通信
下一篇: PYTHON入门(一)
long_fly
博客等级 码龄9年 1112粉丝 19原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值