Zynq的AMP开发流程说明(基于OCM)

目录

一.平台说明

二.软件安装

三.基本开发流程

3.1.AMP模式介绍

3.2.开发流程框图

四.具体开发流程

4.1.下载官方Demo源码

4.2.Vivado工程创建(Windows 64位环境)

4.2.1.工程创建

4.2.2.配置ARM系统:

4.2.3.工程编译并导出

4.3.Petalinux工程(Ubuntu 16.04环境)

4.4.SDK工程(Windows 64位环境)

4.4.1.CPU1程序(app_cpu1.elf)创建:

4.4.2.softUart.elf创建(使用petalinux更方便):

4.5.生成SD卡下载文件(Windows 64位环境)

五.SD卡启动配置

1.SD 系统启动卡说明

2.SD系统启动卡制作步骤

六.板卡双核系统验证

6.1.poke和peek命令

附录


一.平台说明

1、硬件平台:ZYNQ7z202clg400-2的创龙核心板

2、软件平台:

Windows 64位环境下:

Vivado 2017.04版本+SDK 2017.04版本

    Linux环境下(Ubuntu 16.04):

Petalinux 2017.04版本

二.软件安装

Vivado+SDK+Petalinux是xilinx针对SOC FPGA芯片而设计的专用开发方式。Vivado进行ARM系统配置和FPGA硬件电路设计,SDK进行用户应用程序设计,Petalinux进行linux的uboot、kernrl和rootfs的集成式设计。

软件安装:

(1)Vivado+SDK安装流程:《Vivado2017.4安装教程》

(2)Petalinux安装教程:《Petalinux2017.4安装教程》

三.基本开发流程

3.1.AMP模式介绍

从软件的角度来看,多核处理器的运行模式有三种:

AMP(非对称多进程):

多个核心相对独立的运行不同的任务,每个核心可能运行不同的操作系统或裸机程序,但是有一个主要核心,用来控制整个系统以及其它从核心。

SMP(对称多进程):

一个操作系统同等的管理各个内核,例如PC机。

BMP(受约束多进程):

与SMP类似,但开发者可以指定将某个任务仅在某个指定内核上执行 。

默认情况下,ZYNQ仅运行一个CPU,这里主要研究AMP模式下,即两个CPU同时运行,其中CPU0运行linux系统,CPU1运行裸机程序。

3.2.开发流程框图

四.具体开发流程

4.1.下载官方Demo源码

本文档采用官方提供的Demo进行AMP模式的开发和测试,资源链接:

https://xilinxwiki.atlassian.net/wiki/spaces/A/pages/18841653/XAPP1078+Latest+Information

下载文件:xapp1078_2014.04.zip

目录介绍:

    xapp1078_2014.04---------------- design:设计所需的所有源文件

                                 |---------------- docs:相关源文件的使用介绍        

AMP开发视频讲解:https://www.youtube.com/watch?v=xoNRZ1Q_h1k

4.2.Vivado工程创建(Windows 64位环境)

4.2.1.工程创建

Vivado可使用2种方法创建用户工程:图形组件手动搭建或是采用tcl命令创建,这里通过修改Demo提供的tcl文件,创建能够在Vivado 2017.04运行的ZYNQ7z020clg400-2系列工程(注意:修改部分见文档中备注)。

4.2.2.配置ARM系统:

    根据创龙核心板进行最小系统配置,配置内容包括:时钟系统、外设与引脚复用、外部DDR、PS-PL中断等部分。需要修改的部分主要有:

    时钟系统:与创龙保持相同配置

    DDR:与创龙保持相同配置,为512M

外设与引脚复用:与创龙保持相同配置

PS-PL中断等部分:保持Demo配置,使能fpga对cpu1的中断

4.2.3.工程编译并导出

工程创建完成后,经Vivado综合实现可生成后续使用文件:

文件名称

作用

文件位置

design_1_wrapper.bit

FPGA的烧写文件

/(工程文件夹)/(工程名).runs /impl_1文件夹下

design_1_wrapper.hdf

系统硬件描述文件

/(工程文件夹)/(工程名).sdk文件夹下

SDK工程目录

包含SDK软件设计所需的源文件

/(工程文件夹)/(工程名).sdk文件夹

 

4.3.Petalinux工程(Ubuntu 16.04环境)

    Petalinux使用Vivado生成的hdf文件,进一步配置并生成linux系统相关文件:uboot、kernel和rootfs等。具体流程如下:

Step1:拷贝hdf文件:将Vivado工程下的hdf拷贝到hwdef目录下

    mkdir /home/用户/Desktop/hwdef

Step2:设置Petalinux运行环境:

    source /settings.sh

Step3:创建Petalinux工程

    cd /home/用户/Desktop

    petalinux-create -t project -n plnx-project --template Zynq

Step4:导出hdf文件并配置

    petalinux-config --get-hw-description=../hwdef 

出现如下配置界面:

配置系统从SD卡启动:

Linux Components Selection

[*] First Stage Bootloader:默认配置,生产FSBL文件

Auto Config Settings

保持默认配置

Subsystem AUTO Hardware Settings

Memory Settings --->检查是否与Vivado中配置一样(0x18000000);

		

Serial Settings --->系统默认为串口1,波特率115200

SD/SDIO Settings ---> 设置主SDSD0

Advanced bootable images storage Settings中:

boot image settings --->选择SD

uboot-env选择flash                                                                         

kernel image settings --->选择SD 

jffs2 rootfs:选择flash

dtb image:选择sd                                                                                    

DTG Settings

Kernel Bootargs:内核启动参数

console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4 mem=384M maxcpus=1

(注意:这里限制了系统使用内存为384M,剩余128M留给CPU1的裸机程序)

u-boot Configuration

保持默认配置

Image Packaging Configuration

Root filesystem type --->选择SD类型

Firmware Version Configuration

固件版本控制,可修改,保持默认配置

Yocto Settings

保持默认配置

Step5:配置 u-boot

    petalinux-config -c u-boot

出现如下配置界面:

进行如下配置:

Architecture select (ARM architecture)

系统构架选择,默认ARM

ARM architecture

构架配置选项,保持默认配置

General setup

通用配置,保持默认配置,可修改

Boot images

Boot镜像,保持默认配置

Boot timing

Boot时间,保持默认配置

Boot media

Boot介质,配置从SD卡启动

delay in seconds before automatically booting

Boot自启动时间,默认4s,可修改

Console

Console控制台配置,保持默认

Default fdt file

默认FDT文件,无

Disable support for parallel NOR flash

NOR flash支持,无支持

add U-Boot environment variable vers

U-Boot环境变量添加,无

Display information about the CPU during start up

启动阶段显示CPU信息,可选

Display information about the board during start up

启动阶段显示板卡信息,可选

SPL / TPL

SPL / TPL支持,保持默认配置

Command line interface

命令行配置,用户可进一步配置

Device Tree Control

设备树控制,保持默认配置(embeded)

Networking support

Net支持,保持默认配置

Device Drivers

设备驱动,保持默认配置

File systems

文件系统,保持默认配置

Library routines

库程序,保持默认配置

Unit tests

单元测试,保持默认配置

Step6:配置kernel

出现如下配置界面:

保持所有的默认配置并退出。

Step7:创建CPU0应用程序softuart

    petalinux-create -t apps --template c --name softuart

软件会创建softUart应用程序目录并产生softuart.c文件,用官方提供的softuart.c文件将其替换,可通过配置rootfs将cpu0的应用程序直接配置进系统。

Step7:配置rootfs

出现如下配置界面:

进行如下配置:

Filesystem Packages

系统扩展工具配置:可增加,如lrzsz,make等

apps

Xilinx提供的2个APP

		

[ ] gpio-Demo:不配置

[*] peekpoke:配置,用于AMP模式测试

[*] softuart:配置,用于AMP模式测试

user packages

用户app,无

PetaLinux RootFS Settings

Root password:设置root用户密码,默认为root

Step8编译工程并生成系统文件

petalinux-build

工程编译完成后,产生的所有可执行文件均在/工程目录/image/linux下:

4.4.SDK工程(Windows 64位环境)

通过Vivado打开SDK(不要独立打开),在SDK中设计CPU0和CPU1的应用程序:

  • app_cpu1.elf:CPU1裸机程序,与CPU0进行通信且接受FPGA的中断信号
  • softUart.elf:CPU0应用程序,与CPU1进行通信,并产生FPGA中断(已通过Petalinux设计)

4.4.1.CPU1程序(app_cpu1.elf)创建:

Step0:Xilinx Tools-->Repositories-->New     //导入sdk_repo(重要,包必须正确)

Step1:File-->New-->Board Support Package        //生成bsp

