ZYNQ 双核运行并交互,一个linux,一个裸核

本文介绍了如何在ZYNQ 7000平台上配置和运行双核系统,其中一个核心运行Petalinux 2018.2,另一个核心运行裸机流水灯程序。通过修改设备树保留DDR空间、设置Linux为单核运行,实现了两核之间的交互。在Linux中使用devmem工具验证了与裸机程序的数据交换。
摘要由CSDN通过智能技术生成

zynq 7000 一般有2个cpu (arm A9),我们一般都用一个cpu0,本实验让2个cpu 都运行起来,cpu0 运行操作系统petalinux 2018.2, cpu1: 裸机流水灯。同时通过共享内存的方式,实现2个核之间的交互。

关于zynq 双核运行的官方文档有如下3篇:

xapp1078-amp-linux-bare-metal.pdf

xapp1079-amp-bare-metal-cortex-a9.pdf

ug1186-zynq-openamp-gsg.pdf

我们这个实验对应xapp1078, 但文档对应petalinux2014 的版本,有点太老了,而我的实验是在petalinux2018.2 上完成的。

前提条件

1:会做petalinux 2018.2 或其他版本的启动制作。如果不会请看:petalinux 2018.2 在ubuntu 16 下的工程制作并启动实验

2:熟悉 zynq 7000 AMP模式 双裸核CPU同时运行,因为这个比较简单,可以作为本实验的热身。

硬件平台的建立

硬件工程的建立是在Vivado2018.2 上完成的。其实要求很简单,符合linux下流水灯实验的要求即可,当然还需要挂接上SD卡。我的硬件就用的那个流水灯实验的工程,若有不清楚,请参考:

zynq 7000 petalinux 2018.2下的流水灯实验

裸机流水灯工程的准备和验证

这个流水灯工程是建立运行在cpu1上的,存放地址在0x1e00_0000,工程的建立请看:zynq 7000 AMP模式 双裸核CPU同时运行。链接里的工程建立的存放地址是0x1000_0000,但我们这里cpu0 要运行petalinux2018.2 ,所以设置得比较高。

程序的代码做了适当修改如下:

cpu1的led.c

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xparameters.h"
#include "xil_io.h"
#include "sleep.h"
#define MY_IP 0x41200000

#include "xil_mmu.h"
#define COM_VAL (*(volatile unsigned int*)(0xffff0000))
#define COM_VAL1 (*(volatile unsigned int*
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值