petalinux 方式移植 linux
petalinux 方式移植 linux
使用 Ubuntu 16.04LST
22.04 我用成功安装过一次 petalinux, 之后重装以后不知道为什么一直安装出问题,折磨了我两三天,换用 16.04 什么问题都没有
vivado2018.3 (Windows 下) + petalinux 2018.3 (Linux 下)
petalinux 安装
x
1 | sudo apt-get install tofrodos iproute2 gawk gcc g++ git make net-tools libncurses5-dev \ |
2、官网下载 PetaLinux,地址
选择需要的版本,这里选择和 Vivado 版本相同的 2018.3
3、创建文件夹
注意:安装后此目录被保存在环境 PRTALINUX 里,因此不要随便移动位置。这种大型应用我选择放在 opt 下
1 | sudo chown -R $USER:$USER /opt |
4、来到下载的 petalinux 安装包目录下使用以下指令安装 petalinux
1 | ./petalinux-v2018.3-final-installer.run /opt/pkg/petalinux/2018.3 |
运行上述命令后,需要等待一段时间,当出现 “Press Enter to display the license agreements” 字样的时候,按回车查看,按 q 退出,退出后输入 y,回车,如此重复三次,才开始正式安装
5、当遇到未安装 python 此类的 Error,跳转此链接有解决方法
6、修改 bash
petalinux 工具需要主机系统的 /bin/sh 是 bash,而 Ubuntu 默认的 /bin/sh 是 dash,所以这里需要进行更改
1 | sudo dpkg-reconfigure dash |
选择 “No” 按下回车即可。
petalinux 使用
1、设置 Petalinux 环境变量
每次第一次打开终端输入
1 | source /opt/pkg/petalinux/2018.3/settings.shls |
会点 linux 的可以自己设置别名或者自己设置自动载入,这里不细说
2、创建 petalinux 工程
在当前路径创建工程命令
1 | petalinux-create -t project --template <PLATFORM> --name <PROJECT_NAME> |
<PLATFORM> 有三种选项
- zynqMP (for UltraScale + MPSoC)
- zynq (for Zynq)
- microblaze (for MicroBlaze)
<PROJECT_NAME> 顾名思义工程名称
示例
1 | petalinux-create -t project --template zynqMP --name adrv9009_zcu102 |
创建成功显示
3、引入 HDL 文件
进入创建的工程的文件夹
然后再用该命令导入 hdl 文件的目录
1 | petalinux-config --get-hw-description <path to hdf file> |
注意是目录,不是 hdl 文件
Hdf 文件导入成功之后会自动弹出 petalinux 工程配置窗口
示例
1 | cd adrv9009_zcu102 |
4、进入 petalinux 设置窗口
使用方法:
通过键盘上的 “↑” 和 “↓” 键来选择要配置的菜单,按下 “Enter” 键进入子菜单。菜单中高亮的字母就是此菜单的热键,在键盘上按下此高亮字母对应的键可以快速选中对应的菜单。选中子菜单以后按下 “Y” 键就会将相应的配置选项写入配置文件中,菜单前面变为 “<*>”。按下 “N” 键不编译相应的代码,按下 “M” 键就会将相应的代码编译为模块,菜单前面变为 “
”。按两下 “Esc” 键退出,也就是返回到上一级,按下 “?” 键查看此菜单的帮助信息,按下 “/” 键打开搜索框,可以在搜索框输入要搜索的内容。
这里使用官方的给的 demo 做示例
找个地方 git clone
注意,我们用的版本是 petalinux 2018.3,下载完以后要记得切换到 2019_R1 分支,此版本是支持 2018.3 的,否则 ERROR: Unable to start bitbake server
1 | git clone https://github.com/analogdevicesinc/meta-adi.git |
在 petalinux 窗口,选择 Yocto Settings->User layers,然后添加刚刚 clone 的文件夹下两个下属文件夹 meta-adi-xilinx 和 meta-adi-core 的路径
重要提示:由于该层依赖于 meta-adi-core(因为用户空间工具),因此必须将其包含在 meta-adi-core 之后,否则 **
petalinux-config
** 将失败。
进入 “Image Packaging Configuration” 子菜单
第一个选项便是根文件系统的类型的配置,默认为 INITRAMFS,也可以选择 SD card
INITRAMFS 类型的根文件系统每次重新启动 linux 系统都是全新的、未改动过的,也 就是说启动系统后进行的所有修改掉电后就全部丢失了,再次重新启动还是之前未修改过的根 文件系统,选择 SD card 可以将根文件系统放在 SD 卡的 ext4 分区,这样启动系统后进行的所
选择 Save 保存后一路选择 Exit 退出
成功截图
5、配置 Linux 内核
终端输入
1 | petalinux-config -c kernel |
保持默认,Exit 退出
6、选择适合正在构建的项目的设备树
配置完成后,转到 <path-to-meta-adi>/recipes-bsp/device-tree 并打开 device-tree.bbappend 文件。在文件中将 KERNEL_DTB 变量设置为适合您的 FPGA 载体和 FMC 卡的变量。
意思是,进入下载好的 meta-adi
文件夹下
1 | cd ~/WorkSpace/meta-adi/meta-adi-xilinx/recipes-bsp/device-tree |
示意图
保存退出
7、编译项目
1 | cd build |
当遇到此种错误,系 Failed to fetch URL git://github.com/analogdevicesinc/libiio.git;branch=2019_R1
失败造成的,先打开 http 和 https 的 proxy(系统代理),然后键入,将 git:// 替换为 http 或者 https
1 | git config --global url."https://".insteadOf git:// |
实在不行还是 Error 的终极解决方法,因为要下载这个 Xilinx 官方验证过的 linux 内核,这文件很大,经常下载途中断联导致报错,折磨我到凌晨四点
导入下面设置 git 参数,不需要了可以在 ~/.gitconfig
里面删去
1 | git config --global url."https://gitclone.com/".insteadOf https:// |
经过漫长的编译过程成功后应该是这样的:
他这里会有一个 error,说写入到 “/tftpboot” 目录时出错。这些错误消息仅供参考,不会影响输出 image。可以在系统级配置中的 Image Packing Configuration
(镜像打包配置) 中关闭 Copy final images to tftpboot
(将最终映像复制到 tftpboot)这一选项来根除此 Error。
8、启动平台
构建 BOOT.bin,
1 | petalinux-package --boot --fsbl --fpga --u-boot |
输出文件将放在 path-to-petalinux-project>/images/linux
.
还需要烧录到 sd 卡,等待之后续写出详细教程
v1.5.2