Petalinux2019.1安装过程记录

1 更新安装必备软件包:
sudo apt-get update -y
sudo apt-get upgrade -y

2 安装petalinux依赖库
sudo apt-get install -y flex bison build-essential libssh-dev gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib zlib1g:i386 screen pax gzip gawk
sudo apt-get install -y make3.81 tofrodos_1.7.13+ds-2.debian.tar.xz gawk net-tools libncurses5-dev zlib1g:i386 libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar:1.24 unzip texinfo zlib1g-dev gcc-multilib build-essential screen pax gzip
sudo apt-get install -y python tofrodos iproute2 gcc gawk net-tools libncurses5-dev tftpd zlib1g:i386 libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential screen pax gzip xvfb libsdl1.2-dev libglib2.0-dev git x11proto-xf86dga-dev

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 -dev zlib1g:i386 screen pax gzip

3 打开终端默认配置petalinux2019.1环境:
打开文件:sudo gedit ~/.bashrc
末尾添加:source /home/zv/petalinux_2019_1/settings.sh

4 安装交叉编译工具链
解压 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.gz
配置路径:sudo gedit ~/.bashrc
在文件末尾添加:export PATH=/home/zv/tool/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH
保存退出,重新打开终端即可

5 tftp文件传输
->从PC机传文件至板卡
tftp -g -r filename 192.110.111.111 (pc地址)

->从板卡取文件至PC机
    tftp -p -r filename 192.168.10.33	(板卡Ip地址)

-g 表示下载文件
-p 表示上传文件
-r  表示远程主机的文件
-l 表示本地文件

根据2019.2版本对应的UG1144手册,比之前版本又增添了很多依赖库,整理安装指令如下:
sudo apt-get install tofrodos iproute2 gawk
sudo apt-get install gcc git make

sudo apt-get install xvfb
sudo apt-get install net-tools libncurses5-dev tftpd
sudo apt-get install zlib1g-dev zlib1g-dev:i386 libssl-dev flex bison libselinux1
sudo apt-get install gnupg wget diffstat chrpath socat xterm
sudo apt-get install autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev
sudo apt-get install screen pax gzip tar
整理指令如下:
sudo apt-get install tofrodos iproute2 gawk gcc git make xvfb net-tools libncurses5-dev tftpd zlib1g-dev zlib1g-dev:i386 libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev screen pax gzip tar

安装额外的库:
sudo apt-get install lib32z1 lib32ncurses5 libbz2-1.0:i386 lib32stdc++6

#安装petalinux时出现错误,提示缺少zlib和openssl,需要安装下面一个库
sudo apt-get install libssl-dev

#安装petalinux时出现警告,提示No tftp server found - please refer to “PetaLinux SDK Installation Guide” for its impact and solution,需要安装下面3个库,记得root权限
sudo apt-get install tftp-hpa tftpd-hpa xinetd

sudo mkdir /tftpboot
sudo chmod -R 777 /tftpboot

sudo gedit /etc/default/tftpd-hpa
#在文件中增加以下内容

/etc/default/tftpd-hpa

TFTP_USERNAME=“tftp”
TFTP_ADDRESS=“0.0.0.0:69”
TFTP_DIRECTORY=“/tftpboot” #服务器目录,需要设置权限为777
TFTP_OPTIONS=“-l-c -s”
#保存并退出
sudo service tftpd-hpa restart
netstat -an | more | grep udp
#看到有如下输出,即表示tftp安装成功
#udp 0 0 0.0.0.0:69 0.0.0.0:*

#在运行petalinux-config -c kernel出现错误,需要提前安装下面两个库
sudo apt-get install libncurses5 libncurses5-dev
#编译时会出现错误arm-xilinx-linux-gnueabi-gcc: Command not found,需要安装下面三个库
sudo apt-get install libc6:i386
sudo apt-get install libstdc++6:i386
sudo apt-get install zlib1g:i386
sudo apt-get install wget diffstat chrpath socat xterm autoconf libtool unzip texinfo zlib1g-dev gcc-multilib build-essential libsdl1.2-dev libglib2.0-dev

