Z-Turn(ZYNQ)板卡移植petalinux操作系统

一、安装petalinux

1.安装虚拟机,在虚拟机里安装linux系统(ubuntu 16.04)

  • 虚拟机里磁盘尽量预留多一点,建议60G以上,我的是80G
  • 建议安装VMware Tools虚拟机
  • 开发工具:vivado 2017.4(Windows) + petalinux 2017.1(Linux)

(1)更新apt-get(更换源,可选,加速用)

  在linux系统中打开/etc/apt目录下找到sources.list文件,将文件内容替换为:

deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted 
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties 
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties 
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe 
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse 
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse 
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse 
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties 
deb http://archive.canonical.com/ubuntu xenial partner 
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted 
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties 
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe 
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

打开命令行执行:

apt-get update

刷新列表

(2)安装petalinux的依赖环境

安装petalinux的必要依赖环境,直接复制粘贴下面的命令行到终端中,系统自动下载安装下面的工具:

sudo apt-get install build-essential vim tofrodos \
iproute2 gawk gcc git make net-tools zlib1g-dev \
libssl-dev flex bison libselinux1 libncurses5-dev \
tftpd lib32z1 lib32ncurses5 libbz2-1.0:i386 \
lib32stdc++6 xvfb chrpath socat autoconf libtool

 

(3)修改/bin/sh

终端输入:

dpkg-reconfigure dash

在出现的界面中选择“no

(4)下载petalinux

官网下载petalinux-v2017.1-final-installer.run(在Xilinx官网下载,文件大约8G,注册账号以后每次下载Xilinx大文件都可以用上)

(5)安装petalinux

在用户目录下(我的:home/bao/mnt),新建一个文件夹petalinux

                                    

在普通用户下终端输入(home/bao/mnt路径下)

./petalinux-v2017.1-final-installer.run ./petalinux

       经过漫长的等待,安装到一半的时候,提醒查看许可,按回车查看,按q退出,退出后输入y,回车,重复三次,才开始正式安装,在安装时会提醒一些库没有安装,不用管,后面安装也行。

                                 

(6)补一些库的安装

把下面命令粘贴到终端命令行中回车即可,这条要执行,后面的可以有选择安装。

apt-get install texinfo gcc-multilib libsdl1.2-dev libglib2.0-dev zlib1g:i386 libncurses5 
libncurses5-dev libc6:i386 libstdc++6:i386 zlib1g:i386 libssl-dev tftpd tftp openbsd-inetd

先安装刚刚安装时,提示缺少的库:

apt-get install texinfo gcc-multilib libsdl1.2-dev libglib2.0-dev zlib1g:i386

安装一些之后需要的库,全都安装了避免麻烦:

在运行petalinux-config -c kernel会出现错误,需安装:

apt-get install libncurses5 libncurses5-dev

编译时可能会出现错误arm-xilinx-linux-gnueabi-gcc: Command not found,需安装:

apt-get install libc6:i386 libstdc++6:i386 zlib1g:i386

提示缺少zlibopenssl,需安装:

apt-get install libssl-dev

       出现警告(可以不处理),提示No tftp server found - please refer to “PetaLinux SDK Installation Guide” for its impact and solution,需安装:

apt-get install tftpd tftp openbsd-inetd

安装完成后,编辑一下/etc/inetd.conf里的东西:

gedit /etc/inetd.conf

打开了文件,并在文件最后一行增加:

                                  tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftproot

然后保存并退出 ,之后再进行一些简单操作:

mkdir /tftproot
chmod 777 /tftproot
/etc/init.d/openbsd-inetd restart

输入

netstat -an | more | grep udp

