ESM7000异构CPU架构实时应用简介

 2021-5-7     作者:刘乾坤    

  ESM7000是英创基于i.MX7D处理器开发的低功耗高性能工控主板,支持双网口、6串口、双CAN总线接口、PCIe、ISA总线等丰富的通讯接口,支持18-bit并行RGB或LVDS显示接口。主CPU i.MX7D是NXP推出的异构多核处理器,配置了主频高达1GHz的ARM Cortex-A7双核和一颗运行速度240MHz、带硬件浮点运算的ARM Cotex-M4内核。下图是ESM7000的原理框图:


基于ESM7000异构CPU架构的实时应用.png


  ESM7000可预装正版WEC7或RT Linux操作系统,但对于一些实时性要求极高的应用,无论是WEC还是RT Linux操作系统都无法满足对中断事件的及时响应,而且频繁的中断响应也会大大的降低操作系统性能。对这类应用场合就可充分利用i.MX7D的异构多核结构,由高性能的Cortex-A7双核完成人机交互、数据处理、通讯管理等复杂运算,而对于实时的数据采集、高速的中断事件响应等实时任务交由i.MX7D的Cotex-M4完成。


  基于异构多核处理器的应用软件开发分为两个部分:一是基于RT Linux的用户应用程序User APP,另一个是在Cortex-M4内核上运行的实时控制程序。User APP与M4有两种数据交互方式:一是在Linux内核中已经实现的针对异构多核处理器 (AMP-Asymmetric Multiprocessing)的多核通讯的协议RPMsg(Remote Processor Messaging),RPMsg提供了User APP与M4之间的双向数据通道,适合小数据的传输。另一种方式是基于共享内存,用于实现批量数据的单向高速传输,使用共享内存的同时,也还需要利用RPMsg实现User APP与M4之间的数据同步。下图是User APP、Linux Kernel、M4程序以及通讯的逻辑框图:


基于ESM7000异构CPU架构的实时应用.png


  上图中的us timer是一个硬件微秒计时器,用于实现User APP与M4之间的时间同步。Cortex-M4程序可以直接基于裸机编程,也可以基于FreeRTOS实时操作系统,Cortex-M4软件开发的详细说明可参考《ESM7000 Cortex-M4技术开发参考手册》


  传统的实时控制方案通常是前端使用单片机或CPLD/FPGA实现数据采集、实时控制,后端再利用一个嵌入式系统进行数据存储、通讯管理、人机交互等操作,硬件和软件设计都很复杂,成本很高。而基于异构多核处理器的ESM7000,可同时实现实时数据采集与控制、数据分析运算存储、网络通讯、人机交互等工作。


  此外传统方案的前端单片机/FGPA与后端嵌入式系统的数据通讯,如果使用串口或SPI,最多能实现每秒几兆字节的数据传输,如果要获得更高的数据传输速率就需要使用千兆网口、PCIe等高速通讯接口,系统复杂程度和成本都会显著提高。而我们在ESM7000上实际测试,不用增加任何硬件成本,用户应用程序与M4之间基于共享内存方式轻松就能实现50MB/s的数据交互传输。


  基于ESM7000异构CPU架构的实时应用方案可以以更低的成本、更简洁可靠的设计实现复杂的实时控制应用,可广泛应用于电网监控、多通道数据采集、电机控制、工业自动化与控制等多种领域。