修改bash,ug1144中说了,所用到的/bin/sh命令都需要是bash的,而Ubuntu默认的/bin/sh是dash的,使用下面指令
sudo dpkg-reconfigure dash
并在弹出界面选“否”来禁用dash,选择bash

ls -al /bin/sh
会看到打印信息
lrwxrwxrwx 1 root root 9 Dec 8 14:59 /bin/sh -> /bin/bash

设置PetaLinux工作环境变量:
1 $ sudo gedit ~/.bashrc
添加如下内容,并保存
source /settings.sh

原文:https://blog.csdn.net/u013457167/article/details/77887705

2.安装ftp服务器
sudo apt-get install vsftpd

3.配置vsftpd.conf文件,要有root权限:
sudo vi /etc/vsftpd.conf
修改以下设置,允许匿名用户(如果嫌找代码麻烦,可以直接在最后添加):
anonymous_enable=YES
anon_root=/home/……/ftp
no_anon_password=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
保存退出

4.重启服务器,重新加载/etc/vsftpd.conf 配置文件
sudo /etc/init.d/vsftpd restart
至此,ftp服务器配置成功完成。

可参考 ug1209 手册
petalinux工程目录:/home/bhh/work/A1087_dma

配置交叉编译环境
export CROSS_COMPILE=aarch64-linux-gnu-
export ARCH=aarch64

创建petalinux工程:
1、根据具体芯片型号创建工程
petalinux-create --type project --template <CPU_TYPE> --name <PROJECT_NAME>
-------------------- -----------------------
具体的cpu型号 zynq工程名字
以UltraScale + MPSoc型号为例,执行如下指令:
petalinux-create --type project --template zynqMP --name A1087_dma
petalinux-create --type project --template zynqMP --name A1087_test

2、根据bsp来创建工程:petalinux-create -t project -s xilinx-zcu102-v2018.3-final.bsp

 .hdf文件配置petalinux工程:
 利用.hdf文件重新配置该petalinux工程:

将在vivado工程中生成的sdk文件夹下的.hdf文件复制到host machine中的BSP创建的工程目录下
然后执行指令:petalinux-config --get-hw-description ./ 进行linux内核的配置

qspi flash分区配置:
petalinux-config 进行内核选项配置:修改boot的起始地址为 0x1E00000

uboot的起始地址:0x0000 size:0x200000
kernel起始地址 :0x200000 size:0x4000000(内核镜像大小是64MB)
dtb位置起始地址 :0x4200000 size: 0x40000
pl-image地址 :0x4280000 size: 0x2000000
0x000000000000-0x000000200000 : “boot”
0x000000200000-0x000000240000 : “bootenv”
0x000000240000-0x000004240000 : “kernel”
0x000004240000-0x000004280000 : “dtb”
0x000004280000-0x000006280000 : “pl”

生成Boot.bin文件:
包含ps端与pl端的bit文件:
petalinux-package --boot --fsbl zynqmp_fsbl.elf --fpga system.bit --pmufw pmufw.elf --atf bl31.elf --u-boot u-boot.elf --force
petalinux-package --boot --fsbl --fpga --u-boot --force

 只利用了ps端没有bit文件生成板卡BOOT.bin 文件:
 生成Boot image的指令: petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot --force

 利用sdk制作QspiFlash模式启动的镜像格式:image.ub的offset地址需要更改为0x240000 (该镜像文件不包含 bit 文件)

