OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1245|回复: 0

《DFZU2EG_4EV MPSoC开发板之嵌入式Linux 驱动开发指南》 第六章 Petalinux设计流程实战(下)

[复制链接]

1117

主题

1128

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4666
金钱
4666
注册时间
2019-5-8
在线时间
1224 小时
发表于 2024-1-26 17:35:41 | 显示全部楼层 |阅读模式
本帖最后由 正点原子运营 于 2024-1-25 11:15 编辑

第六章 Petalinux设计流程实战
1)实验平台:正点原子 DFZU2EG_4EV MPSoC开发板

2) 章节摘自【正点原子】DFZU2EG_4EV MPSoC开发板之嵌入式Linux 驱动开发指南 V1.0

3)购买链接:https://detail.tmall.com/item.htm?id=692450874670

4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/fpga/zdyz-MPSOC.html

5)正点原子官方B站:https://space.bilibili.com/394620890

6)Linux技术交流QQ群:887820935

155537c2odj87vz1z9vj6l.jpg

155537nfqovl2gg9faaol9.png

6.3.8 编译Petalinux工程
现在我们就可以编译整个Petalinux工程了,在终端输入如下命令:
  1. <font face="Tahoma">petalinux-build</font>
复制代码
该命令将生成设备树DTB文件、fsbl文件、U-Boot文件,Linux内核和根文件系统映像。编译完成后,生成的映像将位于工程的images目录下。需要说明的是fsbl、U-Boot这两个我们在工程中并没有配置,这是因为Petalinux会根据xsa文件和6.3.4节的配置petalinux工程自动配置fsbl和uboot,如无特需要求,不需要再手动配置。
执行结果如下图所示:
image001.png
图 6.3.20 编译整个Petalinux工程
6.3.9 制作BOOT.BIN启动文件
Petalinux提供了petalinux-package命令将PetaLinux项目打包为适合部署的格式,其中“petalinux-package--boot”命令生成可引导映像,该映像可直接与Zynq系列设备(包括Zynq-7000和Zynq UltraScale + MPSoC)或基于MicroBlaze的FPGA设计一起使用。对于Zynq系列设备,可引导格式为BOOT.BIN,可以从SD卡引导启动。对于基于MicroBlaze的设计,默认格式为MCS PROM文件,适用于通过Vivado或其他PROM编程器进行编程。
ZYNQ的启动文件BOOT.BIN一般包含fsbl文件、bitstream文件和uboot文件。使用下面的命令可生成BOOT.BIN文件:
  1. petalinux-package --boot --fsbl--fpga --u-boot --force
复制代码
选项“--fsbl”用于指定fsbl文件所在位置,后面接文件对应的路径信息,如果不指定文件位置,默认对应的是images/linux/zynqmp_fsbl.elf;选项“--fpga”用于指定bitstream文件所在位置,后面接该文件对应的路径信息,默认对应的是images/linux/system.bit,实际可能有区别;选项“--u-boot”用于指定U-Boot文件所在位置,后面接该文件所在路径信息,默认为images/linux/u-boot.elf。这里笔者均没有指定对应的文件的路径信息,那么Petalinux会自动使用默认文件。执行结果如下图所示:
image003.png
图 6.3.21 生成 BOOT文件
可以看到Petalinux自动将PMU(PlatformManagement Unit) firmware文件pmufw.elf和ATF(Arm trusted firmware)文件bl31.elf包含进BOOT.BIN。
生成的BOOT.BIN文件放在Petalinux工程的images/linux目录下,上一小节编译Petalinux工程生成的文件同样存放在images/linux目录下,如下图所示:
image005.png
图 6.3.22 编译工程生成的启动镜像文件
6.3.10 制作SD启动卡
如果使用SD卡引导linux系统启动,一般需要在SD卡上有2个分区。一个分区使用FAT32文件系统,用于放置启动镜像文件(如BOOT.BIN,linux镜像等),另一分区使用EXT4文件系统,用于存放根文件系统。
需要说明的是在6.2.4节配置petalinux工程中,“Image Packaging Configuration”子菜单根文件系统的类型的配置使用的是默认的INITRAMFS,所以只需要一个使用FAT32文件系统的分区就可以了。当设置为“EXT”则需要另一个存放根文件系统的分区。
本小节先讲解SD卡的分区和格式化,然后说明将哪些文件复制到SD卡中。此处的SD卡指的是那种小卡,也称为TF卡。
注:在使用SD卡前需要先将sd卡中的数据做备份,否则会丢失SD卡中的数据。
将SD卡插入到读卡器中、并将读卡器插入电脑并连接到Ubuntu系统,在Ubuntu系统中找到SD卡所对应的设备节点,笔者插入的SD卡对应的设备节点为/dev/sdc。在终端中输入如下命令:
  1. umount/dev/sdc*
  2. sudofdisk /dev/sdc
