虚拟机环境

宿主机:win10

vmware 版本:VMware® Workstation 17 Pro

ubuntu版本 20.04 (如果用18.04的话, vscode 的remote SSH需要glibc

        的版本过低,无法使用Remote SSH 插件。。。。)

安装虚拟机分了 300G 空间,可以根据ug1144的推荐即可。

 Index of /releases/20.04.1

https://old-releases.ubuntu.com/releases/20.04.1/ubuntu-20.04-desktop-amd64.iso

虚拟机和宿主机复制粘贴(没试过传文件,都是复制文本)

虚拟机设置共享文件夹:

sudo apt install update

sudo apt install -y open-vm-tools open-vm-tools-desktop

安装好后需要 reboot 才能实现宿主机往ubuntu中拷贝

vmware 设置好共享目录后需要:

sudo vim /etc/fuse.conf

取消注释(或添加)这一行

user_allow_other

保存后(没写入fstab,所以重启后需要重新运行下面的 vmhgfs-fuse 开头的命令):

sudo mkdir -p /mnt/hgfs
sudo chmod 777 /mnt/hgfs
sudo vmhgfs-fuse .host/<share-dir>  /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000

##eg:

sudo vmhgfs-fuse -o allow_other -o auto_unmount .host:/xilinx /mnt/hgfs

安装tftp服务

1. sudo apt-get install tftp-hpa tftpd-hpa xinetd

        tftp-hpa 是客户端

        tftpd-hpa 是服务器

2. sudo mkdir /tftpboot

3. sudo chmod -R 777 /tftpboot

4. sudo chown -R nobody /tftpboot

5. sudo vim /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/tftpboot" # 这里是你的 tftpd-hpa 的服务目录,这个想建立在哪里都行TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l -c -s" # 这里是选项,-c 是可以上传文件的参数, -s 是指定 tftpdhpa 服务目录,上面已经指定

6. sudo service tftpd-hpa restart

7. sudo /etc/init.d/xinetd restart

测试 tfpt 是否已通:
netstat -a | grep tftp

安装NFS服务

1. sudo apt-get update

2. sudo apt-get install nfs-kernel-server

3. sudo apt-get install nfs-common

4. mkdir -p /tftpboot/nfsroot

5. sudo vim /etc/exports

/tftpboot/nfsroot *(rw,sync,no_root_squash,no_subtree_check)

6. sudo exportfs -a

7. sudo service nfs-kernel-server start

8. showmount -e

Petalinux 工具下载(需要登录账号):

https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/embedded-design-tools.html

ubuntu需要安装的依赖:

https://adaptivesupport.amd.com/s/article/76526?language=en_US

依赖安装

修改 dash

        sudo dpkg-reconfigure dash

选择 No

sudo apt install -y  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

创建安装目录

sudo mkdir -p /opt/plx_2021.1

sudo chown $USER  /opt/plx_2021.1

sudo chgrp $USER  /opt/plx_2021.1

安装

mkdir -p /opt/plx_2021.1/plx
./petalinux-v2021.1-final-installer.run -d /opt/plx_2021.1/plx

验证安装

(source 环境变量后可以使用命令补全)

修改根文件系统配置

将 INITRAMFS/INITRD 镜像名称从 petalinux-initramfs-image 更改为 petalinux-image-minimal:

petalinux-config ---> Image Packaging Configuration ---> Root filesystem type --->(INITRD)
$ petalinux-config ---> Image Packaging Configuration ---> INITRAMFS/INITRD Image Name (petalinux-image-minimal)

参考:AMD Customer Communityhttps://adaptivesupport.amd.com/s/article/76842?language=en_US

加快编译速度的设置

downloads包


tar -zxvf downloads_2021.1.tar.gz -C /opt/plx_2021.1/
解压后的文件路径/opt/plx_2021.1/downloads

解压 sstate 包


        tar -zxvf sstate_aarch64_2021.1.tar.gz -C /opt/plx_2021.1/

        解压后的文件路径
        /opt/plx_2021.1/sstate_aaarch64_2021.1/aarch64


使用downloads

使用 sstate

保留 uboot kernel 源码