//arch = zynqmp; split = false; format = BIN
the_ROM_image:
{
[fsbl_config]a53_x64
[bootloader]D:\05_work_prj\09_xczu15eg_test\xczu15eg_test\boot_image\qspi_boot\zynqmp_fsbl.elf
[destination_cpu = pmu]D:\05_work_prj\09_xczu15eg_test\xczu15eg_test\boot_image\qspi_boot\pmufw.elf
[destination_cpu = a53-0, exception_level = el-3]D:\05_work_prj\09_xczu15eg_test\xczu15eg_test\boot_image\qspi_boot\bl31.elf
[destination_cpu = a53-0, exception_level = el-2]D:\05_work_prj\09_xczu15eg_test\xczu15eg_test\boot_image\qspi_boot\u-boot.elf
[offset = 0x240000, destination_cpu = a53-0]D:\05_work_prj\09_xczu15eg_test\xczu15eg_test\boot_image\qspi_boot\image.ub
} 注意:bl31需要选中Enable trust zone

 板卡选取SD启动模式流程:

虚拟机上的nfs目录:/home/bhh/nfs
挂载nfs目录到开发板上:mount -t nfs -o nolock 192.168.1.157:/home/bhh/nfs /mnt

1 把SD卡的第一个分区格式为FAT32,执行指令:mkdosfs -F 32 /dev/mmcblk0p1
2 挂载SD卡的FAT32分区到/mnt/sdboot以便能够操作该分区: mount /dev/mmcblk0p1 /mnt/sd_boot
3 拷贝BOOT.BIN与image.ub文件到/mnt/sdboot:
cp /mnt/BOOT.BIN /mnt/sd_boot
cp /mnt/image.ub /mnt/sd_boot
4 然后卸载挂载项:umount /mnt/sd_boot
执行完上述指令后就把SD模式启动模式需要的两个启动文件就放到了SD卡中,板卡以SD模式启动后能正常启动内核。

利用uboo的tftpboot功能烧写板卡镜像:
u-boot中设置板卡IP地址及Windows服务端IP:
setenv ipaddr 192.168.1.254
setenv serverip 192.168.1.157
saveenv

 启动tftp软件并设置电脑端IP为服务端
 tftpboot 0x800000 BOOT.BIN && sf probe 0 0 0 && sf erase 0x0 0x200000 && sf write 0x800000  0x0 0x200000   //烧写u-boot
 tftpboot 0x800000 Image && sf erase 0x240000 0x4000000 && sf write 0x800000  0x240000 0x4000000 	     //烧写Image
 tftpboot 0x800000 system.dtb && sf erase 0x4240000 0x40000 && sf write 0x800000  0x4240000 0x40000	     //烧写设备树
 tftpboot 0x800000 system.bit.bin && sf erase 0x4280000 0x2000000 && sf write 0x800000 0x4280000 0x2000000  //烧写pl端bin文件
 
 tftpboot 0x800000 M_Top.bit.bin && sf erase 0x4280000 0x2000000 && sf write 0x800000 0x4280000 0x2000000 //烧写pl端bin文件
tftpboot 0x800000 M_A1087R_Top.bit.bin && sf erase 0x4280000 0x2000000 && sf write 0x800000 0x4280000 0x2000000 //烧写pl端bin文件
tftpboot 0x800000 design_1_wrapper.bin && sf erase 0x4280000 0x2000000 && sf write 0x800000 0x4280000 0x2000000

在uboot中设置板卡从qspi flash启动参数:
setenv bootcmd ‘run $modeboot’ 设置启动模式

只包含ps端启动文件参数
setenv qspiboot ‘sf probe 0 0 0 && echo Iamge is loading … && sf read 0x1000000 0x240000 0x4000000 && echo deviceTree is loading … && sf read 0x5000000 0x4240000 0x20000 && echo linux is loading … && booti 0x1000000 - 0x5000000’
saveenv

包含pl端bit文件的启动参数
setenv qspiboot ‘sf probe 0 0 0 && echo qspi-bitstream is loading … && sf read 0x100000 0x4280000 0x2000000 && fpga load 0 0x100000 0x2000000 && sleep 1 && echo Image is loading … && sf read 0x1000000 0x240000 0x4000000 && echo deviceTree is loading … && sf read 0x5000000 0x4240000 0x40000 && echo linux is loading … && booti 0x1000000 - 0x5000000’
saveenv

