PetaLinux使用简介

1 概述

PetaLinux 工具提供在 Xilinx 处理系统上定制、构建和调配嵌入式 Linux 解决方案所需的所有组件。该解决方案旨在提升设计生产力,可与 Xilinx 硬件设计工具配合使用,以简化针对 Versal、Zynq™ UltraScale+™ MPSoC、Zynq™ 7000 SoC、和 MicroBlaze™ 的 Linux 系统开发。

2 创建

2.1 启动PetaLinux

mkdir git
cd git/
source /opt/xilinx/petalinux/2020.1/settings.sh
PetaLinux environment set to '/opt/xilinx/petalinux/20.1'
WARNING: This is not a supported OS
INFO: Checking free disk space
INFO: Checking installed tools
INFO: Checking installed development libraries
INFO: Checking network and other services

2.2 新建工程

2.2.1 通过CPU类型创建工程

petalinux-create --type project --template zynqMP --name myproject

说明:

  • type 类型为project说明创建的是工程,其它取值:apps/modules
  • template 这里是CPU型号:microblaze/zynqMP/zynq/versal

准备vivado中生成的硬件描述文件:

/home/james/git/target/aaa.xsa

导入硬件描述文件:

  • 方式1
cd /home/james/git/myproject
petalinux-config --get-hw-description=/home/james/git/target

方式2