如下显示中出现:“standalone”,说明sdk_repo导入生效

在编译选项中增加:-g -DUSE_AMP=1 -DSTDOUT_REDIR=1

 

Step2:File-->New-->Application Project       //生成cpu1的app程序

Step3:Next-->Empty Application

Step4:app_cpu1-->sr+右键-->Import           //导入官方cpu1的app源文件

查看lscript.ld文件:512M外部DDR时的CPU1应用程序链接地址配置。

Step5:SDK自动生成可执行文件app_cpu1.elf

4.4.2.softUart.elf创建(使用petalinux更方便):

Step1:File-->New-->Application Project

Step2:点击Next-选中空的应用

Step3:softUart -->src右键-->Import:导入softUart.c文件

Step4:SDK自动生成可执行文件softUart.elf

 

4.5.生成SD卡下载文件(Windows 64位环境)

使用SD卡启动系统时,需要如下的相应下载文件:

文件名

文件功能

来源

BOOT.bin

由如下文件合并而成:

		

Zynq_fsbl.elf:fsbl启动文件

system.bit:fpga烧写文件

u-boot.elf:u-boot文件

app_cpu1.elf:cpu1裸机程序

Zynq_fsbl.elf: petalinux

system.bit:Vivado

u-boot.elf:petalinux

app_cpu1.elf:SDK

devicetree.dtb

设备树文件

petalinux

zImage

内核文件

petalinux

rootfs

根文件系统

petalinux

上述文件中,需要使用SDK生成BOOT.bin文件,生成步骤如下:

Step1:将Zynq_fsbl.elf、system.bit 、u-boot.elf 和app_cpu1.elf拷贝到如下目录:Demo目录\design\src\bootgen

Step2:用记事本打开bootimage.bif,将合并文件的名称进行修改,已匹配上述文件。

Step2:打开Vivado -->launch SDK         //通过Vivado打开SDK

Step3:SDK -->xilinx-->launch shell         //打开命令行界面,并用cd命令切换到bootgen目录

Step4:执行createBoot.bat即可生成BOOT.BIN文件

五.SD卡启动配置

1.SD 系统启动卡说明

SD 卡启动是开发板系统启动方式的一种。SD 系统启动卡共有 FAT32、EXT4 两个格

式分区。其中 FAT32 格式分区在 Windows 系统下可见,EXT4 格式分区在 Windows 系统

下不可见,两分区在 Linux 系统下均可见。FAT32 格式分区存放 Bootloader、内核、设备

树、PL 端 bit 文件等,EXT4 格式分区存放文件系统。

开发板出厂时已经提供一个正常使用的 Linux SD 系统启动卡。以下步骤是 Linux SD

系统启动卡的制作过程。

2.SD系统启动卡制作步骤

详见《3-1-Linux SD系统启动卡制作方法.pdf》。

 

六.板卡双核系统验证

6.1.poke和peek命令

         poke命令:向指定地址写入数值data

格式:poke     data          address

         Peek命令:读取指定地址的内容

格式:peek     address

6.2. 板卡验证

(1)拷贝文件到SD卡

         第一分区:BOOT.bin、devicetree.dtb和zImage

         第二分区:rootfs文件系统

(2)连接开发板和配置好串口设置,波特率:115200

(3)进去linux系统:root用户登录,密码:root

操作如下:

#poke 0xfffffff0 0x18000000    //启动cpu1(cpu1启动原理参看ug585)

#peek 0xffff8000                         //查看cpu1的heart beat变量值,每秒加1

#softuart &                                  //后台运行cpu0的应用程序

#poke 0x78600000 0x00000001      //cpu0向控制fpga向cpu1发起中断

如上图,双核进行正常通信且cpu1完成对fpga的中断响应,Zynq的AMP模式验证完毕!

 

 

附录

1. Zynq的AMP模式开发主要有如下参考文档:《xilinx官方参考文档》

2.Vivado、SDK和Petalinux软件安装:《xilinx软件安装说明》

3. Petalinux的uboot、kernel和rootfs配置详解:《Petalinux的配置界面详解.vsd》

4. linux系统启动SD卡制作说明:《3-1-Linux SD系统启动卡制作方法.pdf》

5. 官方Demo的使用说明:《xapp1078_2014.04\docs\Vivado instructions.txt》

6. 官方Demo文件:《xapp1078_2014.04.zip》

你可能感兴趣的:(zynq)