ZYNQ AMP双核开发步骤说明

一,基本开发流程

1,软件平台:Windows 64位环境下,Vivado 2017.04版本+SDK 2017.04版本,Linux环境下(Ubuntu 16.04),Petalinux 2017.04版本,ZYNQ7z10clg400-1

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

(1)AMP(非对称多进程):

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

(2)SMP(对称多进程):

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

(3)BMP(受约束多进程):

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

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

3,开发流程框图

4,资源下载:

下载官方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 

5,环境搭建:

二,Vivado工程创建

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

2,vivado配置:

 

3,外设地址:

4,配置ARM系统:

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

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

 5,工程编译并导出

文件名称

作用

文件位置

design_1_wrapper.bit

FPGA烧写文件

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

design_1_wrapper.hdf

系统硬件描述文件

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

SDK工程目录

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

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

 

 三,软件原理:

1,AMP

 2,双linux

3,CPU启动

 

四,Ubuntu 16.04环境下Petalinux工程编译

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

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

mkdir /home/用户/Desktop/hwdef

Step2:设置Petalinux运行环境:

source <Petalinux安装目录>/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 --->: 设置主SD为SD0

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

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文件将其替换可通过配置rootfscpu0应用程序直接配置进系统

Step7:配置rootfs

出现如下配置界面:

进行如下配置:

Filesystem Packages

系统扩展工具配置:可增加lrzszmake

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下:

 

2,SDK工程(Windows 64位环境)

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

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

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

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

Step1File-->New-->Board Support Package //生成bsp

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

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

 

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

Step3:Next-->Empty Application

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

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

 

Step5SDK自动生成可执行文件app_cpu1.elf

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

Step1File-->New-->Application Project

 

Step2点击Next-选中空的应用

 

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

Step4SDK自动生成可执行文件softUart.elf

2.3.生成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

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

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

 

Guess you like

Origin blog.csdn.net/wangjie36/article/details/118999400