基于OpenAMP框架的双核ARM通信案例

zynq 是赛灵思公司(xilinx)推出的新一代全可编程片上系统(apsoc),它将处理器的软件可编程性与 fpga 的硬件可编程性进行完美整合,以提供无与伦比的系统性能、灵活性与可扩展性。
前言:
本文主要介绍基于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平台进行案例测试。
图 2
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             1
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            01
内存分配说明
512mbyte ddr容量版本核心板的内存地址分配如下:
表 1
名称 地址范围 范围大小
ps linux 0~0x17ff ffff 384mbyte
pl microblaze 0x1800 0000~0x18ff ffff 16mbyte
openamp-remote app 0x1900 0000~0x19ff ffff 16mbyte
pl 0x1a00 0000~0x1fff ffff 96mbyte
1gbyte ddr容量版本核心板的内存地址分配如下:
表 2
名称 地址范围 范围大小
ps linux 0~0x17ff ffff 384mbyte
pl microblaze 0x1800 0000~0x18ff ffff 16mbyte
openamp-remote app 0x1900 0000~0x19ff ffff 16mbyte
pl 0x1a00 0000~0x1fff ffff 96mbyte
ps linux 0x2000 0000~0x3fff ffff 512mbyte
如需修改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配置


中企大手笔押注液晶显示器面板 瞄准世界第一
万能板的选择以及焊接方法和技巧
多功能RTU快速接入第三方服务器或云平台或SCADA
面对SSD竞争压力,硬盘驱动器正逐步迈向复苏
模块化EMI交流线路滤波器
基于OpenAMP框架的双核ARM通信案例
精彩预告 | OpenHarmony Meetup 2023 北京站抢先剧透
认识服务器风扇
现代汽车将获得对波士顿动力的最终控制权?
热电堆红外传感器的原理和结构
华为最新技术 “天网”支持飞机上网
智能安防 “黑科技”,华为为打造平安城市保驾护航
Facebook如何看待AR/VR技术的长期未来
如何用AWTK和AWPLC快速开发嵌入式应用程序
ABB首个智慧建筑客户体验中心落户北京
华为智慧屏售价曝光 65寸7999元
电容触控传感技术将会让手机变得更加智能
2020年工业互联网行业趋势分析
高比能量动力电池将是未来研发和产业化的重点
创新突破:精准型农业与气候不确定性