xilinx zynq双核arm通信开发实例-凯发app

    凯发app-凯发天生赢家 >关于创龙 > 新闻资讯 > 技术文章

    联系凯发app

    contact us

    公司总机:020-8998-6280

    技术热线:020-3893-9437

    技术邮箱:support@tronlong.com

    销售邮箱:sales@tronlong.com

    xilinx zynq双核arm通信开发实例

    2021/12/23

    前  言:本文主要介绍基于openamp框架的双核arm通信案例的使用说明,cpu0(master)运行linux系统,cpu1(remote)运行裸机或freertos程序。cpu0使用remoteproc加载cpu1程序,并对cpu1进行配置。




    图 1

    openamp详细开发说明可查阅官方文档:https://china.xilinx.com/content/dam/xilinx/support/documentation/sw_manuals/xilinx2021_2/ug1186-zynq-openamp-gsg.pdf。

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







    产品资料(用户手册、核心板硬件资料、产品规格书) 


    可点击链接或扫码二维码获取 



    ↓↓↓





    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配置


    联系创龙

    公司总机:020-8998-6280

    技术热线:020-3893-9734

    技术邮箱:support@tronlong.com

    销售邮箱:sales@tronlong.com



    创龙官方微信公众号

    凯发app copyright © 2013~2021 广州创龙电子科技有限公司 all rights reserved  |

    网站地图