复制代码
输入“p”执行结果如下图所示:
image007.png
图 6.3.23 给SD卡分区
可以看到当前的分区表,有一个FAT32的分区。在开始新分区之前需要将以前的分区删除,键入“d”,删除该分区,再次键入“d”时会出现下图所示的红色字体提示,表明已无存在的分区。如果SD卡存在多个分区,需要全部删除,存在多个分区的情况下,键入“d”时会提示选择需要删除的分区编号。
image008.png
图 6.3.24 将以前的分区删除
下面开始新建分区。输入“n”创建一个新分区。通过选择'p'使其为主,使用默认分区号1和第一个扇区2048。设置最后一个扇区,也就是设置第一个分区的大小,一般设置500M足够了,通过输入“+ 500M”,为该分区预留500MB,如下图所示:
image009.png
图 6.3.25 创建第一个新分区
现在设置分区类型,输入“t”,然后输入“c”,设置为“W95 FAT32 (LBA)”,如下图所示:
image011.png
图 6.3.26设置分区类型
输入“a”,设为引导分区,如下图所示:
image013.png
图 6.3.27 设为引导分区
第一个分区就创建好了,开始创建第二个分区。
通过键入“n”来创建根文件系统分区。后面一路默认就可以了,如下图所示:
image014.png
图 6.3.28 创建第二个分区
如果现在输入“p”检查分区表,会看到刚刚创建的2个分区。如果没问题,键入“w”以写入到SD卡并退出。
image016.png
图 6.3.29 写入分区到SD卡
完成了分区创建后,就可以格式化分区了。在终端输入如下命令:
  1. sudomkfs.vfat -F 32 -n boot /dev/sdc1
  2. sudomkfs.ext4 -L rootfs /dev/sdc2
复制代码
将第一个分区格式化成FAT32分区并命名为boot,将第二个分区格式化成ext4分区并命名为rootfs。执行结果如下图所示:
image017.png
图 6.3.30 SD卡分区格式化
格式化分区之后就可以挂载分区了(重新插拔读卡器或者使用mount命令进行挂载)。挂载完成后,我们将该工程image/linux目录下的BOOT.BIN和image.ub文件拷贝到名为boot的分区也即/dev/sdc1分区中,结果如下图所示:
image019.png
图 6.3.31 拷贝启动镜像到第一个分区
本实验只需要这两个文件即可,现在可以卸载SD卡了。
6.3.11 开发板启动模式设置
将SD卡插入DFZU2EG_4EVMPSoC开发板的SD卡槽(卡槽位于开发板背面),然后使用USB Type-C连接线将开发板USB_UART接口与电脑连接,用于串口通信。DFZU2EG_4EV MPSoC开发板连接SD(TF)卡的正面图和背面图如图 6.3.32和图 6.3.33所示:
image021.png
图 6.3.32 开发板连接TF卡正面图

