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卡,等待之后续写出详细教程