基于ZCU104的PS和PL数据交互例程(五):Petalinux流程

基于ZCU104的PS和PL数据交互例程(五):Petalinux流程

基于ZCU104的PS和PL数据交互例程(一):简介
基于ZCU104的PS和PL数据交互例程(二):vivado中封装现有工程成IP
基于ZCU104的PS和PL数据交互例程(三):vivado中创建IP
基于ZCU104的PS和PL数据交互例程(四):vivado中制作Block Design
基于ZCU104的PS和PL数据交互例程(五):Petalinux流程
基于ZCU104的PS和PL数据交互例程(六):上板流程
基于ZCU104的PS和PL数据交互例程(七):驱动编写与测试

在生成了硬件的xsa文件后,我们开始制作基于自定义架构的linux镜像。虽然板卡是zcu104,但是对于类似的zcu102,这种ZYNQ系列都是类似的。

下面的环境是在虚拟机 Ubuntu 18.04中进行的

1.安装petalinux 2020.2

参考官方文档Setting Up Your Environment • PetaLinux Tools Documentation Reference Guide (UG1144) • 阅读器 • AMD 自适应计算文档门户 (xilinx.com)

下载安装包

从官网下载petalinux2020.02版本安装包,petalinux-v2020.2-final-installer.run

下载 (xilinx.com)

安装依赖

sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential zlib1g:i386 screen pax gzip gawk

修改bash
PetaLinux 工具要求主机系统 /bin/sh 为“bash”。使用下面命令更改默认的系统 shell /bin/sh更改(选择“否”,更改完再用查看一下是否更改成功)。

sudo dpkg-reconfigure dash
#查看修改后是dash还是bash
ls -l /bin/sh

在Ubuntu中新建文件夹

sudo mkidr -p /opt/eda/petalinux/2020.2

修改opt文件夹权限

sudo chown -R username::username /opt
#假设我的用户名叫shuiliu,则我执行
sudo chown -R shuiliu:shuiliu /opt

运行安装

./petalinux-v2020.2-final-installer.run --dir /opt/eda/petalinux/2020.2

设置运行别名

vim ~/.bashrc
#在最后加入下面一行
alias sptl20='source /opt/eda/petalinux/2020.2/settings.sh'

关闭终端,否则需要source ~/.bahrc才能生效。

后面每次打开终端,如果需要运行petalinux环境,只需要输入下面指令就行

sptl20

2.petalinux流程

环境说明

Ubuntu18.04,vivado 2023,petalinux 2020

bsp 2020,下载 (xilinx.com)

准备好BSP一定要选择跟petalinux配套的版本和pynq的镜像

image-20231021214212952

流程

参考工程目录如图所示,我的主目录路径是*/home/shuiliu*,各自主机名不同,不清楚的话就是**~**路径,我在主目录下新建了一个workspace文件夹,后面都在这里操作

mkdir ~/workspace
home/shuiliu
workspace
BSP
install
ps_pl
XSA

文件夹说明:

BSP:里面放着从官网上下载的bsp文件

install:里面放着petalinux相关的安装包

ps_pl:里面是petalinux 的工程,注意这个文件夹不是我们mkdir创建的,是通过petalinux-create指令创建的

XSA:里面放着vivado生成的xsa文件

下面我们在workspace下新建终端,输出的路径应该是

pwd
#输出下面的结果
/home/shuiliu/workspace
  1. source petalinux的setting.sh,通常会用alias在.bashrc中设置为别名启动

    sptl20
    
  2. 创建工程,名称为ps_pl

    petalinux-create -t project -n ps_pl -s ./BSP/xilinx-zcu104-v2020.2-final.bsp
    
  3. 配置工程

    将生成的.hdf或者.xsa文件(vivado生成比特流后点击file-export hardware-勾选include 比特流)复制到新建的XSA文件夹

    然后执行下面的指令

    cd ps_pl
    petalinux-config --get-hw-description ../XSA/design_1_wrapper.xsa
    

    修改选项配置,选择从SD卡启动

    Image Packaging Configurations -> Root filesystem type -> SD card

    image-20231026164332760

    image-20231026164400442

    image-20231026164424234

    配置成功后如下图所示,选择save然后退出

    image-20231026164453113

  4. 修改设备树

    /project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi 的内容改为

    /include/ "system-conf.dtsi"
    &amba {
    	xlnk {
    		compatible = "xlnx,xlnk-1.0";
    	};
    };
    /{
       reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    		reserved: buffer@0x10000000 {
    			 no-map;
    			 reg = <0x10000000 0x0DF9E000>;
    		};
    	};
    
    	reserved-driver@0 {
    		compatible = "xlnx,reserved-memory";
    		memory-region = <&reserved>;
    	};
    };
    

    主要的目的是在PS的DDR中设置保留地址,从0x10000000开始,大小为0x0DF9E000,为了后面进行映射
    20231026补充一下

    这个方法在petalinux2018.02上面是没有问题,我在跑这个系列,在petalinux2020.02上用这个方法也是可以的。
    !!!但是,我在后面的工程里面遇到了一个问题,就是映射CMDA的地址后,无法读取和写入相关寄存器,以操作就会卡死。经过摸索,将这一步改为,不修改system-user.dtsi,保持默认,修改pl-custom.dtsi为下面的内容,就可以了

   / {
    reserved-memory {
        #address-cells = <2>;
        #size-cells = <2>;
        ranges;
        		 
		buffer@0x10000000 {
            no-map;
            reg = <0 0x10000000 0 0x0DF9E000>;
        };
    };
};
  1. 配置内核

    petalinux-config -c kernel
    

    不用修改什么,保存完,直接退出。这一步第一次加载会很久,后面有缓存了会好一些。

    但是要注意,Kernel hacking —>[ ] Filter access to /dev/mem --> Save & exit 只有取消这个,才能访问PSDDR的地址空间,这里bsp的配置直接没有选,所以我们也不需要改。

    出现下面这个界面后,先保存,后直接退出就行。

    image-20231026164808009

  2. 配置rootfs

    petalinux-config -c rootfs
    

    不用修改什么,保存完,直接退出

    image-20231026164903309

  3. build工程

    这一步会比较久

    petalinux-build
    
  4. 打包工程

    petalinux-package --boot --fsbl images/linux/zynqmp_fsbl.elf --pmufw images/linux/pmufw.elf --fpga images/linux/system.bit  --u-boot  images/linux/u-boot.elf --force
    
  5. 取出需要文件

    /images/linux目录下的 BOOT.bin ,image.ub 和 boot.csr这三个文件取出

    image-20231026165000760

    至此镜像准备完成

  • 25
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水流water

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值