前 言:本文主要介绍基于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 有何亮点?
AM2632-Q1汽车双核 Arm® Cortex-R5F® MCU技术手册
如何在rt-thread studio上开发STM32H747这类双核的单片机?
fpga开发板 璞致ZYNQ 7000 系列之 PZ7035/PZ7045/PZ7100-FH 核心板与开发板用户手册
国产!全志T113-i 双核Cortex-A7@1.2GHz 工业开发板—ARM + DSP、RISC-V核间通信开发案例
PZ/璞致【PZ-ZU19EG-KFB】—ZYNQ UltraScale + 赋能异构计算与高性能嵌入式系统开发
【PZ-ZU15EG-KFB】——ZYNQ UltraScale + 异构架构下的智能边缘计算标杆
全国产!瑞芯微 RK3576 ARM 八核 2.2GHz 工业开发板—LVGL应用开发案例
AM263P2 高达 400 MHz 的双核 Arm®Cortex-R5F® MCU数据手册

Xilinx ZYNQ双核ARM通信开发实例
评论