petalinux配置qspi启动(2022.1版本)

基础步骤参考“一、SD卡启动”步骤1-10

主要步骤参考博客:ZYNQ无SD卡配置Linux系统到QSPI Flash和eMMC_zynq emmc-CSDN博客

注意1:博客中Advanced bootable images命令在petalinux2019版本后被移除

注意2:qspiflash如不对内核文件进行特殊修改,只能读取前16MB的内容,所以vivado生成sdk时可按下面步骤进行压缩,对实际运行暂未发现影响。

预操作:

按“一、SD卡启动”执行步骤8-10

petalinux-config --get-hw-description <此处填写工程对应的SDK文件完整路径>

Subsystem AUTO Hardware SettingsSD/SDIO Settings的Primary SD/SDIO设置成ps7_sd_1

Image Packaging Configuration -> Root filesystem type选择INITRAMFS

  1. 在虚拟机中搭建好tftp服务器:

1.1 sudo apt-get install tftp-hpa tftpd-hpa

1.2 sudo apt-get install xinetd

1.3 mkdir /home/<用户名>/Tools/tftp

    若无法创建,则先创建其母文件夹

1.4 chmod 777 /home/<用户名>/Tools/tftp

1.5 sudo touch /etc/xinetd.d/tftp

    若无文件夹,则先创建文件夹

    1. sudo vim /etc/xinetd.d/tftp

在弹出页面中单击i,输入以下内容后单击ESC后输入:wq退出:

server tftp

{

    socket_type = dgram

    protocol = udp

    wait = yes

    user = root

    server = /usr/sbin/in.tftpd

    server_args = -s /home/<用户名>/Tools/tftp

    disable = no

    per_source = 11

    cps = 100 2

    flags = IPv4

}

    1. sudo service tftpd-hpa start

双击d,清除完后单击i,输入以下内容后单击ESC后输入:wq退出:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/home/<用户名>/Tools/tftp "

TFTP_ADDRESS=":69"

TFTP_OPTIONS="-l -c -s"

    1. sudo service tftpd-hpa restart
    2. 完成后执行petalinux-config, Image Packaging Configuration -> tftpboot directory 填入 /home/<用户名>/Tools/tftp/tftpboot

  1. 创建petalinux工程

2.1 petalinux-config -c kernel

    Device Drivers->Network device support->PHY Device support and infrastructure使能Micrel PHYS/Xilinx GMII2RGMII converter driver

    File systems -> Network File Systems -> NFS client support for NFSv4.1/NFS:Disable NFS UDP protocol support/NFS server support for NFS version 4

2.2 输入 petalinux-config -c u-boot ;配置u-boot内核启动方式,选择boot options->boot media->support for booting from qspiflash

2.3 petalinux-config -c rootfs  (后面如需使用更多的配置,可参考“一、SD卡启动”11-14建立工程)

Filesystem Packages->base->util-linux->util-linux/ util-linux-blkid/ util-linux-fdisk/ util-linux-mount/ util-linux-mkfs        (5个)

以及Filesystem Packages->base->e2fsprogs/e2fsprogs-mke2fs       (2个)

以及Filesystem Packages->console->utils->vim->vim

以及Filesystem Packages->console->tools->parted->parted

以及Filesystem Packages->utils->dosfstools->dosfstools

2.4 petalinux-build

2.5 petalinux-package --boot --u-boot --fpga --force

2.6 将生成的BOOT.BIN 和 zynq_fsbl.elf 文件拷贝至windows主机,利用VITIS program_flash进行烧录操作(板子调至JTAG启动模式)

  1. 烧写EMMC

3.1 开发板设置成QSPI启动,UART连到Windows主机上,开发板网口连接路由器,打开串口助手,在倒计时结束前迅速按下回车,进入u-boot系统

3.2 在uboot命令行输入 mmc dev 1 ; mmc info,出现如图信息

3.3 接下来对开发板与电脑进行网络连接,点击编辑->虚拟网络编辑器

参考:uboot阶段使用TFTP 传输文件 - 知乎

3.4 更改网络设置,修改VMnet0,外部连接修改为电脑对应的网口(非wifi)

3.5 关闭虚拟机,编辑虚拟机设置,添加网络适配器,网络连接修改为自定义->VMnet0 ,重启虚拟机

3.6 如出现虚拟机右上角网络图标消失,执行下面命令:

    sudo service network-manager stop

    sudo rm /var/lib/NetworkManager/NetworkManager.state

    sudo service network-manager start

3.7 执行ifconfig,找到除ens33和lo外的条目,如 ens37

3.8 sudo vim /etc/netplan/01-network-manager-all.yaml,将内容修改为

network:

  version: 2

  renderer: NetworkManager

  ethernets:

    ens37:

      dhcp4: false

      addresses: [192.168.0.111/24]

      gateway4: 192.168.0.1

      nameservers:

        addresses: [8.8.8.8,114.114.114.114]

3.9 sudo netplan apply

3.10 回到串口终端,输入:

setenv serverip 192.168.0.111

setenv ipaddr 192.168.0.100

setenv gatewayip 192.168.0.255

setenv netmask 255.255.255.0

saveenv

3.11 在传输前,请先将image.ub文件放在/home/<ip>/Tools/tftp目录下,接下来在串口输入下面命令

    tftpboot 0x10000000 image.ub

3.12 bootm 0x10000000(此处根据传输时具体的load address进行修改)

3.13 看到如下界面即为成功,账号默认petalinux,密码第一次自行设置

3.14 输入ls /dev/mmcblk*,如图所示即尚未分区。如果已经分区,可在3.15的Command输入d进行删除。

3.15 接下来对emmc进行分区操作

    sudo fdisk /dev/mmcblk1

        Command: n

        Select: p

        Partition number: 1

        First sector: 直接回车

        Last sector: +256M

        Command: n

        Select: p

        Partition number: 2

        First sector: 直接回车

        Last sector: +5120M

        Command: p

        Command: w

3.16 sudo mkfs.vfat -F 32 /dev/mmcblk1p1

3.17 sudo mkfs.ext4 /dev/mmcblk1p2

3.18 创建挂载文件夹:

    mkdir mmcp1

    mkdir mmcp2

sudo mount /dev/mmcblk1p1 mmcp1

sudo mount /dev/mmcblk1p2 mmcp2

4、将文件系统转入emmc

4.1 sudo ifconfig eth0 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255

    sudo route add default gw 192.168.0.1

    service network restart

4.2   mkdir -p /mnt

    cd /mnt

sudo tftp -g -r rootfs.tar.gz 192.168.0.111

4.3   sudo tar -zxvf rootfs.tar.gz -C /home/petalinux/mmcp2

5、重新配置Linux系统

5.1 petalinux-config 将Image Packaging Configuration->Rootfilesystem type改为EXT4,Device node of SD device改为/dev/mmcblk1p2

5.2 按2.4 2.5编译,并将生成的image.ub和system.dtb复制到tftp目录下。

5.3 串口终端cd 进入mmcp1文件夹:

    sudo tftp -g -r image.ub 192.168.0.111

    sudo tftp -g -r system.dtb 192.168.0.111

    注意:mmcp1挂载的emmc空间有限,所以需要注意image.ub的大小

5.4 sudo umount mmcp1

    sudo umount mmcp2

5.5 再次烧写BOOT.BIN进入qspiflash中

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Take Me To Infinity787

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

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

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

打赏作者

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

抵扣说明:

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

余额充值