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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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*)(0xffff0004))
#d
文档共60页。主要向初学者提供了Zynq开发的技术方向,针对不同应用给出了基本的参考文档;同时对Zynq双核AMP加载方式做了详细描述,对Zynq的fsbl启动流程做了简单介绍。章节如下: Zynq User Guide 1 介绍 4 2 快速上手指南 4 3 开发教程 4 3.1 AMP开发说明 6 3.1.1 快速生成amp工程 6 3.1.2 Generating Boot File 8 3.1.3 烧写程序 9 3.1.4 启动 10 3.1.5 调试 10 3.1.6 总结 11 3.2 SMP开发说明 11 4 ZC706启动代码分析 11 4.1 启动代码 12 4.2 FSBL流程(FOR AMP) 13 4.3 CPU0启动CPU1流程 14 5 程序在线烧写方案及流程 14 5.1 程序烧写需求 14 5.2 提出该需求的原因 14 5.3 程序烧写方案 14 5.3.1 BOOT.BIN组成 14 5.3.2 BOOT.BIN生成方法 15 5.4 FSBL.BIN和APP.BIN等的生成 15 5.5 制作*BIN及烧写的具体步骤 15 5.5.1 制作*bin流程 15 5.5.2 BOOT.bin制作过程 15 5.5.3 FSBL.bin和APP.bin等的生成过程 22 5.6 烧写BOOT.BIN步骤 26 5.6.1 通过SDK工具烧写步骤 26 5.6.2 通过上位机烧写软件的烧写步骤 29 5.6.3 通过串口调试助手烧写步骤 29 6 Zynq Qspi控制器 30 6.1 基本特性 30 6.2 I/O接口 31 6.3 QSPI控制器模式 33 6.3.1 I/O模式 33 6.3.2 线性地址(linear address)模式 33 6.3.3 传统(legacy)SPI模式 34 6.4 QSPI 例程 34 6.5 QSPI控制器支持访问32MB方法 35 6.5.1 Bank地址寄存器(Bank address register) 35 6.5.2 扩展地址模式(Extended address mode) 35 6.5.3 使用新写命令(New commands) 35 6.6 QSPI FLASH选择 35 6.7 作为BOOT器件考虑 35 7 µC/OS系统启动指南 36 7.1 INTRODUCTION 36 7.1.1 Software Requirements 36 7.1.2 Hardware Requirements 36 7.2 HARDWARE DESIGN 37 7.2.1 Step 1. Invoke the Vivado IDE and Create a project 37 7.2.2 Step 2. Create an IP Integrator Design 39 7.2.3 Step 3. Add and setup the Zynq processor system IP block 39 7.2.4 Step 4. Customize the Zynq block for our design 41 7.2.5 Step 5. Add the soft peripherals 45 7.2.6 Step 6. Generate HDL Design Files 47 7.2.7 Step 7. Synthesis, Implement and Generate Bitstream 48 7.3 SOFTWARE DESIGN 49 7.3.1 Step 1. Installation of the µC/OS Repository 49 7.3.2 Step 2. Generate the µC/OS BSP 50 7.3.3 Step 3. Build and Debug the Demonstration Project 54 7.3.4 Step 4. Program the AXI Timer 0 with the ucos_axitimer Driver 55 7.3.5 Step 5. Program the AXI Timer 1 with the Xilinx tmrctr Driver 58 7.4 CONCLUSION 59 8 Linux系统启动指南 59
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值