1.配置petalinux运行环境
- 安装好petalinux后,在对应的文件夹中有一个 settings.sh 文件,每次打开终端后需要打开对应路径 source 它,以配置运行petalinux所需的环境变量。
source settings.sh
- 如觉得麻烦,方式1:可以将上述命令改为绝对路径的方式,添加到home路径下的.bashrc文件中,之后每次打开新的终端都会运行这个命令。
source /home/ar/petalinux/settings.sh
vi ~/.bashrc
- 方式2:将设置Petalinux 环境变量的命令设置成别名sptl,这样我们使用起来就方便些。设置别名方法的很简单, 在终端输入如下命令.以后我们打开终端后,输入 sptl 就可以设置 Petalinux 的环境变量了:
echo "alias sptl='source $PETALINUX/settings.sh'" >> ~/.bashrc
2.petalinux设计流程简介
- 1、搭建vivado工程,导出hdf文件(硬件支持文件,在Windows下进行SDK设计时候也用到)
- 2、创建petalinux工程
- 3、将hdf文件导入petalinux工程,将vivado设计应用其中
- 4、配置petalinux工程:
- 配置内核
- 配置U-Boot
- 配置根文件系统
- 5、编译petalinux工程(非必须、保持默认也行)
- 得到内核镜像、U-boot镜像、根文件系统rootfs镜像
- 比特流文件
- FSBL
- 6、启动ZYNQ板
3.petalinux使用实战
- 1、将vivado创建的hdf文件拷贝至Ubuntu中。
cp -r /mnt/hgfs/share/Navigator_7020.sdk /home/ar/hdf
#-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
- 2、创建工程
# 进入petalinux目录下,输入petalinux后按两次tab,弹出所有支持的命令
petalinux-boot :启动开发板
petalinux-config:配置
petalinux-package :打包
petalinux-build:编译
petalinux-create:创建工程
petalinux-util
petalinux-create --help可以查看帮助
创建工程:
petalinux-create -t project --template zynq -n ALIENTEK-ZYNQ
- 3、将hdf导入工程(会自动弹出字符图形化配置界面,可以设置串口)
petalinux-config --get-hw-description ../../hdf/Navigator_7020.sdk/
- 4、配置petalinux(首次配置会很慢)
petalinux-config //打开配置菜单
petalinux-config -c u-boot //配置u-boot
petalinux-config -c kernel //配置内核
petalinux-config -c rootfs //配置根文件系统
- 5、编译工程
可以编译整个petalinux工程(包括U-boot、kernel、设备树、rootfs、fsbl、bit流)也可以单独编译上述各项
petalinux-build//编译整个工程
petalinux-build -c kernel //编译内核
编译后在工程目录下的Linux文件夹中可见images文件夹,其中包含:
* zynq_fsbl.elf:ARM内核启动执行PS的代码,将FLASH,或者SD卡的第一阶段的bootloader拷贝到DDR3执行,完成FPGA配置(如果没有BIT流就不用配置),初始化MIO,初始化DDR3,初始化时钟,然后加载uboot到DDR3。
* uboot.elf:第二阶段bootloader,负责将image.ub加载到DDR3。
* Image.ub:petalinux的image,包括ramdisk,设备树等
- 5.1、制作启动镜像文件:boot.bin(多个镜像文件整合而来)
对于zynq:boot.bin = fsbl镜像文件+bitstream文件(不用PL就不需要)+用户程序镜像文件(u-boot )
#进入编译后产生输出文件的目录下
petalinux-package --boot --fsbl ./zynq_fsbl.elf --fpga ./system.bit --u-boot ./u-boot.elf --force
--boot 生成boot.bin启动镜像文件
--fsbl 用于指定fsbl镜像文件路径 zynq_fsbl.elf
--fpga 指定bitstream文件路径 system.bit
--u-boot 指定u-boot镜像文件路径(用户程序镜像)u-boot.elf
--force 强制覆盖本路径下的生成文件(-o可以指定路径)
对于zynq启动嵌入式Linux需要image.ub(rootfs+kernel+设备树)和boot.bin (rootfs+fsbl+bit流)
- 5.2 制作SD启动卡
将镜像文件 image.ub 和 boot.bin 拷贝到SD卡的FAT32分区,插入板载的TF卡槽
df -h //查看sd卡
umount /media/zynq/boot //卸载sd卡 umount /挂载点
(1)创建个FAT分区,命令执行过程如下:
ar@ar:~/petalinux/ALIENTEK-ZYNQ/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.
命令(输入 m 获取帮助): 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
命令(输入 m 获取帮助): p(输出分区表)
Disk /dev/sdb: 14.9 GiB, 15931539456 bytes, 31116288 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: 0xfcf79508
设备 启动 Start 末尾 扇区 Size Id 类型
/dev/sdb1 8192 31116287 31108096 14.9G c W95 FAT32 (LBA)
命令(输入 m 获取帮助): d(删除分区)
Selected partition 1
Partition 1 has been deleted.
命令(输入 m 获取帮助): p(输出分区表)
Disk /dev/sdb: 14.9 GiB, 15931539456 bytes, 31116288 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: 0xfcf79508
命令(输入 m 获取帮助): n(add a new partition)(剩下的命令全部默认,一路回车)
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
分区号 (1-4, default 1):
First sector (2048-31116287, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-31116287, default 31116287):
Created a new partition 1 of type 'Linux' and of size 14.9 GiB.
命令(输入 m 获取帮助): p
Disk /dev/sdb: 14.9 GiB, 15931539456 bytes, 31116288 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: 0xfcf79508
设备 启动 Start 末尾 扇区 Size Id 类型
/dev/sdb1 2048 31116287 31114240 14.9G 83 Linux
# 上面创建出的SD卡是Linux类型,应该是FAT32类型
命令(输入 m 获取帮助): t(change a partition type)
Selected partition 1
Partition type (type L to list all types): L
0 空 24 NEC DOS 81 Minix / 旧 Linu bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux 交换 / 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 扩展 c7 Syrinx
5 扩展 41 PPC PReP Boot 86 NTFS 卷集 da 非文件系统数据
6 FAT16 42 SFS 87 NTFS 卷集 db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux 纯文本 de Dell 工具
8 AIX 4e QNX4.x 第2部分 8e Linux LVM df BootIt
9 AIX 可启动 4f QNX4.x 第3部分 93 Amoeba e1 DOS 访问
a OS/2 启动管理器 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 休 ea Rufus alignment
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
f W95 扩展 (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/
11 隐藏的 FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC
12 Compaq 诊断 5c Priam Edisk a9 NetBSD f1 SpeedStor
14 隐藏的 FAT16 <3 61 SpeedStor ab Darwin 启动 f4 SpeedStor
16 隐藏的 FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS 次要
17 隐藏的 HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST 智能睡眠 65 Novell Netware b8 BSDI swap fc VMware VMKCORE
1b 隐藏的 W95 FAT3 70 DiskSecure 多启 bb Boot Wizard 隐 fd Linux raid 自动
1c 隐藏的 W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep
1e 隐藏的 W95 FAT1 80 旧 Minix be Solaris 启动 ff BBT
Partition type (type L to list all types): c
Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.
命令(输入 m 获取帮助): p
Disk /dev/sdb: 14.9 GiB, 15931539456 bytes, 31116288 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: 0xfcf79508
设备 启动 Start 末尾 扇区 Size Id 类型
/dev/sdb1 2048 31116287 31114240 14.9G c W95 FAT32 (LBA)
命令(输入 m 获取帮助): w(write table to disk and exit)
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
(2)格式化并挂载
sudo mkfs.vfat -F 32 -n boot /dev/sdb1
-F 32:FAT32
-n boot:分区名为boot
/dev/sdb1:分区的盘符
可以用mount命令手动挂载,也可点击左侧最下方USB图表实现挂载
(3)拷贝image.ub和boot.bin
cp -a image.ub boot.bin /media/ar/boot
(4)同步、卸载
sync
umount /media/zynq/boot
- 6、启动开发板
将SD卡插入卡槽,开启串口终端软件(MobaXterm)
完全启动后会进入Linux系统 打印Linux命令行
若板子没有正常启动进入Linux系统,而是停留在了U-boot阶段(打印显示zynq >)。此时执行下列命令恢复U-boot环境变量,再执行boot命令启动内核。
env default -a
默认的用户名和密码都是root