Zynq7000 OPENAMP 实验

article/2025/11/8 7:17:29

前言

Zynq7000 openamp实验,最近想做一个多cpu异构系统,后面会用zynqmp去做,先拿zynq7000试一下
在这里插入图片描述
首先说明,openamp是开源异构多处理通信框架。现在cpu不再像以前单个cpu,而是越来越复杂,比如TI的TDA4芯片,4个A72、两个R5、四个DSP,再比如XILINX的ZynqMP,四个A53,两个R5。一般做法都是A72、A53跑linux或者QNX,R5跑RTOS,在一些实时性较高的场景。
环境:PETALINUX2020.1

开始

首先参考官方的APP UG1186,一切都可以在里面找到答案。

LINUX配置

配置kernel:

[*] Enable loadable module support --->
Device Drivers --->Remoteproc drivers ---># for R5:<M> ZynqMP_r5 remoteproc support# for Zynq A9<M> Support ZYNQ remoteproc

配置rootfs:

Filesystem Packages --->-> Petalinux Package Groups-> packagegroup-petalinux-openamp
Filesystem Packages --->misc --->openamp-fw-echo-testd --->[*] openamp-fw-echo-testdopenamp-fw-mat-muld --->[*] openamp-fw-mat-muldopenamp-fw-rpc-demo --->[*] openamp-fw-rpc-demo
Filesystem Packages--->misc --->sysfsutils --->[*] libsysfsLibs --->libmetal--->[*] libmetal
Filesystem Packages --->libs --->libmetal-->[*] libmetal-demos

配置设备树:

