0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Xilinx ZYNQ双核ARM通信开发实例

Tronlong创龙科技 2021-12-27 13:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前 言:本文主要介绍基于OpenAMP框架的双核ARM通信案例的使用说明,CPU0(Master)运行Linux系统,CPU1(Remote)运行裸机或FreeRTOS程序。CPU0使用remoteproc加载CPU1程序,并对CPU1进行配置。


图 1

OpenAMP详细开发说明可查阅官方文档。

本文基于Xilinx Zynq-7010/7020平台进行案例测试。

图2

1、echo_test案例

1.1 案例功能

案例功能:CPU0使用RPMsg向CPU1发送数据,CPU1接收到数据后再使用RPMsg向CPU0回传数据。CPU0对回传的数据进行验证,并输出验证结果。

1.2 操作说明

将CPU1裸机或FreeRTOS可执行文件复制到评估板文件系统“/lib/firmware/”目录下,并执行如下命令加载CPU1程序。

Target# echo echo_test.elf > /sys/class/remoteproc/remoteproc0/firmware
Target# echo start > /sys/class/remoteproc/remoteproc0/state


图 3

执行如下命令加载RPMsg驱动,并在“/dev/”目录下生成RPMsg设备节点。
Target# modprobe rpmsg_user_dev_driver


图 4

将CPU0应用程序可执行文件复制到评估板文件系统,并执行如下命令通过RPMsg与CPU1进行通信。

Target# ./echo_test


图 5

输入1,并按回车键进行测试。

图 6


图 7

输入2,并按回车键退出测试。


图 8

执行如下命令,停止CPU1程序。

Target# echo stop > /sys/class/remoteproc/remoteproc0/state


图 9

2、matrix_multiply案例

2.1 案例功能

案例功能:CPU0随机生成两个矩阵并使用RPMsg向CPU1发送数据,CPU1接收到数据后进行矩阵乘法运算,再使用RPMsg向CPU0回传运算结果,然后CPU0通过串口终端输出运算结果。

2.2 操作说明

将CPU1裸机或FreeRTOS可执行文件复制到评估板文件系统“/lib/firmware/”目录下,并执行如下命令加载CPU1程序。

Target# echo matrix_multiply.elf > /sys/class/remoteproc/remoteproc0/firmware

Target# echo start > /sys/class/remoteproc/remoteproc0/state


图 10

执行如下命令加载RPMsg驱动,并在“/dev/”目录下生成RPMsg设备节点。

Target# modprobe rpmsg_user_dev_driver


图 11

将CPU0应用程序可执行文件复制到评估板文件系统,并执行如下命令通过RPMsg与CPU1进行通信。

Target# ./mat_mul_demo


图 12

输入1,并按回车键进行测试。


图 13

输入2,并按回车键退出测试。


图 14

执行如下命令,停止CPU1程序。

Target# echo stop > /sys/class/remoteproc/remoteproc0/state


图 15

3、内存分配说明

512MByte DDR容量版本核心板的内存地址分配如下:

表 1



1GByte DDR容量版本核心板的内存地址分配如下:

表 2



如需修改CPU1程序(OpenAMP-remote app)内存地址空间范围,可通过更改设备树文件tlz7x-easyevm-s.dts、资源表rsc_table.c及链接文件lscript.ld对内存地址空间进行重新分配。三者需同步修改并保持一致,以确保固件程序链接地址与设备树配置的elf_ddr_0对应。所使用的资源(内存和virtio设备资源)不能超出设备树文件配置的内存范围。


图 16设备树文件tlz7x-easyevm-s.dts配置


图 17设备树文件tlz7x-easyevm-s.dts配置


图 18 CPU1程序资源表rsc_table.c配置


