1.首先搭建硬件环境(导出hdf文件)
1)进入vivado工程选择合适的板子型号,题主的板卡是zc706,芯片型号如下:
2)创建IPdesign
3)本文硬件上,将在ZYNQ Processing system里启用TTC、UART、SD以及之后可能用到的USB、Ethernet(网口0在bank1,bank1电压要选1.8V,否则报错)
MDIO也得选
4)然后automation自动连接外设
5)generate block design and generate output products
选择global
6)create HDL wrapper
7) 然后综合和implement,最后export hardware 生成hdf硬件描述语言
2.petalinux构建镜像文件
2.1步骤:
1.创建petalinux工程
2.将.hdf文件导入petalinux工程中
3.配置petalinux工程(配置内核,配置uboot,以及根文件系统)
4.编译petalinux工程(uboot镜像,内核镜像,rootfs,bitstream,fsbl镜像文件)
5.启动开发板子
2.2实践:
进入petalinux目录
命令说明
petalinux -boot 启动开发板
petalinux -build编译
petalinux -config 配置
petalinux -create 创建
petalinux -package 打包
z@ubuntu:~/PetaLinux2019.1$ petalinux-create --help
petalinux-create (c) 2005-2019 Xilinx, Inc.
This command creates a new PetaLinux Project or component
Usage:
petalinux-create [options] <-t|--type <-n|--name
Required:
-t, --type Available type:
* project : PetaLinux project
* apps : Linux user application
* modules : Linux user module
-n, --name specify a name for the component or
project. It is OPTIONAL to create a
PROJECT. If you specify source BSP when
you create a project, you are not
required to specify the name.
Options:
-p, --project specify full path to a PetaLinux project
this option is NOT USED for PROJECT CREATION.
default is the working project.
--force force overwriting an existing component
directory.
-h, --help show function usage
--enable this option applies to all types except
project.
enable the created component
Options for project:
--template zynqMP|zynq|microblaze
user needs specify which template to use.
-s|--source
1.创建工程
z@ubuntu:~/PetaLinux2019.1$ petalinux-create -t project --template zynq -n zynq_linux
INFO: Create project: zynq_linux
INFO: New project successfully created in /home/z/PetaLinux2019.1/zynq_linux
2.将hdf 文件导入到工程中
下面要配置开发板的调试串口
默认为uart_1为调试串口
首次运行比较慢。
直接运行petalinux-config直接打开界面
z@ubuntu:~/PetaLinux2019.1/zynq_linux$ petalinux-config --get-hw-description /home/z/hdf/petalinux_smallsystem.sdk/
INFO: Getting hardware description...
INFO: Rename design_1_wrapper.hdf to system.hdf
[INFO] generating Kconfig for project
[INFO] menuconfig project
*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.
[INFO] sourcing bitbake
[INFO] generating plnxtool conf
[INFO] generating meta-plnx-generated layer
[INFO] generating user layers
[INFO] generating machine configuration
[INFO] generating bbappends for project . This may take time !
因为太慢了我把处理器的内核改了一下,改成3GB,八核。然后终于成功了。
3.下面:petalinux-config -c u-boot 等待一段时间跳出图形化界面
然后在另外一个终端打开字符图形化界面:
4.petalinux-config -c kernel
5.petalinux-config -c rootfs
6.编译整个petalinux工程,也可以单独编译0
petalinux-build
最后生成的结果是在images/linux生成镜像文件
7.制作启动镜像文件BOOT.bin文件
boot.bin是多个镜像文件组合而成的,包括fsbl镜像文件,bitstream镜像文件,用户程序镜像文件
petalinux-package --boot --fsbl --fpga --u-boot --force
--boot:生成BOOT.bin镜像文件
--fsbl:用于指向fsbl镜像文件路径
--fpga:用于指向bitstream文件
--u-boot 用于指定u-boot(用户镜像文件)
--force :强制覆盖
z@ubuntu:~/PetaLinux2019.1/zynq_linux/images/linux$ petalinux-package --boot --fsbl ./zynq_fsbl.elf --fpga ./system.bit --u-boot ./u-boot.elf --force
INFO: File in BOOT BIN: "/home/z/PetaLinux2019.1/zynq_linux/images/linux/zynq_fsbl.elf"
INFO: File in BOOT BIN: "/home/z/PetaLinux2019.1/zynq_linux/images/linux/system.bit"
INFO: File in BOOT BIN: "/home/z/PetaLinux2019.1/zynq_linux/images/linux/u-boot.elf"
INFO: Generating Zynq binary package BOOT.BIN...
****** Xilinx Bootgen v2019.1
**** Build date : May 11 2019-11:15:10
** Copyright 1986-2019 Xilinx, Inc. All Rights Reserved.
INFO: Binary is ready.
WARNING: Unable to access the TFTPBOOT folder /tftpboot!!!
WARNING: Skip file copy to TFTPBOOT folder!!!
image.ub包括kernel,设备树和根文件系统。所有我们只需提供image.ub和BOOT.bin文件就可以了。
8.制作SD启动卡
将image.ub和BOOT.bin拷贝到SD卡的FAT32分区,再插入SD卡启动板卡。
首先将SD卡用读卡器读入,读入进入虚拟机,在虚拟机中查看板卡的挂载点:
z@ubuntu:~/PetaLinux2019.1/zynq_linux/images/linux$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.5G 0 1.5G 0% /dev
tmpfs 298M 8.8M 290M 3% /run
/dev/sda1 984G 36G 898G 4% /
tmpfs 1.5G 212K 1.5G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
vmhgfs-fuse 932G 623G 309G 67% /mnt/hgfs
tmpfs 298M 48K 298M 1% /run/user/1000
/dev/sdb1 60G 3.4G 57G 6% /media/z/DA18-EBFA
这张卡是旧卡,要把这个设备点卸载掉,创建一个新的FAT32分区。
z@ubuntu:~/PetaLinux2019.1/zynq_linux/images/linux$ umount /media/z/DA18-EBFA
然后再用df命令就找不到挂载点了
下面我们要创建FAT32分区,
z@ubuntu:~/PetaLinux2019.1/zynq_linux/images/linux$ sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): m
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
Command (m for help):
查看设备分区:
Command (m for help): p
Disk /dev/sdb: 59.7 GiB, 64088965120 bytes, 125173760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x06f41121
Device Boot Start End Sectors Size Id Type
/dev/sdb1 32768 125173759 125140992 59.7G c W95 FAT32 (LBA)
现在把这个分区删掉:
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
下面创建新的分区
Command (m for help): p
Disk /dev/sdb: 59.7 GiB, 64088965120 bytes, 125173760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x06f41121
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (1-4, default 1): 1
First sector (2048-125173759, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-125173759, default 125173759):
Created a new partition 1 of type 'Linux' and of size 59.7 GiB.
指定分区为FAT32
Command (m for help): t
Selected partition 1
Partition type (type L to list all types): L
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden or c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi ea Rufus alignment
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f1 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fd Linux raid auto
1c Hidden W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep
1e Hidden W95 FAT1 80 Old Minix be Solaris boot ff BBT
Partition type (type L to list all types): c
Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.
保存退出:
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
格式化:
z@ubuntu:~/PetaLinux2019.1/zynq_linux/images/linux$ sudo mkfs.vfat -F 32 -n boot /dev/sdb1
mkfs.fat 3.0.28 (2015-05-16)
mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows
然后手动挂载查看挂载点df -h
拷贝文件:
z@ubuntu:~/PetaLinux2019.1/zynq_linux/images/linux$ cp -a BOOT.BIN image.ub /media/z/boot/
同步和卸载:
z@ubuntu:~/PetaLinux2019.1/zynq_linux/images/linux$ sync
z@ubuntu:~/PetaLinux2019.1/zynq_linux/images/linux$ umount /media/z/boot
用户名和密码默认都是root.