PetaLinux @ Ubuntu20.04
在Ubuntu20.04下安装、测试PetaLinux
PetaLinux是Xilinx公司推出的嵌入式Linux开发套件,包括了Linux Kernel、u-boot、device-tree、rootfs等源码、库,以及Yocto recipes,可以让客户很方便的生成、配置、编译及自定义。PetaLinux支持Zynq UltraScale+ MPSoC、Zynq-7000全可编程SoC,以及MicroBlaze,可与Xilinx硬件设计工具Vivado协同工作,简化了Linux系统的开发工作。
使用PetaLinux工具,开发人员可以定制u-boot、Linux内核或Linux应用,开发者还可以通过网络或JTAG在随附的全系统仿真器 (QEMU) 或物理硬件上添加新的内核、器件驱动程序、应用和库,以及启动并测试软件协议栈,完成从系统启动到执行的所有操作。在主机端提供的PetaLinux工具包括:
- 命令行界面
- 应用、器件驱动程序、库生成器以及开发模板
- 可引导的系统镜像生成器
- 调试代理程序
- GCC工具集
- 集成的QEMU全系统仿真器
- 自动化工具
- 支持Xilinx系统调试器
参考文档:ug1144-petalinux-tools-reference-guide
安装必要的库和程序
Xilinx网站页面最下方的“2021.2_PetaLinux_Package_List.xlsx”文件内说明了针对不同Linux发行版所需库及其版本。
sudo apt-get install iproute2 gawk python3 python build-essential gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget git-core diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib automake zlib1g:i386 screen pax gzip cpio python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3
修改默认终端为bash
sudo dpkg-reconfigure dash
选择No
TFTP安装(非必须),参考https://www.cnblogs.com/5201351/p/4934625.html
sudo mkdir -p /tftpboot sudo chown -R $(whoami):$(whoami) /tftpboot
PetaLinux可在Xilinx官网免费下载,这里以2021.2为例,注意这里安装的版本要和Vivado的版本一致(包括子版本号)。
sudo mkdir -p /opt/xilinx/petalinux/2021.2 sudo chown -R $(whoami):$(whoami) /opt/xilinx/petalinux/2021.2/ ./petalinux-v2021.2-final-installer.run --dir /opt/xilinx/petalinux/2021.2
注意安装不需要管理员权限。
配置PetaLinux 工作环境,在~/.bashrc中加入
source /opt/xilinx/petalinux/2021.2/settings.sh
最后通过
echo $PETALINUX
验证安装。
使用PetaLinux进行离线编译
由于PetaLinux编译时需要下载很多依赖文件,由于网络的原因很容易导致失败,以2021.2为例整理了一下如何离线编译。
到官网下载aarch64 sstate-cache和downloads文件并解压。
配置本地downloads
在使用petalinux-config命令进入配置界面时,进入菜单“Yocto Settings ->Add pre-mirror url” 里,以file://格式提供上述download目录,比如“file:///opt/xilinx/petalinux/2021.2/downloads"配置sstate
选择Yocto Settings -> Local sstate feeds settings,填入aarch64 sstate-cache解压后的所在目录<your path>/aarch64
,这里不需要使用file://格式。设置离线编译(非必须)
进入菜单“Yocto Settings -> [] BB NO NETWORK”,按空格键,选择“BB NO NETWORK”。
设置后,可以到build/conf/plnxtool.conf文件检查配置参数。补充(非必须)
本地download也可以通过在文件project-spec/meta-user/conf/petalinuxbsp.conf里添加下列行设置。PREMIRRORS_prepend = "\ git://.*/.* file://<your path>/downloads/ \ ftp://.*/.* file://<your path>/downloads/ \ http://.*/.* file://<your path>/downloads/ \ https://.*/.* file://<your path>/downloads/ \ "
使用PetaLinux
新建PetaLinux工程,这里以ZCU102开发板为例,这里使用板级支持包BSP创建工程zcu102。
petalinux-create -t project -s <your path>/xilinx-zcu102-v2021.2-final.bsp -n zcu102 cd zcu102
导入硬件信息
注意:2019 年前的版本使用system.hdf 文件,而以后的版本使用system.xsa 文件,这需要将老版本的项目转换称为新版本的项目,或者重新建立一个vivado工程,File- ->Export–>Export Hardware,产生xsa 文件。petalinux-config --get-hw-description <PATH-TO-XSA-FILE>
出现system configuration menu,可参考前文配置离线编译
构建Image
cd build petalinux-build
经过较长时间等待后,images/linux文件夹产生bl31.elf,Image,pmufw.elf,u-boot.bin,zynqmp_fsbl.elf等文件。
产生Boot Image
cd .. petalinux-package --boot --u-boot --force
复制文件到SD卡
如需格式化SD,划分出两个分区,boot分区(500MB~1GB)和root分区。boot分区使用FAT32格式化,root使用ext4格式化,流程参考这里,SD卡在我的电脑上SD卡被识别到/dev/mmcblk0。- 复制images/linux或pre-built/linux/images/文件夹下的BOOT.BIN,image.ub,boot.scr文件到boot分区根目录。其中pre-built/linux/images是来自Xilinx BSP的测试过的文件. images/linux是根据用户自定义,经过petalinux编译过的文件。
- 复制文件系统到root分区
dd if=.images/linux/rootfs.ext4 of=/dev/mmcblk0p2
开发板插入SD,检查拨码开关SW6(On,Off,Off,Off),连接USB串口,上位机打开串口工具(如Putty),设置115200波特率。开发板上电后,查看串口输出。
关于SD卡
如遇如下报错:
blk_update_request: I/O error, dev mmcblk0, sector 4210690 op 0x1: (WRITE) flags 0x800 phys_seg 1 prio class 0
Buffer I/O error on dev mmcblk0p2, logical block 0, lost sync page write
EXT4-fs (mmcblk0p2): I/O error while writing superblock
EXT4-fs (mmcblk0p2): mount failed
VFS: Cannot open root device "mmcblk0p2" or unknown-block(179,2): error -5
可能是读写超时,需要更换其他SD卡,解释参考这个网站
这里对市面上常见的SD和TF卡(microSD+卡套)在zcu102上进行了测试,结果如下:
名称 | 型号 | 测试 | |
---|---|---|---|
SanDisk Ultra,闪迪至尊高速™ SD™ 存储卡 16GB | SDSDUNB-016G-ZN3IN | 通过 | |
SanDisk Ultra,闪迪至尊高速™ SD™ 存储卡 32GB | SDSDUNB-032G-ZN3IN | 通过 | |
SanDisk Extreme,闪迪至尊极速™ SD™ UHS-I 存储卡 64GB | SDSDXV6-064G-ZNCIN | 通过 | |
SanDisk Ultra,闪迪至尊高速™ microSD 16GB | SDSQUNC-016G-ZN3MN | 未通过 | |
SanDisk Extreme,闪迪至尊极速移动™ microSDXC™ UHS-I 存储卡 32GB | SDSQXNE-032G-ZN6MA | 未通过 | |
SanDisk Extreme PRO,闪迪至尊超极速移动™ microSDXC™ UHS-I 存储卡 32GB | SDSDQXP-032G-Z46A | 通过 | |
SanDisk HIGH ENDURANCE,闪迪® 高耐用 microSD™ 存储卡 32GB | SDSQQNR-032G-ZN6IA | 通过 | |
SanDisk MAX ENDURANCE,闪迪™专业级高耐用 microSD™ 存储卡 32GB | SDSQQVR-032G-ZN6IA | 通过 |
PetaLinux @ Ubuntu20.04相关推荐
- 【无标题】ubuntu20.04 开机引导后黑屏 光标闪现 无法进入图形桌面的解决方案_Denis.Zzzzzzzz?的博客-CSDN博客_ubuntu20黑屏光标闪烁
ubuntu20.04 开机引导后黑屏 光标闪现 无法进入图形桌面的解决方案_Denis.Zzzzzzzz?的博客-CSDN博客_ubuntu20黑屏光标闪烁
- 用UltraISO制作Ubuntu20.04 U盘启动盘
用UltraISO制作Ubuntu20.04 U盘启动盘 下载ubuntu系统 首先到官网下载新版系统 https://cn.ubuntu.com/download/desktop 制作启动盘 下载U ...
- 13.在Ubuntu20.04下,chromium无法输入中文以及如何卸载chromium浏览器
因为chromium安装比较简单,所以在Ubuntu20.04下直接安装了chromium,但是最近发现,无法在chromium中输入中文了,经过一顿折腾,最终也没搞定,解决办法就是安装Chrome ...
- linux 卸载 rtx,Ubuntu20.04系统卸载软件及清理系统垃圾缓存以及新力得
我们用Windows乃至手机Android系统用多了,都知道定时清理系统垃圾这种必修课.那么在Ubuntu这样的Linux系统下,我们应该怎么清理系统删除垃圾缓存呢?其实Ubuntu和Windows是 ...
- ubuntu20.04安装noetic版本ros
文章目录 1. ubuntu设置为中文界面 2.配置Ubuntu软件仓库 3.设置sources.list 4.设置密钥 5. 安装ros 6. 设置环境 7. 测试ROS安装是否成功 8. 初始化r ...
- ROS知识 【6】Ubuntu20.04下安装ROS-noetic
背景知识 SLAM技术严重依赖于ROS操作系统,因此,必须高度熟悉ROS才能进行SLAM编程. Ubuntu20.04是最新的Ubuntu操作系统,而ROS-Noetic是ROS1.0的最后一个版本. ...
- Ubuntu20.04中安装shutter
目录 事情起因 快速安装(命令行安装) 详细描述 官网截屏(使用shutter) 事情起因 从18.04 换成了20.04,但是自带的截屏实在太难用了.于是按照之前的方法安装了shutter,然而发现 ...
- [How TO]-图解virtualbox下安装ubuntu20.04虚拟机
文章目录 1.在virtualbox下安装ubuntu20.04 2.安装增强功能 1.在virtualbox下安装ubuntu20.04 注意:这里是将虚拟机安装到了C:\Users\zhhh8\V ...
- Ubuntu20.04上安装部署Elasticsearch
一.背景 在我们开发ElasticSearch相关功能的时候,想要本机部署一个ElasticSearch服务.想采用apt-get install 的方式来安装.本文在Ubuntu20.04上安装部署 ...
最新文章
- 基于点云方式的6D姿态识别
- getRunningTasks和getRunningAppProcesses失效
- GitHub上传本地代码到仓库[Windows]
- 用最少数量的箭引爆气球
- java 有选择的查询_如何在Java中将准备好的语句用于选择查询?
- Android NFC开发-理论篇
- 如何在本地管理和切换多个 github 账号?
- spark yarn 提交作业
- 详细说明手工创建oracle数据库实例
- 吉比特无源光纤说明书_光纤上网是如何实现的?
- spring cloud 项目打包时,有一个数据库配置的是现场的库,所以一直不成功,怎么办?
- java实现冒泡算法
- pip卸载安装的所有python包
- python 视频剪辑_视频剪辑什么鬼?Python 带你高效创作短视频
- MongoDB聚合操作MongoDB常用聚合管道聚合$project$match$count$group$unwind$limit$skip$sort$lookup用法及操作案例
- 概率统计学习笔记(9)——连续型:均匀分布、指数分布
- U盘中快捷方式病毒的解决方法
- css3之BFC、IFC、GFC和FFC
- 基于nginx搭建在线播放mp4
- 洛谷算法题单:模拟与高精度例题(下)