以确定成功(打印出udp 0 0 0.0.0.0:69 0.0.0.0:*

(7)验证是否安装成功

source /home/bao/mnt/petalinux/settings.sh

成功定位不报错的话,基本是成功了的

echo $PETALINUX

命令行会打印出安装路径 :/home/bao/mnt/petalinux

二、搭建硬件环境

1.新建工程,选择对应的芯片型号,并新建一个 Block Design 原理图文件(命名为design_1),然后添加一个ZYNQ Processing systemIP核,并设置好与硬件相符合的PSPL时钟以及DDR型号。

2.为了使PetaLinux正常的运行,需要分配一些硬件外设资源,这些硬件资源根据需求还有不同的板卡来定,搭建好的block design原理图如下所示。

                           

3.然后右键单击 Block文件,文件选择Generate the Output Products,然后右键单击Block文件,选择 Create HDL wrapper,根据 Block design文件内容产生一个 HDL 的顶层文件,并选择让vivado自动完成。

                                                           

Vivado综合,实现后,在Vivado中导出硬件,输出PetaLinux所需要的硬件描述文件。

                                                                           

       输出的文件就在“/(工程文件夹)/(工程名).sdk”这个文件夹下,这个文件夹下的design_1_wrapper.hdf即为输出文件,这个文件在后面的编译中需要用到。

                                                        

       这个ZYNQ vivado工程下载地址:https://github.com/EdwardBao1006/Z-Turn_Petalinux,可以根据自己的需要修改block design。

三、搭建petalinux工程

1.定位目录

home下新建PRO文件夹存放工程文件(我的是home/bao/PRO

cd home/bao/PRO

2.定位编译链

根据安装petalinux的路径:

source /home/bao/mnt/petalinux/settings.sh

            

               注:每次重启系统都要执行这一条,若是想解决,方法如下(当然也可以不解决,不影响):

                      .bashrc是终端的初始化配置脚本,每次打开新的终端的时候,都会执行这个脚本,把环境变量配置脚本加在里面,就能在打开的时候自动配置了。执行:

          gedit ~/.bashrc

                    在最后一行增加

                                source /home/bao/petalinux/settings.sh

                     关闭终端,再打开终端

3.创建petalinux工程

PRO目录下面,创建一个工程:

petalinux-create --type project --template zynq --name h1_petalinux_test

h1_petalinux_test是工程名,该命令会自动在PRO文件夹里创建h1_petalinux_test文件夹

                                           

4.引用刚才输出的硬件描述文件

          把之前导出的硬件描述文件design_1_wrapper.hdf拷贝到虚拟机中的h1_petalinux_test工程文件夹下。

                                                     

然后:

petalinux-config --get-hw-description=/home/bao/PRO/h1_petalinux_test

        会进入一个配置界面,在里面我们可以配置一些系统参数,主要的配置包括:启动方式,启动存储器分区表,启动文件名称等等,本文暂不对其修改(默认是从SD卡中启动),然后等待其配置(时间较长)。

5.获取文件夹权限

        在上一步完成后,输入命令

sudo chmod -R 777 /home/bao

      获取文件夹权限(工程文件夹和petalinux的安装文件夹),否则编译的时候,会发生错误。

                                      

输入:

source /home/bao/mnt/petalinux/settings.sh

        (如果上面修改过.bashr文件就不用执行这条,否则要重新执行)

注:到此为止,在终端中的命令既可以以超级用户su的身份运行也可以以普通用户的方式运行(建议全部都用普通用户的方式,免得切换),但是编译u-bootkernel以及rootfs的时候,必须以普通用户的身份运行命令行,否则会报错。

6.编译u-boot

           注意:到此处的时候,不能再用超级用户了,要切换到普通用户下,之后的所有操作都在普通用户下。

终端输入:

petalinux-config -c u-boot

                                          

        然后等待GUI出来,这里暂时不改动配置,直接savesaveu-boot.config,名字随便取但不要留空),然后继续等(新建的工程时间会长一点)。

7.编译kernel

终端输入:

petalinux-config -c kernel

                                        

          然后等待GUI出来,这里暂时不改动配置,直接savesavekernel.config,名字随便取但不要留空),然后继续等。

8.编译rootfs

终端输入:

petalinux-config -c rootfs

                                                           

                操作同上(save为默认即可)。

9.设备树配置

             若要修改,直接在工程文件夹下,Ctr+F搜索.dts就可以找到相关文件,做出相应修改,暂时默认,不修改,按照它自动生成的设备树。

10.编译工程

终端输入:

petalinux-build

                                           