当前选用的Qspi启动参数设置方法:
setenv bootcmd ‘sf probe 0 0 0 && echo qspi-bitstream is loading … && sf read 0x100000 0x4280000 0x2000000 && fpga load 0 0x100000 0x2000000 && sleep 1 && echo Image is loading … && sf read 0x1000000 0x240000 0x4000000 && echo deviceTree is loading … && sf read 0x5000000 0x4240000 0x40000 && echo linux is loading … && booti 0x1000000 - 0x5000000’

/解决Jtag抓信号死机现象/
setenv bootargs ‘console=ttyPS0,115200n8 earlycon clk_ignore_unused cpuidle.off=1’

saveenv

setenv bootcmd ‘sf probe 0 0 0 && echo Image is loading … && sf read 0x1000000 0x240000 0x4000000 && echo deviceTree is loading … && sf read 0x5000000 0x4240000 0x40000 && echo linux is loading … && booti 0x1000000 - 0x5000000’
saveenv

 动态加载.bit.bin文件配置参数:

echo 0 > /sys/class/fpga_manager/fpga0/flags
mkdir -p /lib/firmware

echo M_Top.bit.bin > /sys/class/fpga_manager/fpga0/firmware
echo system.bit.bin > /sys/class/fpga_manager/fpga0/firmware
echo M_A1087Top.bit.bin > /sys/class/fpga_manager/fpga0/firmware

 为flash镜像文件分区建立软链接:

ln -s /dev/mtd0 /dev/flash/qspi/u-boot
ln -s /dev/mtd2 /dev/flash/qspi/kernel
ln -s /dev/mtd3 /dev/flash/qspi/dtb
ln -s /dev/mtd4 /dev/flash/qspi/pl-image

利用文件系统的flashcp指令烧写镜像文件:
flashcp -v BOOT.BIN /dev/flash/qspi/u-boot
flashcp -v Image /dev/flash/qspi/kernel
flashcp -v system.dtb /dev/flash/qspi/dtb
flashcp -v system.bit.bin /dev/flash/qspi/pl-image

flashcp -v M_Top.bit.bin /dev/flash/qspi/pl-image

挂载虚拟机nfs目录到板卡:
虚拟机上的nfs目录:/home/bhh/nfs
挂载nfs目录到板卡上:mount -t nfs -o nolock 192.168.1.167:/home/bhh/nfs /mnt
mkdosfs -F 32 /dev/mmcblk0p1
A3板卡分区情况: 厂家板卡分区情况:
[ 2.198199] Creating 5 MTD partitions on “spi0.0”: [ 2.519820] Creating 4 MTD partitions on “spi0.0”:
[ 2.202959] 0x000000000000-0x000000200000 : “boot” [ 2.524630] 0x000000000000-0x000000100000 : “qspi-fsbl-uboot”
[ 2.208146] 0x000000200000-0x000000240000 : “bootenv” [ 2.531014] 0x000000100000-0x000004100000 : “qspi-linux”
[ 2.213111] 0x000000240000-0x000004240000 : “kernel” [ 2.536922] 0x000005000000-0x000005020000 : “qspi-device-tree”
[ 2.217994] 0x000004240000-0x000004260000 : “dtb” [ 2.543347] 0x000006000000-0x000008000000 : “qspi-pl-image”
[ 2.222684] 0x000004260000-0x000006260000 : “pl-image”

设置A3板卡启动参数:
setenv bootcmd ‘sf probe 0 0 0 && echo qspi-bitstream is loading … && sf read 0x800000 0x6000000 0x2000000 && fpga load 0 0x800000 0x2000000 && echo Iamge is loading … && sf read 0x80000 0x240000 0x4000000 && echo deviceTree is loading … && sf read 0x4200000 0x4240000 0x20000 && echo linux is loading … && bootm 0x80000 0x4200000’

setenv bootcmd ‘sf probe 0 0 0 && echo qspi-bitstream is loading … && sf read 0x100000 0x6000000 0x2000000 && fpga load 0 0x100000 0x2000000 && sleep 1 && echo Iamge is loading … && sf read 0x1000000 0x240000 0x4000000 && echo deviceTree is loading … && sf read 0x5000000 0x4240000 0x20000 && echo linux is loading … && booti 0x1000000 - 0x5000000’

