2017年9月问题记录与总结——Ubuntu14.04下安装Xilinx_SDK编译zynq u-boot并制作BOOT.BIN(板卡ZC7045)

一、说明

以下为需要的软件和源码:

虚拟机:Vmware Workstation 12.0.1

Linux发行版:ubuntu14.04 LTS

U-boot:u-boot-xlnx-xilinx-v2017.4

下载地址:https://github.com/Xilinx/u-boot-xlnx根据需要下载需要的版本,我取的是tag里面的2017.4的版本。

SDK:Xilinx_SDK_2017.4_1216_1_Lin64.bin下载地址:http://www.wiki.xilinx.com/Install+Xilinx+Tools,这里在虚拟机里安装选择:Downloadthe PetaLinux tools

之所以要安装sdk是因为我手上有一个uboot,需要修改源代码,来改变zc7045默认的工作频率,那要修改就要编译,编译的话需要对应的编译器,我在网上找了一下担心版本对不上,尝试安装了一个失败,这里为了省去这个麻烦直接安装了sdk,其实安装sdk是一个曲线救国的过程,因为我只需要编译器。

 

二、安装SDK

         首先把sdk的安装包从上述网址下载下来,然后通过samba拿到虚拟机里的ubuntu14.04下,我的放在这里了,顺便把要编译的uboot也拿进来了。


         因为安装文件是个.bin,所以直接使用./来运行即可,如果没有权限,可以chmod更改执行权限,再不行用root模式去安装。安装后会首先检查,然后解压,过一会儿会出现如下安装界面:


         红色字体是说建议关闭杀毒软件,ubuntu下没安装杀毒软件,但是有的人在这里会发现由于虚拟机的窗口太小,安装的时候看不到next下面这一行的按钮,这个可以百度下在虚拟机的窗口设置里面设置下就行了。

         下一步,会需要填写您在xilinx官网上注册的id和密码,这个我之前注册过,如果没有注册过的,去xilinx的官网注册一个,过程也很简单,这里选择“download and install now”


         后面一些列选择安装路径之类的,按照操作即可,没什么要注意的,这里我安装在了opt目录下。


三、配置编译器

         安装完成后,在opt对应的目录下可以找到编译器的路径,这里我看网上有人用which命令可以找到,我这里试了不行,于是手动作好,最后发现编译器路径如下:

/opt/Xilinx/SDK/2017.4/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin,这个路径下有编译器连接器反汇编等等等工具,如下图:


         这里就不设置环境变量了,如果要设置环境变量,可以修改etc/profile文件,然后使之生效即可,这里不赘述。


四、编译u-boot

         进入到uboot根目录下,首先:

         makedistclean

         清理项目。

         我们要编译的是zc7045的uboot,在configs目录下,包含了众多平台的配置文件,


         这里选择zynq_zc706_defconfig:

         cpzynq_zc706_defconfig  ../.config

         这里意思是将该配置文件拷贝到上一级目录下,替换默认的.config文件.

         回到根目录:

         makezynq_zc706_defconfig

         等待执行配置完成,输出如下图:


         接下里选择ARCH和CROSS_COMPILE去编译即可:

make ARCH=arm CROSS_COMPILE=/opt/Xilinx/SDK/2017.4/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-

         路径比较长,输入的时候不要输入错了,一会儿就可以拿到uboot了,各种格式的都有。

注意的是,编译的过程可能报一些错误,这个时候把报错信息去查下,很多是由于缺少对应的库导致的,这时候只需要apt-get install xxx对应的库即可,没那么复杂。

五、生成fsbl.elf

         一般来说,fsbl是根据板子硬件来生成的,官方只提供开发板的一个模板,这里演示生成过程,所以用zc706的fsbl来演示,实际使用要根据自己板子来调fsbl。我用的工具为vivado SDK2014.4

利用SDK软件,file->new->AplicationProject新建工程,工程名务必命名为:fsbl_zyqn.

同时在下面的选项框里选择“zed_hw_platform”和“ps7_cortexa9_0”。

如下图:


点击“next”后,选择bsp模板为Zynq_FSBL,点击“finish”。


之后会编译一段时间,然后在该工程项目的“fsbl_zynq”目录下的“debug”目录下,会生成一个fsbl_zynq.elf文件。这个需要用到。

 

六、生成BOOT.BIN

打开SDK->XilinxTools->Create Zynq Boot Image,在出现的界面中选择workspace下刚才的debug目录,或者将fsbl_zynq.elf以及之前生成的u-boot.elf放到同一个目录,然后选择那个目录也可以。在下面的“Boot Image Partitions”中“add”上面的两个文件,第一个务必添加fsbl_zynq.elf,然后再add u-boot.elf。如下图:


点击“Create Image”,就开始生成BOOT镜像文件,这时候到刚才的目录下找到BOOT,将其重命名为“BOOT.BIN”。

         这样我们就可以把这个放到SD卡或者烧写到QSPIFLASH里面了,这里没有把.bit文件做进去,需要初始化fpga这一端的逻辑,需要.bit文件,这里不赘述了。