vim project-spec/meta-user/conf/petalinuxbsp.conf

RM_WORK_EXCLUDE += "u-boot-xlnx"

RM_WORK_EXCLUDE += "linux-xlnx"
 

kernel: <petalinux_project>/build/tmp/work-shared/zynqmp-generic/kernel-source

uboot: <petalinux_project>/build/tmp/work/zynqmp_generic-xilinx-linux/u-bootxlnx/v2021.01-xilinx-v2021.1+gitAUTOINC+41fc08b3fe-r0/git

tftp下载 Image, system.dtb, 挂载nfs文件系统

uboot 中设置

//设置bootcmd

setenv bootcmd 'tftpboot 0x00200000 Image; tftpboot 0x00100000 system.dtb; booti 0x00200000 - 0x00100000'

//设置 bootargs

//说明:setenv bootargs console=ttyPS0,115200 root=/dev/nfs rw nfsroot=<NFS服务器IP>:<NFS共享路径>,v3,tcp ip=<开发板IP>:<NFS服务器IP>:<网关IP>:<子网掩码>:<主机名>:<网卡>:off

//板子ip:192.168.1.99, ubuntu ip:192.168.1.101。 nfs目录 /share/nfsroot

//将 petalinux 编译的 rootfs.tar.gz 解压。 tar -zxf rootfs.tar.gz -C /share/nfsroot
setenv bootargs console=ttyPS0,115200 root=/dev/nfs rw nfsroot=192.168.1.101:/share/nfsroot,tcp,vers=3 earlyprintk ip=192.168.1.99:192.168.1.101:192.168.1.1:255.255.255.0::eth0:off

保存设置
saveenv

tftp 下载Image, system.dtb, rootfs.cpio.gz.u-boot

setenv bootcmd \
    'tftpboot 0x00200000 Image; \
     tftpboot 0x00100000 system.dtb; \
     tftpboot 0x04000000 rootfs.cpio.gz.u-boot; \
     booti 0x00200000 0x04000000 0x00100000'

或者使用压缩格式的 Image.gz

setenv ipaddr 192.168.1.99
setenv serverip 192.168.1.101
setenv netmask 255.255.255.0
setenv gatewayip 192.168.1.1
=================================

setenv nfsroot /share/nfsroot
setenv nfsoptions rw,nolock,tcp,vers=3

setenv kernel_comp_addr_r 0x08000000  # 内核解压临时缓冲区
setenv kernel_comp_size 0x10000000   # 256MB缓冲区

setenv bootcmd \
    'tftpboot 0x00200000 Image.gz; \
     tftpboot 0x00100000 system.dtb; \
     setenv bootargs console=ttyPS0,115200 root=/dev/nfs nfsroot=192.168.1.101:/share/nfsroot,${nfsoptions} ip=192.168.1.99:192.168.1.101:192.168.1.1:255.255.255.0::eth0:off earlyprintk; \
     booti 0x00200000 - 0x00100000'

saveenv    

好了,一切就绪,可以随时修改 kernel, dtb , rootfs 之旅了。放弃 sd 卡拷贝来拷贝去吧。。。

ERROR: Failed to Kconfig project

如果 petalinux-config 失败可能是由于没有安装 libtinfo5 没有安装

INFO] Generating Kconfig for project

package require hsi FAILED:

invalid command name "hsi::create_dt_node"

    while executing

"hsi::create_dt_node -help"

    (in namespace eval "::hsi::help" script line 6)

    invoked from within

"namespace eval ::hsi::help {

    variable version 0.1

    ::xsdb::setcmdmeta {hsi create_dt_node} categories {hsi}

    ::xsdb::setcmdmeta {hsi create..."

    (file "/opt/plx2021.1/pxl/tool/xsct/scripts/xsct/hsi/hsihelp.tcl" line 25)

    invoked from within

"source /home/g/petalinux/tools/xsct/scripts/xsct/hsi/hsihelp.tcl"

    ("package ifneeded hsi::help 0.1" script)ERROR: Failed to generate /home/aba/00-prj/15eg/build/misc/config/Kconfig.syshw

ERROR: Failed to Kconfig project

sudo apt install -y libtinfo5

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