导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    【玩转多核异构】T153核心板RISC-V核的实时性应用解析

    飞凌嵌入式专区
    1
    1
    80
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Forlinx
      Forlinx LV 5 最后由 编辑

      在智能硬件功能持续升级的当下,传统单片机以及传统的MPU都面临着“力不从心”的困境——多网络协同、多串口并发、多通道无线通信等复杂需求,以及文件管理、数据加密、人机交互、数据压缩等增强功能,单核方案已难以全面承载。

      在这样的背景下,“管理核+实时核”的双核异构架构的方案逐渐脱颖而出,成为破局关键。因此,选择一款集成度高、通信效率优、成本可控的多核异构主控平台,就成为破解当前困局的更优答案。

      1、FET153-S核心板
      飞凌嵌入式FET153-S核心板基于全志T153处理器设计,面向工业与电力应用。该处理器集成四核Cortex-A7与一颗独立64位玄铁E907 RISC-V MCU,具备丰富的接口资源与工业级可靠性,完美契合现代FTU对处理性能与实时性的双重需求。

      此外,T153处理器还提供10路UART、24路GPADC、6路TWI接口、30路PWM等接口,这些接口为多样化应用提供灵活性。
      替代文字

      01、实时方案: AP+MCU系统架构
      飞凌嵌入式FET153-S核心板支持AP+MCU模式的实时方案。AP+MCU系统架构为Linux+MCU RTOS/Bare-metal。运行LinuxAP处理器核心作为主核(Master Core);运行RTOS/Bare-metal的MCU处理器核心作为从核(Remote Core)。主核负责整个多核异构系统中共享资源的划分和管理,并运行主站服务程序。
      替代文字

      02、RISC-V核的接口资源
      a4c93faf-92c2-4c2b-9dbe-b037f23be50e-image.png

      注:上表中功能均已测试通过。

      2、应用实例
      01、SPI数据收发
      ① 功能介绍
      本案例为SPI外回环测试,即将SPI的MOSI和MISO两个引脚短接进行数据收发。
      替代文字

      ② 效果展现

      传输效果:
      替代文字

      AD采样芯片采用两线制串行总线接口进行数据传输,其标称典型通信速率可达20MHz级别。该两线制串行总线在电气特性和时序规范上与标准SPI接口高度契合,支持主从模式下的全双工同步通信板载SPI控制器支持最高通信速率达50MHz,SPI硬件控制器能够精确生成满足AD芯片建立时间和保持时间要求的时钟信号,确保数据传输的可靠性。

      02、中断嵌套
      本案例采用两个定时器进行测试。

      ① 功能介绍
      替代文字

      ② 效果展现
      测试方法:配置两个不同优先级的定时器,低优先级定时器(timer3)定时1s,回调中延迟900ms,以此达到延迟退出中断的时间。高优先级定时器(timer2)定时100ms,中断回调中不加延时。

      注意:在RISC-V核中,中断优先级为数字越大,优先级越高。

      现象如下:在低优先级中断中,被高优先级的中断打断,并且执行完高优先级中断后程序回到低优先级中断中继续执行。
      替代文字

      03、核间通信RPMgs
      ① 标准框架

      RPMsg是一种基于Virtio的消息总线,构建于Virtio框架之上,用于实现处理器间的消息传递。每个RPMsg通道包含本地源地址和远程目标地址,消息可在两者之间传输。

      Virtio提供了共享内存管理与虚拟设备支持,其核心是成对的vring(环形缓冲区),分别用于发送和接收消息。这两个vring共同构成一个环形队列,vring缓冲区即为处理器间的共享内存区域。当共享内存中有新消息到达时,mailbox框架会通知相应处理器进行接收处理。
      替代文字

      ② 通信流程

      在RPMsg中,只有在主处理器发送第一条消息以后,双核之间才可以进行核间通信,才可以互发数据。因此,当创建debugfs节点后,主处理器在 rpmsg_test_probe() 函数中调用 rpmsg_send() 函数主动向远端处理器发送第一条信息:

      在DSP端调用rpmsg_test_init() 接口,并创建rpmsg端点;
      在主处理器的debugfs节点的write函数中先从用户层得到要传输的数据,并调用rpmsg_send()函数发送至DSP;
      DSP在接收到数据之后,调用callback函数,将接收到数据显示出来;
      DS中调用rpmsg_test_send()接口(内部真实调用rpmsg_send() 函数),发送数据至主处理器;
      在主处理器接收到数据之后,callback回调会调用 rpmsg_test_cb()函数,将接收到的数据显示出来,完成 CPUX→DSP、DSP→CPUX通信的完整回路。
      RPMsg每次发送的最大数据长度为512Bytes,由于RPMsg还带有16Bytes的数据头,因此一次性传输的最大数据量为496Bytes。
      替代文字

      ③ 通信流程

      普通传输:乒乓示例
      替代文字

      大数据传输:
      在实际应用中,原始RPMsg框架在通信传输方面存在一定的局限性,主要表现为单次数据负载上限较低,默认仅为496字节。以传输1MB数据为例,需拆分为约2114次发送操作方可完成。每次数据传输需触发两次中断,累计中断次数高达4228次,频繁的中断处理引入了显著的性能开销。同时,实测单次传输496字节耗时约1.05毫秒,综合上述因素,完成1MB数据的传输总耗时约为2.2秒,该传输效率在当前应用场景下难以满足用户对实时性与吞吐量的要求。

      全志科技在RPMsg基础上增加了RPBuf大数据传输的框架,如下图所示。
      替代文字

      以上就是小编为大家带来的飞凌嵌入式FET153-S核心板RISC-V的使用方法。它的异构多核架构展现出了卓越的通信性能,能够为诸多应用提供高效可靠的核心支撑,特别适用于对实时性和稳定性要求极高的智能应用场景。

      1 条回复 最后回复 回复 引用 分享 1
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策