构建基于RT-Thread高性能工业电脑

36 篇文章 20 订阅

        RT-Thread OS 社区最近在讨论工业应用。笔者认为前提是要有一个开放型通用硬件平台。RT-Thread OS目前仍然是为Cortex-M ARM 通用嵌入式SOC为主的嵌入式应用设计的。如果希望将RT-Thread 应用于类似PLC/PAC 这样的工业控制器中,提高通用SoC 的处理能力是非常重要。

        嵌入式SOC厂商为各种应用开发了系列齐全的芯片。在单颗SOC芯片上集成了各种个样的IO外围电路,它们包括以太网,CAN,SPI,UART ,ADC等等。以至于要通过引脚复用的方式来提高IO外设的种类和数量。嵌入式工程师就像进入了一个自助餐宴会,一切都为你准备好了,不能想的太多。为嵌入式系统选择一片合适的SOC芯片变成了非常棘手的问题。

        但是嵌入式SOC芯片缺乏灵活性,实时性,确定性受到MCU 算力的限制。使用STM32这样的SOC来构建工业控制器时,无法满足许多高实时任务。比如伺服电机驱动器中,都包含了一个FPGA芯片。现代FPGA技术已经将传统的FPGA 演变成为了计算和AI处理器,能够实现更强大的算法,例如人脸识别,AI,快速傅里叶变换,数字滤波等。使用硬件实现算法,大大提高实时运算能力,并且更具有灵活性。

        我们使用STM32/FPGA 异构架构来实现高性能模块化嵌入式工业电脑,并且运行国产RT-Thread 实时操作系统。FPGA 强大的可编程能力能够实现IO接口模块化。

        尽管现代FPGA芯片中已经融入了软、硬核处理器,比如Xilinx公司的ZYNQ器件。但是出于成本和提高研发效率等因素,我们在modular-2 嵌入式工业电脑中增加了基于STM32/FPGA 架构的产品。选择STM32 作为SoC 芯片是因为大量的工程师对该芯片的软硬件应用具有丰富的经验,许多大学的课程也是以STM32 为背景。与此同时,国内厂商开发的嵌入式处理器与STM32 的架构类似。所以这种结构能够方便的移植到国产芯片上。

        modular-2 RTT 是为国产操作系统RT-Thread OS 设计的一台嵌入式模块化计算机。它基于ST 公司的STM32H750为核心,并且配置了一颗Xilinx spartan6 FPGA。产品符合工业领域现场使用的可靠性,实时性要求,支持多种网络协议和高性能IO接口。支持从原型设计,仿真和生产部署。

为什么增加FPGA

        对于大多数开发嵌入式系统的公司而言,通常是采用嵌入式芯片厂商开发的各种嵌入式处理器来开发嵌入式设备。著名的嵌入式处理器芯片厂商有NXP,TI,ST,Microchip等等。

        嵌入式SOC厂商为各种应用开发了系列齐全的芯片。在单颗SOC芯片上集成了各种个样的IO外围电路,它们包括以太网,CAN,SPI,UART ,ADC等等。以至于要通过引脚复用的方式来提高IO外设的种类和数量。嵌入式工程师就像进入了一个自助餐宴会,一切都为你准备好了,不能想的太多。为嵌入式系统选择一片合适的SOC芯片变成了非常棘手的问题。

  但是工业领域特殊的IO接口多,有些ASIC 芯片的接口需要增加额外的逻辑电路才能提高系统的性能(例如高分辨率ADC 高速数据采集,电机驱动,编解码器,PWM)系统中增加一颗FPGA 能够极大地增加系统的灵活性。

  另一方面,FPGA 能够实现算法加速,实现某些算法的硬件化(例如数字滤波,FFT 等)。modular-2 系统运行IEC61499 运行时,为了提高运行时的实时性和确定性,可以使用FPGA 实现IEC61499 功能块的硬件加速。

  modular-2 嵌入式电脑的一个重要的领域是教育行业,在一个电脑是包含了SoC和FPGA 双核架构,实现在一台设备上实现嵌入式系统和FPGA 学习。