setenv qspiboot ‘sf probe 0 0 0 && echo Iamge is loading … && sf read 0x1000000 0x240000 0x4000000 && echo deviceTree is loading … && sf read 0x5000000 0x4240000 0x20000 && echo linux is loading … && booti 0x1000000 - 0x5000000’

利用uboot的tftp烧写板卡镜像:
tftpboot 0x800000 BOOT.BIN && sf probe 0 0 0 && sf erase 0x0 0x200000 && sf write 0x800000 0x0 0x200000 //烧写u-boot
tftpboot 0x800000 Image && sf erase 0x240000 0x4000000 && sf write 0x800000 0x240000 0x4000000 //烧写Image
tftpboot 0x800000 system.dtb && sf erase 0x4240000 0x20000 && sf write 0x800000 0x4240000 0x20000 //烧写设备树
tftpboot 0x800000 design_1_wrapper.bit.bin && sf erase 0x6000000 0x2000000 && sf write 0x800000 0x6000000 0x2000000 //烧写pl端bin文件

原文链接:https://blog.csdn.net/csdnliming147/article/details/53432444
"qspiboot=echo Copying Linux from QSPI flash to RAM… && "
"sf probe 0 50000000 0 && "
"sf read ${kernel_load_address} 0x240000 ${kernel_size} && "
"sf read ${devicetree_load_address} 0x4240000 ${devicetree_size} && "
"echo Copying ramdisk… && "
"sf read ${ramdisk_load_address} 0x620000 ${ramdisk_size} && "
“bootm ${kernel_load_address} ${ramdisk_load_address} ${devicetree_load_address}\0” \

利用文件系统的flashcp指令烧写镜像文件:
flashcp -v BOOT.BIN /dev/mtd0
flashcp -v Image /dev/mtd2
flashcp -v system.dtb /dev/mtd3
flashcp -v design_1_wrapper.bit.bin /dev/mtd4

厂家设备参数:
HD-NSPB> printenv
arch=arm
baudrate=115200
board=zynqmp
board_name=zynqmp
bootargs=earlycon clk_ignore_unused hugepages=1
bootcmd=run $modeboot
bootdelay=2
cpu=armv8
eth1addr=00:04:9F:02:01:FD
ethact=ethernet@ff0b0000
ethaddr=00:04:9F:02:00:FD
ethprime=ethernet@ff0b0000
fdt_addr=4200000
fdt_offset=0x5000000
fdt_size=0x20000
fdtcontroladdr=6ff83910
ipaddr=192.168.255.100
jtagboot=tftpboot $kernel_addr Image && tftpboot $fdt_addr system.dtb && booti $kernel_addr - $fdt_addr
kernel_addr=0x80000
kernel_offset=0x100000
kernel_size=0x4000000
modeboot=qspiboot
netboot=tftpboot $kernel_addr Image && tftpboot $fdt_addr system.dtb && booti $kernel_addr - $fdt_addr
netmask=255.255.255.0
pl_netload=tftpboot $plimage_addr plimage.bin && fpga load 0 $plimage_addr $filesize
pl_qspiload=sf probe 0 0 0 && sf read $plimage_addr $plimage_offset $plimage_size && fpga load 0 $plimage_addr $plimage_size
plimage_addr=0x100000
plimage_offset=0x6000000
plimage_size=0x1C00000
qspiboot=sf probe 0 0 0 && sf read $plimage_addr $plimage_offset $plimage_size && fpga load 0 $plimage_addr $plimage_size && sleep 1 && sf read $fdt_addr $fdt_offset $fdt_size && sf read $kernel_addr $kernel_offset $kernel_size && booti $kernel_addr - $fdt_addr
serverip=192.168.255.50
setup=setenv partid 0
soc=zynqmp
stderr=serial@ff000000
stdin=serial@ff000000
stdout=serial@ff000000
vendor=xilinx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值