图 19 CPU1程序链接文件lscript.ld配置

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20166

    浏览量

    329097
  • 开发板
    +关注

    关注

    25

    文章

    6139

    浏览量

    113602
  • Zynq-7000
    +关注

    关注

    3

    文章

    144

    浏览量

    37885
  • 核心板
    +关注

    关注

    6

    文章

    1349

    浏览量

    31771
  • 工控板
    +关注

    关注

    0

    文章

    202

    浏览量

    13778
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    同系列性能更强!面向高性能 AI 应用,AXU2CGB-I 有何亮点?

    于网络通信、AI 推理、4K 视频处理、工业控制等领域。 (AMD Zynq US+ MPSoC开发平台AXU2CGB-I)   更大内存,更高存储,更强算力   AXU2CGB-I 集成双
    的头像 发表于 11-12 16:56 1203次阅读
    同系列性能更强!面向高性能 AI 应用,AXU2CGB-I 有何亮点?

    AM2632-Q1汽车 Arm® Cortex-R5F® MCU技术手册

    ® Cortex-R5F® 内核。作为一种选择,Arm® R5F 子系统可以编程为在锁步或模式下运行,以实现多种功能安全配置。工业通信子系统 (PRU-ICSS) 支持集成工业以太
    的头像 发表于 10-10 10:14 805次阅读
    AM2632-Q1汽车<b class='flag-5'>双</b><b class='flag-5'>核</b> <b class='flag-5'>Arm</b>® Cortex-R5F® MCU技术手册

    RTthread怎么加载zynq的支持包?

    RTthread有xilinx zynq的芯片支持包了么,SDK管理器里面怎么下载ZYNQ的支持包呢?求助
    发表于 09-23 06:05

    如何在rt-thread studio上开发STM32H747这类的单片机?

    如题,我希望在rt-thread studio上开发STM32H747IIT6这款单片机,在keil里两个的代码是完全隔离的,分别在两个工程中编写。 但是在rt-thread s
    发表于 09-19 08:08

    fpga开发板 璞致ZYNQ 7000 系列之 PZ7035/PZ7045/PZ7100-FH 核心板与开发板用户手册

    本文介绍了Xilinx Zynq-7000系列可扩展处理平台及其开发板应用。Zynq-7000采用
    的头像 发表于 09-15 15:54 5927次阅读
    fpga<b class='flag-5'>开发</b>板 璞致<b class='flag-5'>ZYNQ</b> 7000 系列之 PZ7035/PZ7045/PZ7100-FH 核心板与<b class='flag-5'>开发</b>板用户手册

    国产!全志T113-i Cortex-A7@1.2GHz 工业开发板—ARM + FPGA通信案例

    本文主要介绍基于全志科技T113与FPGA的通信案例,适用开发环境如下。
    的头像 发表于 08-19 11:16 767次阅读
    国产!全志T113-i <b class='flag-5'>双</b><b class='flag-5'>核</b>Cortex-A7@1.2GHz 工业<b class='flag-5'>开发</b>板—<b class='flag-5'>ARM</b> + FPGA<b class='flag-5'>通信</b>案例

    国产!全志T113-i Cortex-A7@1.2GHz 工业开发板—ARM + DSP、RISC-V通信开发案例

    本文档主要介绍T113-i处理器的ARM + DSP、RISC-V通信开发案例,演示T113-i处理器ARM Cortex-A7与HiF
    的头像 发表于 08-18 14:03 644次阅读
    国产!全志T113-i <b class='flag-5'>双</b><b class='flag-5'>核</b>Cortex-A7@1.2GHz 工业<b class='flag-5'>开发</b>板—<b class='flag-5'>ARM</b> + DSP、RISC-V<b class='flag-5'>核</b>间<b class='flag-5'>通信</b><b class='flag-5'>开发</b>案例

    PZ/璞致【PZ-ZU19EG-KFB】—ZYNQ UltraScale + 赋能异构计算与高性能嵌入式系统开发

    璞致电子推出的PZ-ZU19EG-KFB开发板采用Xilinx ZYNQ UltraScale+ XCZU19EG核心,集成了四Cortex-A53、
    的头像 发表于 07-24 09:34 1017次阅读
    PZ/璞致【PZ-ZU19EG-KFB】—<b class='flag-5'>ZYNQ</b> UltraScale + 赋能异构计算与高性能嵌入式系统<b class='flag-5'>开发</b>

    【PZ-ZU15EG-KFB】——ZYNQ UltraScale + 异构架构下的智能边缘计算标杆

    璞致电子推出PZ-ZU15EG-KFB异构计算开发板,搭载Xilinx ZYNQ UltraScale+ XCZU15EG芯片,整合四ARM
    的头像 发表于 07-22 09:47 709次阅读
    【PZ-ZU15EG-KFB】——<b class='flag-5'>ZYNQ</b> UltraScale + 异构架构下的智能边缘计算标杆

    全国产!瑞芯微 RK3576 ARM 2.2GHz 工业开发板—LVGL应用开发案例

    本文主要基于评估板演示LVGL应用开发案例,适用开发环境如下。创龙科技 TL3576-EVM 是一款基于瑞芯微 RK3576J/RK3576高性能处理器设计的4ARM Cortex-
    的头像 发表于 06-23 15:17 586次阅读
    全国产!瑞芯微 RK3576 <b class='flag-5'>ARM</b> 八<b class='flag-5'>核</b> 2.2GHz 工业<b class='flag-5'>开发</b>板—LVGL应用<b class='flag-5'>开发</b>案例

    请问的芯片如何调试?

    的芯片如何调试?比如有很多M4+M0的芯片,是分开调试合适可以一起调试?
    发表于 06-19 07:32

    ZYNQ FPGA的PS端IIC设备接口使用

    zynq系列中的FPGA,都会自带两个iic设备,我们直接调用其接口函数即可运用。使用xilinx官方提供的库函数,开发起来方便快捷。
    的头像 发表于 04-17 11:26 1764次阅读
    <b class='flag-5'>ZYNQ</b> FPGA的PS端IIC设备接口使用

    AM263P2 高达 400 MHz 的 Arm®Cortex-R5F® MCU数据手册

    ® Cortex-R5F® 内核。作为选件,Arm® R5F 子系统可以编程为以锁步或模式运行,以实现多种功能安全配置。工业通信子系统 (PRU-ICSS) 支持集成的工业以太网
    的头像 发表于 04-14 13:34 1526次阅读
    AM263P2 高达 400 MHz 的<b class='flag-5'>双</b><b class='flag-5'>核</b> <b class='flag-5'>Arm</b>®Cortex-R5F® MCU数据手册

    从零开始驯服Linux(一):ZYNQ-Linux启动文件构建全解析

    BOOT.BIN进入到u-boot源码根目录下。领航者开发板对应的配置文件为:configs/xilinx_zynq_virt_defconfig领航者开发板对应的设备树文件为:arch/ar
    发表于 03-20 16:48

    STM32H7间如何通信

    STM32H7通信的方法,主要是CM7和CM4之间如何进行数据传递
    发表于 03-12 07:34