ZYNQ 双核运行并交互,一个linux,一个裸核 您所在的位置:网站首页 cpu怎么设置双核还是单核 ZYNQ 双核运行并交互,一个linux,一个裸核

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

2024-07-14 20:36| 来源: 网络整理| 查看: 265

ZYNQ 双核运行并交互,一个linux,一个裸核 前言需要掌握的知识硬件平台的建立裸机流水灯工程的准备和验证petalinux 2018.2 工程的建立打包程序包括流水灯程序2:设置linux 为 单核 petalinux 核和裸机流水灯核的交互

前言

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 或其他版本的启动制作。

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

硬件平台的建立

硬件工程的建立是在Vivado2018.2 上完成的。其实要求很简单,符合linux下流水灯实验的要求即可,当然还需要挂接上SD卡。

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

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

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

cpu1的led.c

#include #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*)(0xffff0004)) #define COM_VAL2 (*(volatile unsigned int*)(0xffff0008)) int main() { u32 Ledwidth; u32 count; Xil_SetTlbAttributes(0xffff0000,0x14de2); COM_VAL=0; COM_VAL1=0; count=0; while (1) { for (Ledwidth = 0x0; Ledwidth < 4; Ledwidth++) { Xil_Out32(MY_IP,1

在出现的子界面里选择 Kernel Bootargs ----->

取消那个generate boot args automatically,转到下行回车,或者直接出现输入界面 在这里插入图片描述

在这个界面里添加 maxcpus=1, 如下图 在这里插入图片描述

这样操作保存后后,再petalinux-build ,按上面打包方法打包,在petalinux 2018.2 启动后, 流水灯在继续运行。

这说明cpu0 核运行petalinux2018.2 ,cpu1 运行裸机流水灯成功了。

petalinux 核和裸机流水灯核的交互

在上面的流水灯代码里,

COM_VAL1=1


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有