ZedBoard移植Linux(精简版)及BOA服务器的搭建

来源:互联网 发布:js 多层嵌套json取值 编辑:程序博客网 时间:2024/06/05 18:02

一、移植之前

官方资源链接:http://www.wiki.xilinx.com/

官方源码链接:https://github.com/Xilinx

Xilinx提供了可用于ZedBoard的现成的嵌入式Linux(可在第一个链接找到),主要包含四个文件:boot.bin、devicetree.dtb、uImage和uramdisk.image.gz。

另外,ZedBoard自带SD卡的Demo系统主要包含四个文件:BOOT.BIN、devicetree_ramdisk.dtb、zImage和ramdisk8M.image.gz。

其中,uImage和zImage文件可由Linux源码编译得到,BOOT.BIN由下文的方法生成。此外,.dtb文件是设备树文件,可采用官方pre-built;ramdisk是根文件系统,也可以采用官方的pre-built。(uImage是uboot专用的映像文件,它是在zImage之前加上一个长度为 64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别。)

【注意】

有一个包含全部移植Linux所需文件的“全家桶”:petalinux-v2015.2.1-final-installer.run。采用此“全家桶”可省去从git下载u-boot、Linux等源码的步骤,比较方便。为方便起见,下文相关操作采用此包进行。因此,读者需要先安装此包。

安装方法:终端中输入以下内容:

$ mkdir<安装目录>

$ <包的目录>/petalinux-v2015.2.1-final-installer.run  <安装目录>

 

二、移植环境

       Ubuntu15.10(其他版本也可以,如12.04等)

Vivado 2014.2(其他版本也可)

Xilinx SDK 2014.2(其他版本也可)

 

三、移植步骤

(1)安装Ubuntu并搭建交叉编译环境

       1)安装32位库【如果PC安装的是32位的Linux,可省去此步骤

       由于这个环境是为32位系统设计的,所以64位系统需要先安装32位库。在Ubuntu终端(Ctrl+Alt+T打开终端)中进入root权限(输入su root,输入UNIX密码即可[如果事先没有设置密码,先通过sudo passwd root设置UNIX密码])。

       Ubuntu12.04及更老的版本可以在终端中输入apt-get install ia32-libs。Ubuntu12.04之后ia32-libs被取消了。12.04之后的版本可以输入apt-get install libgtk2.0-0:i386试试。

      2)将dash改成bash

       在终端输入dpkg-reconfigure dash,选择no

       3)下载并安装xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin

       链接:https://pan.baidu.com/s/1qWWv6Cs,提取密码65nw。下载完成后,将其放到/home/user目录下,在终端中输入./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin,如果执行失败,先输入chmod +xxilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin,将其转换为可执行程序,再输入./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin

       4)设置环境变量

       在终端中输入gedit/etc/bash.bashrc指令打开bash.bashrc文件,在末尾增加内容:

       export ARCH=arm

         exportCROSS_COMPILE=arm-xilinx-linux-gnueabi-

         exportPATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/:$PATH

并运行source /etc/bash.bashrc指令使设置立即生效。通过echo $PATH指令可以看到我们刚才设置的路径arm-xilinx-linux-gnueabi-gcc-v。如果可以打印出交叉编译器的版本信息,说明设置成功了。还可以在终端中输入arm-xilinx,按下TAB键,看看有没有东西出来:arm-xilinx-linux-gnueabi-。

       5)测试交叉编译环境

       找个地方新建一个hello.c文件,用gedit编辑,代码如下:

              #include <stdio.h>

                   int main(void)

                   {

                             printf("HelloZedBoard!\n");

                             return 0;

                   }

       在C文件所在目录下,在终端输入arm-xilinx-linux-gnueabi-gcc hello.c,然后将生成的a.out文件拷到U盘上,插到ZedBoard搭USB OTG上。用micro USB线把ZedBoard的UART口连到电脑USB。板子上电后,打开串口调试工具(如SecureCRT),等板子自带系统启动之后,(如果未出现出现zynq>,回车即可),在串口工具中输入:

              mount /dev/sda1 /mnt/

              /mnt/a.out

将看到如下结果:

图1 测试交叉编译环境