image023.png
图 6.3.33 开发板连接TF卡背面图
接下来DFZU2EG_4EV MPSoC开发板上的启动模式开关BOOT MODE的四个开关的第二个与第四个开关拨到下面(置为OFF),即设置为从SD卡启动。不同的启动方式与四个拨码开关的状态对应关系如下图所示:
image025.png
图 6.3.34 启动模式设置
最后连接开发板的电源线给开发板上电。
6.3.12 打开串口上位机,进入Linux系统
打开MobaXterm串口上位机或其它串口上位机。上位机打印Linux启动信息如下:
image027.png
图 6.3.35 打印Linux启动信息
停留在登录处,此处使用root用户登录,登录密码为“root”(去掉双引号),登录进去后,界面如下:
image029.png
图 6.3.36 使用root用户登录
如果我们把视线移到开发板,会看到板上的LED灯全都是亮的,其中,底板上的PL_LED1和PS_LED1同频闪烁,这是设备树配置文件产生的结果,还记得那个“timer”么。
至此我们就走完了Petalinux开发Linux的整个流程。正如俗语所说师傅领进门,修行靠个人,Petalinux的功能远不止如此,其他功能读者有兴趣可进行探索,建议参考ug1144参考手册,也就是Xilinx官方编写的PetaLinux工具使用说明文档,已提供在开发板光盘资料:开发板资料盘(A盘)\8_ZYNQ&FPGA参考资料\Xilinx\UserGuide\ug1144-petalinux-tools-reference-guide.pdf。
特别说明:以后我们使用主机终端指代电脑上Ubuntu系统的终端,串口终端指代通过串口线连接到开发板显示在串口上位机中的终端。
6.4 解决Petalinux由于网络原因产生的编译错误
如果编译Petalinux工程时,出现如下图所示的“Fetcher failure: Unable to find file”错误:
image030.png
图 6.4.1 Fetcher failure: Unable to find file
出现这种错误的原因是Petalinux在编译的时候,需要联网下载一些文件,由于网络原因这些文件不能正常下载,导致编译出错。解决的方法是下载该压缩包:https://china.xilinx.com/member/forms/download/xef.html?filename=downloads_2019.2.tar.gz
该压缩包很大,有20多G,里面包含了Petalinux编译需要的各种软件包和库(该压缩包在网盘中已经提供,路径为开发板资料盘(A盘)\4_SourceCode\3_Embedded_Linux\资源文件\downloads.rar)。下载完成后将其复制到Ubuntu虚拟机中并解压。譬如笔者在4.2节创建的share文件夹下创建一个petalinux文件夹,并将该压缩包解压到该文件夹下,如下图所示:
image032.png
图 6.4.2解压downloads_2019.2.tar.gz得到的文件夹
从Ubuntu虚拟机访问该路径为:/mnt/hgfs/share/petalinux/downloads/。
下面将解压后的路径添加到Petalinux工程中。
进入Petalilnux工程,输入“petalinux-config”配置工程。配置“Yocto Settings ---> Add pre-mirror url”,删除原先的内容,添加解压downloads_2019.2.tar.gz后的绝对路径,添加格式为:file://+downloads_2019.2.tar.gz解压后的路径。对于笔者而言,添加的路径内容为file:///mnt/hgfs/share/petalinux/downloads/,如下图所示:
image034.png
图 6.4.3 添加pre-mirrorurl
保存配置,返回到Yocto Settings界面,使能BB_NO_NETWORK,如下图所示:
image035.png
图 6.4.4 使能BB_NO_NETWORK
保存配置并退出。
现在编译就不会出现“Fetcher failure: Unable to find file”错误。

6.5 扩展阅读:
3)       Petalinux工程目录结构详解:Petalinux用户手册UG1144的附录B(Appendix B)——PetaLinux工程结构
5)       PMU(Platform Management Unit)Firmware介绍:https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841724/PMU+Firmware
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表