linux dtb的编译打包过程_「正点原子FPGA连载」第二十章另一种方式编译ZYNQ镜像...

本篇介绍了使用非PetaLinux工具,通过分步编译的方式构建ZYNQ开发板所需的Linux镜像文件。内容包括:通过HDF文件生成bitstream、自动生成设备树、编译FSBL、U-Boot以及内核,并详细阐述了每个步骤的操作过程。最后,文章提到了启动开发板的流程以及如何使用TCL脚本简化命令执行。

1)摘自【正点原子】领航者 ZYNQ 之linux驱动开发指南

2)实验平台:正点原子领航者ZYNQ开发板
3)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761
4)全套实验源码+手册+视频下载:http://www.openedv.com/docs/boards/fpga/zdyz_linhanz.html
5)对正点原子FPGA感兴趣的同学可以加群讨论:876744900
6)关注正点原子公众号,获取最新资料

6be6c6e77134fc0f27f37f86c21225b1.png

第二十章另一种方式编译ZYNQ镜像


本篇是ARM Linux驱动开发篇中的第一章,本章跟驱动开发并没有什么关系,由于前面我们一直都是使用xilinx的petalinux工具编译镜像文件,例如包括u-boot、linux内核、设备树、ZYNQ PL端的bitstream文件以及fsbl等,虽然petalinux功能上比较全面,但是在编译速度上太慢了!完全是在浪费时间,相信大家在使用petalinux的时候已经感受到了它给你带来的无奈之处;为此笔者专门去研究了一下,那本章笔者就带大家通过另外一种比较快的方式编译各种镜像文件。
本章采用分步式的方式编译启动开发板所需要的各种镜像文件,虽然步骤比较繁琐,但灵活性比较高;虽然本章使用的是另一种方式编译镜像,但还是得需要用到petalinux提供的一些工具,所以大家一定要安装petalinux。
20.1由hdf文件得到bit文件
.bit文件是zynq pl端所需要用到的bitstream文件,例如我们使用petalinux-build命令完成工程编译之后会在images/linux目录会产生一个system.bit文件,这个就是我们这里说到bitstream文件,.bit可以通过.hdf硬件描述符文件得到,怎么得到呢?下面给大家说来。
将ZYNQ开发板资料盘(A盘)4_SourceCodeZYNQ_70103_Embedded_Linuxvivado_proNavigator_7010Navigator_7010.sdk文件夹拷贝到Ubuntu系统目录下,例如/home/zynq/hdf/目录,大家根据自己的情况选择目录,本实验以领航者7010为例,如果大家用的是领航者7020,则选择ZYNQ开发板资料盘(A盘)4_SourceCodeZYNQ_70203_Embedded_Linuxvivado_proNavigator_7020Navigator_7020.sdk文件夹。
在Navigator_7010.sdk目录下有一个.hdf文件,如下所示:

178b44db35ef17b36b62b2efda14001f.png

图 31.1.1 hdf文件


接下来使用source命令执行petalinux的环境配置脚本settings.sh,如下所示:

  1. source /home/zynq/petalinux/v2018.3/settings.sh
6e32772368df2bfe8eba839e258d303e.png

图 31.1.2 运行settings.sh脚本文件


/home/zynq/petalinux/v2018.3是笔者的petalinux安装目录,完成环境配置之后执行hsi命令进入到hsi命令模式,如下所示:

  1. hsi
c6c67f9298bea2eef1495b79750f0025.png

图 31.1.3 hsi命令行


执行命令之后就可以进入到hsi命令行模式下了,hsi命令行模式就跟我们的linux命令行模式差不多,都可以执行命令,只不过执行的命令不同;hsi命令是petalinux工具提供的,所以一定安装petalinux才行;在这个模式下可以执行一些命令,例如执行下面这条命令可以打开硬件设计文件hdf得到bit文件:

  1. open_hw_design /home/zynq/hdf/Navigator_7010.sdk/design_navigator_7010_wrapper.hdf
860ce49c8d6d7fc5786746dcc0d311cc.png

图 31.1.4 打开hdf文件


Open_hw_design命令紧跟着的是hdf文件路径,命令执行成功之后会在hdf文件所在目录下产生bit文件以及ps7_init命名的.c文件和.h文件,如下所示(在hsi命令行模式下执行exit命令退出该模式):
exit

4cd47791f5dd3c58850dfdf098f8ab12.png

图 31.1.5 退出hsi命令行模式

ea8f2c2ef9956dd6d0af14f247b2254e.png

图 31.1.6 产生bit文件及其它文件


从上图中可以看到在hdf文件所在目录下产生了design_navigator_7010_wrapper.bit文件以及.c和.h文件。
20.2自动生成设备树文件
Petalinux可以根据hdf文件描述的硬件信息自动配置U-Boot和内核所需的设备树文件,那么我们也可以通过hsi命令来生成;首先需要导入xilinx的device-tree仓库,在我们提供的资料包中已经给大家准备好了,路径为:ZYNQ开发板资料盘(A盘)4_SourceCodeZYNQ_70103_Embedded_Linuxmiscdevice-tree-xlnx-xilinx-v2018.3.tar.gz,大家也可以通过https://github.com/Xilinx/device-tree-xlnx/releases网址进行下载,选择2018.3版本.tar.gz压缩格式文件,如下所示:

3c391326fc5ad0c7f158075121d071b2.png

图 31.2.1 设备树仓库下载


Xilinx device-tree描述了设备与设备树之间的匹配关系,将下载好或是资料包中的device-tree-xlnx-xilinx-v2018.3.tar.gz压缩文件拷贝到Ubuntu系统目录下,例如/home/zynq/device-tree,大家根据自己的情况选择,然后将其解压当前目录,解压之后会产生一个device-tree-xlnx-xilinx-v2018.3文件夹,如下所示:

202d7531a86c324a181c4c213e133ec7.png

图 31.2.2 device-tree目录


那么device-tree-xlnx-xilinx-v2018.3目录就是我们所需要的device-tree仓库。接下来我们执行hsi命令进入到hsi命令行模式,执行下面这些命令:

  1. open_hw_design /home/zynq/hdf/Navigator_7010.sdk/design_navigator_7010_wrapper.hdf
  2. set_repo_path /home/zynq/device-tree/device-tree-xlnx-xilinx-v2018.3
  3. create_sw_design device-tree -os device_tree -proc ps7_cortexa9_0
  4. generate_target -dir /home/zynq/linux/dts
462480e8d3e0a72a3be779b0ffd01b19.png

图 31.2.3 生成设备树文件


首先也是通过open_hw_design命令打开hdf文件,然后使用set_repo_path命令设置device-tree仓库所在路径,例如/home/zynq/device-tree/device-tree-xlnx-xilinx-v2018.3;使用create_sw_design创建软件设计,” -os device_tree”指定了软件设计的类型,我们这里使用device-tree表示它是一个设备树类型,” -proc ps7_cortexa9_0”指定处理器的名称,在hsi命令模式下使用”xxxx -help”可以查看xxxx命令的用法说明,这里就不给大家列举了;最后使用generate_target命令去产生目标,也就是我们的设备树文件,” -dir /home/zynq/linux/dts”指定路径。
此时我们可以退出hsi命令行模式,进入到/home/zynq/linux/dts目录下,可以看到自动配置产生的.dts和.dtsi文件,如下所示:

914268141040ba5908c5fcd6b434c85f.png

图 31.2.4 生成设备树文件


Linux设备树是是一个很重要的知识点,将会在后面给大家详细说明,本章先不讲,这些文件后面我们会用到。
20.3创建、编译fsbl工程
fsbl(First Stage Boot Loader)是ZYNQ第一启动引导加载代码,它的主要任务就是初始化DDR,并将用户代码(例如U-Boot、bit文件或者是SDK裸机代码)从存储设备中拷贝到DDR中运行。在使用petalinux-build命令编译完成之后,在images/linux目录下有一个zynq_fsbl.elf文件,这个就是fsbl编译之后产生了elf格式文件,同样也可以使用hsi命令来创建fsbl工程并进行编译。
首先我们需要导入Xilinx embeddedsw存储库,该embeddedsw仓库用于裸机应用,例如fsbl、pmu固件、plm等,在我们提供的资料包中已经给大家准备好了,路径:ZYNQ开发板资料盘(A盘)4_SourceCodeZYNQ_70103_Embedded_Linuxmiscembeddedsw-xilinx-v2018.3.tar.gz,大家也可以从https://github.com/Xilinx/embeddedsw/releases网址进行下载,选择2018.3版本.tar.gz压缩格式,如下所示:

6787f3b978c92a461e6d7b218f5a0fbf.png

图 31.3.1 下载embeddedsw仓库


将下载好或是资料包中的embeddedsw-xilinx-v2018.3.tar.gz压缩文件拷贝到Ubuntu系统目录下,例如/home/zynq/embeddedsw,大家根据自己的情况选择;然后将其解压当前目录,解压之后会产生一个embeddedsw-xilinx-v2018.3文件夹,如下所示:

eb4ce8fb145135bc3b8418cc9936dd96.png

图 31.3.2 embeddedsw目录


在Ubuntu中执行下面这条命令,建立一个软链接文件gmake,链接到make:

  1. sudo ln -s /usr/bin/make /usr/bin/gmake
673f0c993c837af13165bb3bed0d3470.png

图 31.3.3 建立gmake软链接文件


因为在编译的过程中会用到gmake,其实gmake就是GNU make的缩写,Linux系统环境下的make就是GNU make;之所有有gmake,是因为在别的平台上,make一般被占用,GNU make只好叫gmake了;比如在进行编译时要使用make命令,但如果在非GNU系统中运行,必须使用GNU make,而不是使用系统自带的make版本,这时要用gmake代替make进行编译。
完成上面的工作之后,我们就可以进行fsbl的创建与编译了,执行hsi命令进入hsi命令行模式,执行下面这些命令:

  1. open_hw_design /home/zynq/hdf/Navigator_7010.sdk/design_navigator_7010_wrapper.hdf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值