/include/ "system-conf.dtsi"
/ {leds {compatible = "gpio-leds";heartbeat_led {label = "heartbeat";gpios = <&gpio0 0 1>;linux,default-trigger = "heartbeat";};};reserved-memory {#address-cells = <1>;#size-cells = <1>;ranges;vdev0vring0: vdev0vring0@0e800000 {no-map;compatible = "shared-dma-pool";reg = <0x0e800000 0x4000>;};vdev0vring1: vdev0vring1@0e804000 {no-map;compatible = "shared-dma-pool";reg = <0x0e804000 0x4000>;};vdev0buffer: vdev0buffer@0e808000 {no-map;compatible = "shared-dma-pool";reg = <0x0e808000 0x100000>;};rproc_0_reserved: rproc@0e000000 {no-map;compatible = "shared-dma-pool";reg = <0x0e000000 0x800000>;};};remoteproc0: remoteproc@0 {compatible = "xlnx,zynq_remoteproc";firmware = "firmware";vring0 = <15>;vring1 = <14>;memory-region = <&rproc_0_reserved>, <&vdev0buffer>, <&vdev0vring0>, <&vdev0vring1>;};
};

配置boot cfg:
(1)我这边使用的是串口0
(2)启动命令:maxcpus=1

CPU1程序

在这里插入图片描述
链接脚本起始地址要和设备树对应
在这里插入图片描述
Shared mem也要对上
在这里插入图片描述
串口更换设备1
在这里插入图片描述
cpu flag增加 -DUSE_AMP=1

编译启动

root@joker:/lib/firmware# echo echo_test.elf > /sys/class/remoteproc/remoteproc0/firmware
root@joker:/lib/firmware# echo start > /sys/class/remoteproc/remoteproc0/state
remoteproc remoteproc0: powering up remoteproc@0
remoteproc remoteproc0: Booting fw image echo_test.elf, size 2904672
virtio_rpmsg_bus virtio0: rpmsg host is online
virtio_rpmsg_bus virtio0: creating channel rpmsg-openamp-demo-channel addr 0x0remoteproc@0#vdev0buffer: registered virtio0 (type 7)
remoteproc remoteproc0: remote processor remoteproc@0 is now up
root@donce:/lib/firmware# cd /dev/Echo test startMaster>probe rpmsg_charOpen rpmsg dev virtio0.rpmsg-openamp-demo-channel.-1.0!
Opening file rpmsg_ctrl0.
checking /sys/class/rpmsg/rpmsg_ctrl0/rpmsg0/name
svc_name: rpmsg-openamp-demo-channel
.**************************************Echo Test Round 0**************************************sending payload number 0 of size 9
echo test: sent : 9received payload number 0 of size 9sending payload number 1 of size 10
echo test: sent : 10received payload number 1 of size 10sending payload number 2 of size 11
echo test: sent : 11received payload number 2 of size 11sending payload number 3 of size 12

可以发现正常运行


http://chatgpt.dhexx.cn/article/1C3fBft5.shtml

相关文章

ZYNQ7000固化流程

ZYNQ7000固化流程 生成BOOT.bin文件 &#xff08;1&#xff09;在SDK开发环境下&#xff0c;将FSBL.elf文件&#xff0c;FPGA.bit文件和FW.elf文件按次序添加并打包成BOOT.bin文件 2. BOOT.bin文件固化 &#xff08;1&#xff09;在xilinx SDK环境中通过JTAG进行固化&#x…

zynq7000 资源介绍

zynq 7000 资源介绍 整体框架PS端资源PS端资源 整体框架 Zynq7000系列是基于APSOC的可拓展处理平台&#xff0c;它的本质特征是将一个双核ARM Cortex-A9处理器和一个可编程的FPGA芯片集成到一个片上系统中。在进行Zynq7000的详细说明前&#xff0c;本节首先对架构的高层模型进…

zynq7000 创建fsbl工程,并打开log

背景&#xff1a;若通过petalinux编译的启动文件&#xff0c;放到sd卡里面&#xff08;或者flash&#xff09;&#xff0c;上电后串口没有任何log信息&#xff1b;可以考虑搭建fsbl工程。 以2018.3版本为例。 1、把*.hdf文件放到想要创建的文件里面&#xff0c;然后双击“Xil…

ZYNQ7000-GPIO详解

摘要 本文介绍了ZYNQ7000芯片中GPIO的基本概念&#xff0c;分组、功能、控制寄存器、中断设置以及如何在Vitis中配置GPIO。 本文参考&#xff1a;UG585 - Zynq-7000 SoC Technical Reference Manual (v1.12.2) 385~394页–Ch14: General Purpose I/O(GPIO) 关键词&#xff1a…

zynq7000中断系统

7.1环境 这一章节描述了系统级的中断环境以及中断控制器功能。PS端是基于ARM架构的&#xff0c;并且使用了两个Cortex-A9处理器以及型号为pl390的GIC中断控制器。整个中断结构与处理器、可编程逻辑器件(PL)、从外部IO接受到的中断请求有非常紧密的联系。本章节包含了下面这些关…

【ZYNQ】ZYNQ7000 UART 控制器及驱动应用示例

UART 简介 我们在使用 PS 的时候&#xff0c;通常会添加 UART 控制器&#xff0c;用于打印信息和调试代码。除此之外&#xff0c;PS 在和外部设备通信时&#xff0c;也会经常使用串口进行通信。 UART 控制器 UART 控制器是一个全双工异步收发控制器&#xff0c;ZYNQ 内部包含…

Xilinx ZYNQ 7000入门

ZYNQ是Xilinx推出的新一代全可编程片上系统&#xff0c;将处理器的软件可编程性与FPGA的硬件可编程性完美整合。 ZYNQ7020&#xff1a;xc7z020clg400-2 ZYNQ7010&#xff1a;xc7z010clg400-1 组合了一个双核ARM Cortex-A9&#xff08;PS&#xff09;处理器和一个传统的…

ZYNQ7000平台介绍

基于ZYNQ7000平台软件开发 ZYNQ7000平台简介 本文介绍ZYNQ7000平台采用Avnet推出的ZedBoard开发板进行讲解&#xff0c;ZedBoard开发板基于Xilinx Zynq-7000 All Programmable Soc&#xff0c;整合了双核Cortex-A9的PS处理单元和PL逻辑单元。 在zynq上&#xff0c;ARM Cortex…

【ZYNQ】ZYNQ7000 全局定时器及其驱动示例

定时器简介 在 ZYNQ 嵌入式系统中&#xff0c;定时器的资源是非常丰富的&#xff0c;每个 Cortex-A9 处理器都有各自独立的 32 位私有定时器和 32 位看门狗定时器&#xff0c;这两个 CPU 同时共享一个 64 位的全局定时器&#xff08;GT&#xff09;。 系统框图 全局定时器&am…

Xilinx ZYNQ 7000学习笔记一(复位和启动)

一、复位系统 参考文献&#xff1a;Zynq-7000 SoC Technical Reference Manual (UG585)-ch26 Reset System zynq7000复位信号源包括硬件复位、看门狗定时器、JTAG控制器复位信号和软件复位信号。其中&#xff0c;硬件复位引脚由上电复位信号PS_POR_B和系统复位信号PS_SRST_B驱…

zynq7000系列芯片介绍

ZYNQ从架构上可以划分为两大模块&#xff0c;一个是PS&#xff08;处理器系统&#xff09;&#xff0c;另一个是PL&#xff08;可编程逻辑&#xff09; PS由APU、内存接口、IO外设、互连线4大模块组成。 1、APU&#xff08;Application Processor Unit)应用处理单元 即PS【可编…

xilinx zynq-7000 基本知识

Zynq-7000 采用可扩展式处理平台架构&#xff08;Extensible Processing Platform、EPP&#xff09;&#xff0c;是 Xilinx 用 28nm HKMG工艺制成的低功耗&#xff0c;高性能&#xff0c;高扩展性的新型芯片&#xff0c;这款新品里面集成了ARM CORTEX-A9 MPSOC 硬核以及相应的S…

ZYNQ-7000概述

摘要 Xilinx推出的ZYNQ-7000被称为全可编程片上系统&#xff08;SOC&#xff09;&#xff0c;它由FPGA与ARM组合构成&#xff0c;硬件可编程&#xff0c;软件也可编程&#xff0c;在众多应用场合有一定优势。本文根据Xilinx官网的介绍并结合ZYNQ-7000的多份数据手册总结了此产品…

ZYNQ学习笔记(一)---初识ZYNQ-7000系列

前几日刚入手一款ZYNQ-7000系列的板卡&#xff0c;之前我也没用过FPGA&#xff0c;直接跨越到ZYNQ的原因主要是某宝上这款板卡相较于其他片上仅有一块FPGA的板卡性价比更高。作为入门&#xff0c;在学习过程中&#xff0c;笔者选择先单独学习ZYNQ上的FPGA部分&#xff0c;也就是…

ZYNQ7000 Vivado详细教学步骤

ZYNQ7000 Vivado开发 ZYNQ7000 Vivado详细教学步骤 ZYNQ7000 Vivado开发1.建立工程项目2.创建Block Design3.配置IO BANK4.配置DDR和CLOCK5.配置PS外设6.测试PS外设7.增加PL外设 1.建立工程项目 Xilinx提供了一系列开发工具&#xff0c;其中包括Vivado平台工具&#xff0c;它是…

mongodb客户端 robo 3T 查询突破50行限制

robo 3T的小bug 这个mongodb客户端&#xff0c;每次查询数据只有50行&#xff0c;虽然有向下翻页的功能 但实际上点击后会被重置&#xff0c;还是只有前50条 解决办法 DBQuery.shellBatchSize 500; 当前窗口最大查询数量修改到500&#xff08;只有当前窗口生效&#xff09;…

centos7仅安装mysql/mongodb客户端

1、仅安装MySQL客户端 # 添加rpm源 [rootk8s-master ~]# rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm [roottest1 ~]# # 通过yum搜索 [roottest1 ~]# yum search mysql-community [roottest1 ~]# # 安装x64位的 mysql客户端 [roottest1 ~]…

专业级MongoDB桌面客户端:MongoBooster for Mac

mongobooster mac破解版是适用于MongoDB的最智能IDE,也是以shell为中心的跨平台GUI工具,它提供了流畅的查询构建器,SQL查询SQL查询,就地更新,ES2017语法支持和真正的智能感知体验。MongoBooster下载可以帮助用户能够连接到选项卡式用户界面中的多个数据库,并通过shell命令…

mongodb官方客户端可视化工具Compass,免费,官方值得信赖

之前一直用的客户端是nosqlbooster4mongo&#xff0c;基本操作还都是挺好用的&#xff0c;但是有一些命令在这个客户端上运行不了&#xff0c;以后要慢慢的替换到compass上。 下载compass 官方下载&#xff1a;https://downloads.mongodb.com/compass/mongodb-compass-1.26.1…

Centos下mongodb的安装

方法一 可以使用yum命令直接安装MongoDB服务端和客户端。 sudo yum install mongodb-server # 安装MongoDB服务端 sudo yum install mongodb # 安装MongoDB客户端 sudo mongod -f /etc/mongod.conf # 加载配置项&#xff0c;启动mongodb服务器 mongo #启动客户端方法…