[ARM9、LPC]

非对称的ARM双系统,如何实现工业产品的低延时——基于ZYNQ

[复制链接]
2807|0
手机看帖
扫描二维码
随时随地手机跟帖
Tronlong创龙|  楼主 | 2022-4-15 16:50 | 显示全部楼层 |阅读模式
#申请原创# #每日话题# #有奖活动# #技术资源# #申请开发板#
现代工业设备系统要求越来越复杂,既要强大的多任务的事务处理能力,又需要低延时实时任务处理能力的需求,特别是工业自动化控制领域(如数控机床、机械臂)、电力监测领域(如DTU、继保设备、一二次融合设备)等应用场景尤为迫切。为了满足日益复杂的系统要求,基于Xilinx Zynq-7020/7010实现的双系统解决方案。
Xilinx Zynq-7020/7010是一款集成双核ARM Cortex-A9 + Artix-7 FPGA架构的单芯片SoC,它的OpenAMP框架可实现双核ARM Cortex-A9非对称使用方案,从而使双核ARM实现分别跑两个系统:一个ARM Cortex-A9跑Linux,一个ARM Cortex-A9作为实时核跑RTOS(FreeRTOS)或者裸机。实时核与FPGA端进行低延时的高速数据交换与实时通讯控制,低延时的实时任务要求。而跑Linux的 ARM核作为更上层应用,处理更复杂的业务事务。
Xilinx Zynq-7020/7010单芯片SoC方案配合双系统的应用为工业控制、电力一二次融合设备、医疗电子、测试测量、汽车电子、通信等应用是更灵活、更具优势的解决方案。
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
997a6983b0a24d4c8ed5b3ea16660cd1~tplv-obj.jpg
图 3
执行如下命令加载RPMsg驱动,并在“/dev/”目录下生成RPMsg设备节点。
Target# modprobe rpmsg_user_dev_driver
5372046fb48b4a58b11d20ff0fe5b3e4~tplv-obj.jpg
图 4
将CPU0应用程序可执行文件复制到评估板文件系统,并执行如下命令通过RPMsg与CPU1进行通信。
Target# ./echo_test
1410032f1d434f69b800d1d1d4f0a18c~tplv-obj.jpg
图 5
输入1,并按回车键进行测试。
6105cdbdc82b428d9725fd51f3dc3fe5~tplv-obj.jpg
图6
e7b731abe16c4c9781d94aa56aaf4006~tplv-obj.jpg
图7
输入2,并按回车键退出测试。
816effe9670b4fc688fd07cb9277647c~tplv-obj.jpg
图 8
执行如下命令,停止CPU1程序。
Target# echo stop > /sys/class/remoteproc/remoteproc0/state
ccc7ebb266544fa48367d82423ec3e0d~tplv-obj.jpg
图 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
95939a42d1cd46558158531b7620778b~tplv-obj.jpg

图 10
执行如下命令加载RPMsg驱动,并在“/dev/”目录下生成RPMsg设备节点。
Target# modprobe rpmsg_user_dev_driver
fc9534a1a7894e5193a9d86b761673a8~tplv-obj.jpg

图 11
将CPU0应用程序可执行文件复制到评估板文件系统,并执行如下命令通过RPMsg与CPU1进行通信。
Target# ./mat_mul_demo
38f473e3644f4576800cd803bcefea37~tplv-obj.jpg

图 12
输入1,并按回车键进行测试。
6fabaec637694b4db5d4e4a387d35f8c~tplv-obj.jpg

图 13
输入2,并按回车键退出测试。
dcc47b353f7144d7b81466f7d2d1acc3~tplv-obj.jpg

图 14
执行如下命令,停止CPU1程序。
Target# echo stop > /sys/class/remoteproc/remoteproc0/state
591a976b204c415bb0c9614e69b97fb5~tplv-obj.jpg

图 15
3、内存分配说明
512MByte DDR容量版本核心板的内存地址分配如下:
表 1
368ea4c7bfc94626b41a9351d03ce295~tplv-obj.jpg

1GByte DDR容量版本核心板的内存地址分配如下:
表 2
ce97fcd9e1ed46e4811e0ae22cfa0978~tplv-obj.jpg

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

图 16设备树文件tlz7x-easyevm-s.dts配置
7790586f7e544cfa970d68208a438df8~tplv-obj.jpg

图 17设备树文件tlz7x-easyevm-s.dts配置
5e446879e65d4b9fbae83d4facad4795~tplv-obj.jpg

图 18 CPU1程序资源表rsc_table.c配置
f3567f801595435e841b3aa74c9aea8d~tplv-obj.jpg

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

上述推文中的案例是在创龙科技(Tronlong)基于Zynq-7010/7020处理器设计的两款工业评估板——TLZ7x-EasyEVM、TLZ7x-EasyEVM-S上实现的,它由核心板+底板构成。
b09da80072e1445c86ae1ff8864f2892~tplv-obj.jpg

图 20 TLZ7x-EasyEVM硬件资源框图
fe89e0caa0e64d4fbb6fa0861a9ad9af~tplv-obj.jpg

图 21 TLZ7x-EasyEVM硬件资源框图
4f3b2d7344bf45de9107cfdeb1bd53c7~tplv-obj.jpg

图 22 TLZ7x-EasyEVM-S硬件资源框图

0c96282041f24302888314f1cf29425b~tplv-obj.jpg

图 23 TLZ7x-EasyEVM-S硬件资源框图


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

220

主题

226

帖子

4

粉丝