(2)编译U-BOOT

       在安装好的“全家桶”中,把u-boot拷贝出来,依次在终端中输入cd u-bootmake zynq_zed_config配置u-boot,最后输入命令make,编译u-boot,成功后出现 “configuration written to .config”的提示信息。

       在u-boot目录下可以看到新生成的文件u-boot。将文件u-boot添加后缀.elf(或通过命mv ./u-boot ./u-boot.elf)并保存好。生成的u-boot.elf可用于生成BOOT.BIN。

【注意】为了后续生成uImage文件,cd到U-BOOT源码目录下的tools目录下,执行cp mkimage/usr/local/bin将生成uImage的工具mkimage拷贝到/usr/local/bin目录下。

(3)编译Linux内核源码

       从安装好的“全家桶”中,把linux源码拷出来。

cd进源码目录。输入make ARCH=arm xilinx_zynq_defconfig以配置内核,成功后将看到以下信息,如图2所示:

图2 配置内核成功

配置成功后,输入make ARCH=armUIMAGE_LOADADDR=0x8000 uImage以编译内核(中间的UIMAGE_LOADADDR=0x8000必须加上,不然生成的uImage不能正常启动)。

内核编译完毕后,可在源码目录的/arch/arm/boot/子目录下找到uImage文件并自行保存好。如果找不到,将整个源码目录删除,重新将源码拷出来,重新编译(重新编译前先cd出源码目录,再重新cd入源码目录)。

(4)硬件环境搭建

首先,创建zynq工程,如图3所示:

图3 创建zynq工程

点击next,选择RTL Project,并勾上“Do not specify sources at this time”。继续next,选择板子,如图4所示:

图4 选择ZedBoard

点击左边的Create Block Design以新建设计,如图5和图6所示:

图5 Create Block Design

图6 输入工程名

然后,点击Add IP,如图7所示:

图7 添加IP核

在搜索框中输入zynq,选择结果列表里的第一个,如图8所示:

图8 选择处理器

然后点击Run Block Automation,在弹出的对话框中直接点OK,得到图9所示的界面:

图9

双击ZYNQ的模块,在弹出的对话框中,点击左边的ClockConfiguration,取消FCLK_CLK0前面的勾,如图10所示:

图10

然后,分别取消TTC、QSPI、32b GP AXI Master Ports,如图11所示:

图11 取消TTC、QSPI、32bGP AXI Master Ports

取消办法(以TTC为例):图11中点击TTC,取消图12中Timer0前面的勾:

图12 取消TTC

全部取消完毕,点击OK,回到图13中所示的界面:

图13 取消完毕

在source中,Design Sources下的system上右击选择“Create HDL Wrapper”,在弹出的对话框中选择OK即可。生成HDL后如图14所示:

图14 生成HDL

接着,生成比特流文件system.bit并保存好。弹出来的对话框选择Cancel,如图15所示:

图15

点击File->Export->Export Hardware,确保“Include bitstream”已勾上。点击OK,如图16所示:

图16 导出硬件

导出完毕后,点击File->Launch SDK,弹出的对话框直接OK即可。然后,在SDK中新建Xilinx ApplicationProject,如图17所示:

图17 新建ApplicationProject

点击next,工程名输入fsbl,其他不用改,继续next。选择Zynq FSBL工程,点Finish。如图18所示:

图18 选择ZynqFSBL

在新建的Application Project上右击选择Build,如图19所示。

图19 Build Application Project

Build成功后,在ZYNQ工程目录下将刚生成的system.bit文件、fsbl.elf文件拷贝出来。在SDK中,点击Xilinx Tools->Create Zynq Boot Image,如图20所示:

图 20 点击“Create Zynq Boot Image”

选择好.bif路径和输出BOOT.BIN的路径后,依次添加u-boot.elf、fsbl.elf和system.bit文件,点击Create Image生成BOOT.BIN文件,如图21所示:

图21 生成BOOT.BIN

至此,uImage和BOOT.BIN文件生成完毕。将它们连同官方pre-built的devicetree.dtb和uramdisk.image.gz一同拷贝到SD卡,插入ZedBoard卡槽,上电后可从串口调试工具看到Linux的启动信息,如图22所示。其中,默认用户名和密码均为root。

图22 启动Linux

【注意】由于此移植使用ramdisk作为根文件系统,因此开发板掉电后,对文件系统的所有修改将丢失。

 

WebServer的搭建参考http://blog.csdn.net/xzyiverson/article/details/13614117

0 0
原创粉丝点击