cd /home/james/git/target/
petalinux-config --get-hw-description -p /home/james/git/myproject
``
方式3
```bash
petalinux-config --get-hw-description=/home/james/git/target -p /home/james/git/myproject

2.2.2 通过BSP工程创建工程

petalinux-create --type project -s aaa.bsp

说明:

  • 通过BSP工程创建的工程不需要指定工程名称

3 配置

3.1 配置工程

cd /home/james/git/myproject
petalinux-config

在这里插入图片描述

3.2 配置u-boot

petalinux-config -c u-boot

配置过程中需要从官方网络上下载对应的u-boot源码

3.3 配置kernel

petalinux-config -c kernel

配置过程中需要从官方网络上下载对应的kernel源码

3.4 配置rootfs

petalinux-config -c rootfs

在这里插入图片描述

4 编译

4.1 全部编译

cd /home/james/git/myproject
petalinux-build

4.2 编译u-boot

petalinux-build -c u-boot

4.3 编译kernel

petalinux-build -c kernel

4.4 编译文件系统

petalinux-build -c rootfs

4.5 编译更新device tree

petalinux-build -c device-tree -x cleanall
petalinux-build -c device-tree

5 生成BOOT.BIN文件

5.1 FPGA Manager没使能

petalinux-package --boot --force --format BIN --fsbl images/linux/zynqmp_fsbl.elf --fpga images/linux/system.bit  --u-boot
INFO: sourcing build tools
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/zynqmp_fsbl.elf"
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/pmufw.elf"
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/system.bit"
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/bl31.elf"
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/system.dtb"
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/u-boot.elf"
INFO: Generating zynqmp binary package BOOT.BIN...


****** Xilinx Bootgen v2020.1
  **** Build date : May 26 2020-14:07:15
    ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.


[INFO]   : Bootimage generated successfully

INFO: Binary is ready.

BOOT.BIN文件路径

/home/james/git/myproject/images/linux/BOOT.BIN

5.2 FPGA Manager使能

petalinux-package --boot --force --format BIN --fsbl images/linux/zynqmp_fsbl.elf  --u-boot
INFO: sourcing build tools
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/zynqmp_fsbl.elf"
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/pmufw.elf"
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/bl31.elf"
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/system.dtb"
INFO: File in BOOT BIN: "/home/james/git/rru/bz20rru/images/linux/u-boot.elf"
INFO: Generating zynqmp binary package BOOT.BIN...


****** Xilinx Bootgen v2020.1
  **** Build date : May 26 2020-14:07:15
    ** Copyright 1986-2020 Xilinx, Inc. All Rights Reserved.


[INFO]   : Bootimage generated successfully

INFO: Binary is ready.

参加后面10节手动加载FPGA目标文件

6 制作启动SD卡

6.1 SD卡分区

为SD卡分区:

  • 一个FAT32分区,分区Label:BOOT
  • 一个EXT4分区,分区Label:ROOTFS

6.2 复制文件

  • 复制到SD卡FAT32分区
rm /media/james/BOOT/BOOT.BIN
rm /media/james/BOOT/boot.scr
rm /media/james/BOOT/image.ub
cp images/linux/BOOT.BIN /media/james/BOOT/
cp images/linux/boot.scr /media/james/BOOT/
cp images/linux/image.ub /media/james/BOOT/
sync
  • 复制到SD卡ext4分区
sudo rm /media/james/ROOTFS/* -rf
sudo tar zxvf images/linux/rootfs.tar.gz -C /media/james/ROOTFS/
sync

7 选择文件系统启动

7.1 通过kernel设备树

chosen {
    bootargs = "earlycon=cdns,mmio,0xFF000000 console=ttyPS0,115200 clk_ignore_unused mem=512M uio_pdrv_genirq.of_id=generic-uio root=/dev/mmcblk1p2 rw rootfstype=ext4 rootwait";
    stdout-path = "serial0:115200n8";
};

7.2 通过u-boot的bootargs参数

setenv bootargs "earlycon console=ttyPS0,115200 clk_ignore_unused uio_pdrv_genirq.of_id=generic-uio noinitrd root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait";
saveenv

8 添加APP

8.1 添加APP

petalinux-create -t apps --name myapp --enable

8.2 添加驱动

petalinux-create -t modules --name mymoudle --enable

8.3 指定使用语言

petalinux-create -t apps --template c++ --name myapp --enable

8.4 编译

petalinux-build -c myapp -x clean
petalinux-build -c myapp -x install
petalinux-build -c myapp -x build

9 生成SDK

上述步骤是基于Petalinux系统制作系统和驱动。开发应用其实不用基于Petalinux。可以通过生成SDK开发应用,SDK包括开发应用所需的编译器及其它开发库。

9.1 生成SDK

cd /home/james/git/myproject
petalinux-build --sdk

9.2 安装SDK

sudo /home/james/git/myproject/sdk.sh

9.3 配置SDK环境

source /opt/petalinux/2020.1/environment-setup-aarch64-xilinx-linux

10 手动加载FPGA目标文件

Kernel 启动之后手动加载FPGA:

echo 0 > /sys/class/fpga_manager/fpga0/flags
mkdir -p /lib/firmware
cp /media/mydevice.bin /lib/firmware/
echo /lib/firmware/mydevice.bin > /sys/class/fpga_manager/fpga0/firmware

加载完成后在串口打印:

fpga_manager fpga0: writing fpga_ntrru_top.bin to Xilinx ZynqMP FPGA Manager

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/506705.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于ssm的家庭食谱管理系统(java项目+文档+源码)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的家庭食谱管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 家庭食谱管理系统的主要使用者…

前端 - 基础 表单标签 - 表单元素 input - type 属性 ( 单选按钮和复选按钮 )

input 标签 type 属性 ,上一篇讲了 输入框 和 密码框 这节看看 单选按钮 和 复选 按钮 目录 单选按钮 : 复选按钮 # 看上图就可以看到 单选按钮 -- radio 和 复选 按钮 -- checkbox 单选按钮 : 所谓单选按钮就是 有时…

Can‘t connect to server on ‘localhost‘ (10061)

问题:电脑关机重启后,连接不上mysql了,报错信息如下:2002 - Cant connect to server on localhost (10061)解决办法:很大的原因是mysql服务没有启动,需要你重启一下mysql: 以管理员的身份运行cm…

R使用netmeta程序包实现二分类数据的频率学网状meta分析

该研究检索了Cochrane对照试验中心注册,CINAHL,Embase,LILACS数据库,MEDLINE,MEDLINEIn-Process,PsycINFO,监管机构网站,以及从一开始就发布和未发表的双盲随机对照试验的国际注册20…

重构智能防丢产品,苹果Find My技术引领市场发展

目前市场上最主要的防丢技术是蓝牙防丢和GPS防丢,蓝牙防丢是通过感应防丢器与绑定手机的距离来实现防丢的。一般防丢会默认设置一个最远安全距离,超过这个安全距离后,与手机蓝牙信号断开,触发防丢报警,用户根据防丢报警…

百度贝塞尔曲线证码识别代码

一、前言 百度出了如图所示的验证码,需要拖动滑块,与如图所示的曲线轨迹进行重合。经过不断研究,终于解决了这个问题。我把识别代码分享给大家。 下面是使用selenium进行验证的,这样可以看到轨迹滑动的过程,如果需要…

Leetcode 234. 回文链表

心路历程: 一开始想到用栈,但是发现还是得到中点后才开始判断,时间空间没什么区别,还不如直接获取数组后正逆对比; 看了网上的O(1)空间复杂度方法,意思是按照奇数偶数判断完之后&am…

保护JavaScript代码安全性:探究JScrambler、JShaman、JSFack等常用加密混淆工具

摘要 本篇技术博客将介绍五款常用且好用的在线JavaScript加密混淆工具,包括 jscrambler、JShaman、jsfack、freejsobfuscator 和 jjencode。通过对这些工具的功能及使用方法进行详细解析,帮助开发人员更好地保护和加密其 JavaScript 代码,提…

142.环形链表

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整…

Spring Boot集成JPA快速入门demo

1.JPA介绍 JPA (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范。它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合 ORM 技术,结束现在 Hibernate,TopLink&am…

保护前端代码安全:探索JScrambler、JSFack、IpaGuard等五款JavaScript加密工具

摘要 本篇技术博客将介绍五款常用且好用的在线JavaScript加密混淆工具,包括 jscrambler、JShaman、jsfack、freejsobfuscator 和 jjencode。通过对这些工具的功能及使用方法进行详细解析,帮助开发人员更好地保护和加密其 JavaScript 代码,提…

websocketpp上手笔记-Windows安装

WebSocketpp是什么 最近手上有一个c项目,需要用websocket从服务器端收内容。于是网上找了圈,发现WebSocketpp库可以做websocket的客户端。 WebSocketpp也叫WebSocket,github地址是:https://github.com/zaphoyd/websocketpp&…

KMP字符串匹配算法

本文用于记录个人算法竞赛学习,仅供参考 目录 一.KMP 二.next数组(前缀表) 三.具体实现模板 四.题解 先来看一个问题 28. 找出字符串中第一个匹配项的下标 - 力扣(LeetCode) 对于这个问题,一般暴力做法…

三、Java的流程控制

1、Java的顺序流程控制 程序由一系列语句组成。 Java虽然是一种面向对象的计算机语言,但是在一个局部,例如方法体内,快语句内仍然需要面向过程的程序设计和方法。 作为面向过程程序设计精华的结构化程序设计思想,仍然是面向对象程序设计方法的基石。 1)表达式语句 由运…

浪潮分布式存储AS13000G6-M36、NF5466M6硬盘背板改扩配参考

AS13000G6分布式存储机型描述 浪潮分布式存储AS13000G6-M36机型,实际就是NF5466M6加上分布式存储软件的一体机产品,而NF5468M6也就是NF5280M6的主板加4U机箱结构。 该机器最大的特点是在4U空间内可以配置36块3.5寸大盘,硬盘背板为3.5*12&…

B82793S0513N201 共模扼流圈滤波器电感 51uH 800mA

B82793S0513N201是一款由TDK(东电化)公司生产的数据线扼流圈,用于电信领域的xDSL变压器。 制造商: TDK 产品品种: 共模扼流圈/滤波器 RoHS: 详细信息 系列: B82793S 安装风格: PCB Mount 端接类型: SMD/SMT 通道数量: 1 Channel 电感: 51 uH 容差: 30 % 最大直流电…

护眼台灯什么品牌好?台灯目前口碑最好的护眼灯推荐

随着生活水平的提供,越来越多的人重视起自身健康问题,尤其是视力健康,因此都会选择一款好的护眼台灯。不过市面上的护眼台灯款式多得人数不清,其中还包括了很多劣质产品。 这类台灯往往采用劣质LED灯珠,这种灯珠对人体…

【5G 接口协议】CU与DU之间的F1协议介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

如何使用 Python 本地客户端操作读写云服务器 Redis 缓存数据库详细教程(更新中)

Redis 基本概述 Redis(Remote Dictionary Server)是一个开源的使用 ANSI C 语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。它通常被称为数据结构服务器,因为值(value…

【Leetcode】2810. 故障键盘

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 你的笔记本键盘存在故障,每当你在上面输入字符 ′ i ′ i ′i′ 时,它会反转你所写的字符串。而输入其他字符则可以正常工作。 给你一个下标从 0 0 0 开始…