如何搭建petalinux工程

11 篇文章 0 订阅

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Arist9612

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

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

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

打赏作者

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

抵扣说明:

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

余额充值