等待即可,时间较长,可以喝杯咖啡,最后生成的文件在 image/linux下。

                                              

最终需要的四个文件在这个文件夹下,分别为:

  • zynq_fsbl.elf                    #FSBL可执行文件
  • design_1_wrapper.bit      #FPGA配置bit文件
  • u-boot.elf                         #SSBL可执行文件
  • image.ub                         #linux镜像文件

 

四、烧录及测试

1.生成BOOT.bin文件

     如果在linux中安装了vivado,可以在最后的文件夹中执行:

petalinux-package --boot --format BIN --fsbl zynq_fsbl.elf --fpga design_1_wrapper.bit --u-boot

     会发现文件夹中多了BOOT.BIN文件,最后加上image.ub文件拷入SD卡,插入Z-turn板卡,也可以启动。

但是我在linux中没有装vivado,所以就在windows中生成了BOOT.BIN。将上面生成的四个文件:

             zynq_fsbl.elf                     #FSBL可执行文件
             design_1_wrapper.bit              #FPGA配置bit文件
             u-boot.elf                        #SSBL可执行文件
             image.ub                          #linux镜像文件

     拷贝到windows下,打开之前建立vivado ZYNQ block design的工程,在工程里File—> Launch SDK

                                                                                

        在SDK中选择Xilinx—> Creat Boot Image

                                                

          分别按顺序加入 zynq_fsbl.elf—> design_1_wrapper.bit—> u-boot.elf 三个文件。点击 Create Image按钮,生成BOOT.bin文件。

                                               

2.烧录FLASH

     本文选择的是将启动程序烧录进QSPI FLASH,以FLASH上电启动。连接Jtag线,一定要保证在工程里板子和电脑是通过Jtag线接好的,选择Xilinx SDKXilinx—> Program Flash

                                                 

(1)烧录BOOT.bin

      Image File选择刚才生成的BOOT.bin文件,Flash Type选择qspi_singleOffset填写0,点击Program按钮。烧录完成后,我们的FSBL.bit,SSBL就成功下载到QSPI Flash中去了,我们就已经可以实现u-boot的启动了,但是还不能引导kernel

      注:Device一项最好点“Select…”,选择跟电脑连接的板子,确认一下。

                                                                    

(2)烧录image.ub

因为Image File只能选择.bin或者.mcs文件,所以把image.ub重新命名为image.ub.bin,然后Offset需要填写偏移地址,这个地址可以通过petalinux-config配置,或者可以通过system-config.dtsi文件查看。内容如下:

&qspi {
    #address-cells = <1>;
    #size-cells = <0>;
    flash0: flash@0 {
        compatible = "micron,n25q128";
        reg = <0x0>;
        #address-cells = <1>;
        #size-cells = <1>;
        spi-max-frequency = <50000000>;
        partition@0x00000000 {
            label = "boot";
            reg = <0x00000000 0x00500000>;
        };
        partition@0x00500000 {
            label = "bootenv";
            reg = <0x00500000 0x00020000>;
        };
        partition@0x00520000 {
            label = "kernel";
            reg = <0x00520000 0x00a80000>;
        };

        partition@0x00fa0000 {
            label = "spare";
            reg = <0x00fa0000 0x00000000>;
        };
    };
};

可以看到kernel的偏移地址是0x00520000,所以Offset就填写这个数值。点击Program烧录。

                                                                

五、最终效果

              用MobaXterm的串口配置如下:

                                                         

 

                                                                                                                             

                                                                         串口线,这时候电源线也可以去掉

                                                                             

                                                                              只用一根串口线也是可以的

 

             

 

按一下板子上的“RESET”,系统就跑起来了。

密码和用户名都是root

 

感谢以下这几位小伙伴的帮助:

—> zynq学习笔记之petalinux (2)安装petalinux 2017.4

—> zynq学习笔记之petalinux (3)petalinux 创建自定义工程

—> ZYNQ跑系统 系列(一) 传统方式移植linux

—> ZYNQ跑系统 系列(二) petalinux方式移植linux

—>【Xilinx-Petalinux学习】-02-建立PetaLinux工程

—> Zynq-Linux移植学习笔记之九-petalinux

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值