产品特点

        modular-2 RTT 基于SoC/FPGA 异构计算架构。第一代产品使用STM32H750/Xilinx Spartan-6.通过配置不同的FPGA 芯片。能不断提升工业电脑的性能。

     为了满足各种工业应用的需求,modular-2 采取了模块化结构。它能够扩展一个处理器IO模块和四个FPGA IO模块。

   处理器IO模块支持SoC 的外围接口,包括Ethernet,FDCAN,UART,USB和SDCard 卡座。FPGA IO模块通过40pin 插座直接与FPGA 引脚相连,能够实现特定的硬件接口。例如

  1.  高速ADC 数据采集
  2. PWM/脉冲计数
  3. 电机驱动接口
  4. 光电解码器接口

硬件

  • 处理器 STM32H750XB,支持的主要接口

以太网

USB

FD-CAN

UART

SD 卡座

RTC 时钟

SPI Flash (用于存储FPGA bit file和其它参数文件)

  • FPGA  Xilinx spartan 6

软件

  • 国产RT-Thread OS 操作系统
  • 支持FPGA 配置
  • 支持FPGA IP 驱动程序库
  • IEC61499 运行时,与4diac IDE 兼容,支持动态功能块库

网络协议

支持各种常见的接口

  • UDP,TCP/IP
  • IEEE1588/PTP 精密时钟协议
  • modbus/TCP
  • MQTT

系统架构

FPGA与STM32 的接口

STM32/FPGA 之间的数据传输接口有两种方法:

高速口-FMC

  • BANK1 –连接外部SDRAM
  • BANK2 –连接FPGA

采用FMC 接口与FPGA 连接,能够提高SOC/FPGA之间数据交换的速率。

低速 -SPI

  数据采集系统需要SOC/FPGA 之间高速传输数据,而控制系统而言,SOC/FPGA 之间主要传递配置和状态。并不需要非常高的带宽。

FPGA 配置

        modular-2 能够在线升级FPGA 逻辑,对于Spartan-6 芯片而言,使用SelectMAP 并行接口实现。

        STM32 FMC 的D0~D15 连接到FPGA 的SelectMAP 脚。这样FMC既能够实现FPGA 的配置,又能够实现SOC/FPGA 之间的数据交换。

RT-Thread OS  的扩展

    要利用RT-thread 模块化特点,扩展对FPGA 的支持。包括FPGA 的配置,FPGA的数据交换以及各种常见FPGA IP 核的支持(例如PWM,FFT,数字滤波,电机驱动)。实现对SoC/FPGA 异构计算平台的支持。

结束语

上述内容只是一个初步的想法,抛砖引玉。感兴趣的读者可以共同探讨。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"多谢关注realboard,请访问慧至科技官方网站www.hugacy.com" 感谢大家关注realboard,再三感谢,尤其是众多发email过来询问的网友。 鉴于有网友怀疑realboad速度比qemu慢,事实胜于雄辩,提供测试方法如下: 测试方法: 分别运行两个batch程序,用秒表或PC时钟计时(大概1分钟左右结束) 计时方法: 程序启动开始计时; 出现UI画面结束计时. 测试代码(rt-thread 0.4.0 relese): 如果对测试代码有疑问,请联系rt-thread咨询 bsp/mini2440/sdcard.c rt_uint8_t sd_init(void) { //-- SD controller & card initialize int i; sd_delay(1000000); //此处增加一行对ARM仿真性能进行压力测试 /* Important notice for MMC test condition */ /* Cmd & Data lines must be enabled by pull up resister */ SDIPRE = PCLK/(INICLK)-1; SDICON = (0<<4) | 1; // Type A, clk enable SDIFSTA = SDIFSTA | (1<<16); SDIBSIZE = 0x200; /* 512byte per one block */ SDIDTIMER=0x7fffff; /* timeout count */ /* Wait 74SDCLK for MMC card */ for(i=0; i<0x1000; i++); sd_cmd0(); 参考配置: Pentium(R) Dual-Core CPU E5400 @ 2.70GHz 2.69GHz, 3.46GB of RAM 参考结果: qemu为47秒, realboard为28秒 realboard之所有没有达到23秒以内,是因为Timer处理和外设IO还有专门优化。 早期曾经对realboard核心指令集模拟器做过多媒体解码测试,综合性能是qemu的2倍。 详情请参考我的CSDN blog realboard -- 继续挑战ARM高性能软件仿真极限 <** 任何个人或团体学习者,教育培训机构,自由项目开发组织,在非商业赢利前提下,均可以无偿体验和使用realboard,商业使用请联系作者获得授权, email : lxzhg@hotmail.com **> 测试包中所含其它资源为自由软件开发组织所有,请参考各自许可协议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值