0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino玩家如何用ShieldBuddy开发板玩转FPU

得捷电子DigiKey 来源:得捷电子DigiKey 作者: Clive Maxfield 2021-12-10 09:57 次阅读

许多业余爱好者、创客DIY爱好者都使用Arduino微机开发板来监视和控制他们的项目。于是,越来越多的专业工程师也开始将这些开发板用作评估和原型开发平台,以便加快开发速度,降低集成电路IC)、传感器和外设评估方面的成本。如《使用Arduino BOB快速评估传感器和外设》一文所述,这些工程师所在的团队可能比较精简,而且还深受产品上市时间(TTM) 日益缩短的制约。因此,他们必须承担多个工程领域的工作,同时设法加快元器件评估并降低成本。

其中一种解决方案是将Arduino与传感器和外设分线板 (BOB) 之类的开源硬件及库和示例程序之类的开源软件结合使用。尽管有多种Arduino开发板可以满足一系列的处理和存储器要求,但是使用浮点运算器 (FPU) 却能更好地完成某些计算,从而避免减慢主处理器的速度。

在Arduino生态系统中,ShieldBuddy就已经解决了这一问题。 本文将介绍多种Arduino处理平台选项,解释为什么FPU功能对许多应用都很重要,然后介绍ShieldBuddy,这款开发板与Arduino开发板采用类似的物理封装,但具有三个独立的200MHz 32位处理器内核,并且每个内核都有各自的FPU。此外,本文还将介绍该开发板的编程模型,展示其基于Eclipse的编程环境及其对Arduino集成开发环境 (IDE) 的支持如何帮助DIY爱好者和设计人员快速入门。

适合新手和专业人士的Arduino

刚踏入Arduino领域的新手往往从Arduino Uno Rev3(图1)入手,这款开发板基于16MHz 8位ATmega328P微控制器。该开发板只有32KB的闪存(程序),2KB的SRAM,14个数字输入/输出 (I/O) 引脚和6个模拟输入引脚。其中6个数字引脚可以提供脉冲宽度调制 (PWM) 输出,必要时模拟引脚也可用作数字I/O引脚。

Arduino Uno Rev3的排针封装是连接扩展板这一庞大子板生态系统的基础,包括14个数字I/O引脚、6个模拟输入引脚,以及多个电源、接地和基准源引脚。

继Uno Rev3之后,许多用户都转用Arduino Mega 2560 Rev3开发板(图2)。这款开发板基于16MHz 8位ATmega2560微控制器。该开发板具有256KB的闪存和8KB的SRAM。此外,该板的排针封装表明它与Uno支持相同的扩展板,不过,Mega配有更多排针,因此具有54个数字I/O引脚和16个模拟输入引脚。其中15个数字引脚可以提供PWM输出;同样,必要时模拟引脚也可用作数字I/O引脚。

除了受限于8位数据路径和16MHz的时钟频率之外,Arduino Uno和Arduino Mega微控制器均不具备FPU,因而任何涉及浮点数的计算都会显著减慢这些处理器的速度。

如果用户想要更强的处理能力,则可以升级使用Arduino Due(图3)。这款开发板与Arduino Mega采用类似的物理封装,但基于Atmel/Microchip Technology SAM3X8E的84MHz 32位Arm Cortex-M3处理器。该开发板具有512KB的闪存、96KB SRAM、54个数字I/O引脚、12个模拟输入引脚,以及2个由数模转换器DAC) 驱动的模拟输出引脚。其中,只有12个数字引脚可以提供PWM输出;同样,必要时模拟引脚也可用作数字I/O引脚。不过,遗憾的是,与Arduino Uno和Mega一样,Arduino Due的处理器也不具备FPU。

许多用户(包括业余爱好者和专业人士)都喜欢Arduino Mega和Arduino Due开发板具有较多的引脚。但是,即使是Arduino Due的84MHz 32位处理器可能也难以执行某些计算密集型任务。同样,对于需要处理大量数据的大型程序,Due配备的512KB的闪存和96KB的SRAM仍显不足。

尽管如今的微控制器能处理的数据量越来越大,但是从提高效率和降低延迟方面考虑,使用FPU可以更好地完成某些计算。

什么是FPU?为什么需要它?

要讨论FPU为何有用,首先要说说计算机处理数字的原理。在计算机中,最简单的数字表示法是整型(整数),而且使用整型数进行计算,运算成本较低。不过,整型数本质上范围有限,因而无法表示较大的动态范围。

对于工程师和科学家而言,这是个问题,因为他们常常需要在同一计算中使用极大和极小的数值。例如,物理学家可能需要同时使用光速 (300,000,000) 和牛顿引力常数(0.00000000006674) 来进行计算。同样,在数字信号处理 (DSP) 等任务以及人工智能AI) 和机器学习 (ML) 应用中,工程师则要使用较大动态范围的数值。

在这种情况下,解决方案就是使用浮点数表示法,即小数点的位置可根据数值的各个数字“浮动”,从而实现更高的数字“分辨率”。但问题在于,尽管32位浮点数所占内存与32位整型定点数相同,使用浮点数进行计算却需要更多的计算资源。

如果处理器必须使用标准定点硬件进行浮点运算,那么必定会极大地影响该处理器的性能。在这种情况下,解决方案就是为处理器配备特殊的FPU,即可在很短的时钟周期内完成复杂的浮点运算。

这正是ShieldBuddy的用武之地。

ShieldBuddy为Arduino生态系统引入FPU和高性能

目前,一款相对较新的兼容Arduino的开发板是Infineon Technologies的KITAURIXTC275ARDSBTOBO1,即ShieldBuddy(图4)。这款嵌入式评估板主要面向Infineon的TC275T64F200WDCKXUMA1 TC275 AURIX TC2xx TriCore 32位微控制器。

ShieldBuddy与Arduino Mega和Arduino Due采用类似的物理封装,可与许多应用扩展板兼容,但区别在于它配备的TC275具有三个独立的200MHz 32位内核,并且每个内核都有各自的FPU。此外,ShieldBuddy具有4MB的闪存(分别是Arduino Due的8倍、Arduino Mega的16倍),以及500KB的RAM(分别是Arduino Due的5倍、Arduino Mega的62倍)。

有一点可明显看出区别:Arduino Mega内核每微秒 (µs) 只能处理约16条8位指令;相比之下,TC275每个内核的周期时间为5ns,因而每个内核每微秒通常可执行约150至200条32位指令。由于ShieldBuddy的每个处理器内核都有各自的FPU,因此该板进行浮点运算时,几乎不会削弱性能。

使用ShieldBuddy进行开发

使用ShieldBuddy时,专业软件开发人员也许希望借助Eclipse IDE,而业余爱好者和创客可能更偏好使用为人熟知的Arduino IDE。该板可支持这两个选项。

Arduino的用户都很清楚,每个草图(程序)必须具有两个标准函数:setup()(单次运行)和loop()(多次运行)。除此之外,用户还可以创建自己的函数。

ShieldBuddy的三个内核分别称作Core 0、Core1和Core 2。在使用Arduino IDE的情况下,大多数现有草图都可以编译,以便直接用于ShieldBuddy而无需修改。setup()和loop() 函数及其调用的所有用户创建的函数经编译后,均默认在Core0上运行。

创建新程序时,用户可将这些函数命名为setup0() 和loop0() 以达到相同的效果。另外,用户也可以创建setup1() 和loop1() 函数。这些函数及其调用的所有用户创建的函数经编译后,均会自动在Core 1上运行。同理,setup2()和loop2() 函数及其调用的所有用户创建的函数经编译后,均会自动在Core2上运行。

默认情况下,各个内核独立运行,因此ShieldBuddy可以同时运行三个完全独立的程序。尽管如此,各内核间也可使用共享存储器等技术进行通信。此外,每个内核还都可以在其他内核中触发软中断。

结语

事实证明,Arduino的开源理念取得了巨大的成功,随之衍生的硬件和软件生态系统也得以发展,包含了数百种扩展板、数千个库和应用程序。

尽管早期的Arduino开发板(例如16MHz 8位ArduinoUno和Arduino Mega)具有一定的局限性,但较新的产品(例如84MHz 32位Arduino Due)功能明显就更强大。即便如此,许多用户仍需要更多的程序存储空间(闪存)、更多的数据存储空间(SRAM) 和更强的处理能力,而这些都绝非任何传统 Arduino 所能提供。

ShieldBuddy具有4MB的闪存、500KB的SRAM和三个独立的200MHz 32位处理器内核,而且每个内核都有各自的FPU,将Arduino理念提升到一个全新的层次,因而追求极致的DIY爱好者和专业工程师都对它兴趣浓厚。

编辑:金巧

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 转换器
    +关注

    关注

    27

    文章

    8701

    浏览量

    147150
  • Arduino
    +关注

    关注

    188

    文章

    6469

    浏览量

    187016

原文标题:Arduino玩家如何玩转FPU?用ShieldBuddy开发板,就能行!

文章出处:【微信号:得捷电子DigiKey,微信公众号:得捷电子DigiKey】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [迅为RK3568开发板]非科班也能玩转Android应用,体验QT跨平台能力

    [迅为RK3568开发板]非科班也能玩转Android应用,体验QT跨平台能力
    的头像 发表于 12-18 16:41 278次阅读
    [迅为RK3568<b class='flag-5'>开发板</b>]非科班也能<b class='flag-5'>玩转</b>Android应用,体验QT跨平台能力

    何用OpenCV进行手势识别--基于米尔全志T527开发板

    本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV手势识别方案测试。摘自优秀创作者-小火苗米尔基于全志T527开发板一、软件环境安装1.安装OpenCVsudoapt-getinstall
    的头像 发表于 12-13 08:04 658次阅读
    如<b class='flag-5'>何用</b>OpenCV进行手势识别--基于米尔全志T527<b class='flag-5'>开发板</b>

    Arduino Nano Matter开发板正式上市

    Silicon Labs(芯科科技)和Arduino在近日共同宣布Arduino Nano Matter开发板现已正式上市。这是延续今年3 月芯科科技和Arduino释出
    的头像 发表于 12-10 13:50 186次阅读

    玩转RK3588开发板基于connector-split 功能实现多屏联动

    玩转RK3588开发板基于connector-split 功能实现多屏联动
    的头像 发表于 12-02 16:05 287次阅读
    <b class='flag-5'>玩转</b>RK3588<b class='flag-5'>开发板</b>基于connector-split 功能实现多屏联动

    基于Arduino的串口通信项目

    基于Arduino的串口通信项目涉及多个方面,包括硬件连接、软件编程、串口参数配置等。 一、硬件准备 Arduino开发板 :确保你有一块Arduino
    的头像 发表于 11-22 09:24 497次阅读

    正点原子fpga开发板不同型号

    正点原子作为国内领先的FPGA开发板供应商,其产品线覆盖了从入门级到高端应用的各个领域。这些开发板不仅适用于学术研究,还广泛应用于工业控制、通信、图像处理等多个领域。 1. 入门级开发板 1.1
    的头像 发表于 11-13 09:30 677次阅读

    NXP FRDM-MCXC444开发板在RT-Thread环境下的上手过程

    NXP FRDM-MCXC444开发板是一款基于MCX C444 MCU的高性能开发板,它集成了丰富的硬件资源和接口,支持快速原型设计。本文将为读者提供一份详细的RT-Thread上手指南,帮助大家轻松玩转这款
    的头像 发表于 10-12 11:51 407次阅读
    NXP FRDM-MCXC444<b class='flag-5'>开发板</b>在RT-Thread环境下的上手过程

    51开发板芯片资料

    51开发板芯片资料
    发表于 09-18 09:29 1次下载

    RISC-V有没有类似Arduino那样的开发板

    使用ARduino开发,由于有第三方提供的库支持,在开发上非常方便。RISC-V有没有在Arduino IDE上可以使用的开发板
    发表于 06-23 12:32

    SiliconLabs携手Arduino演示基于MGM240模块的新型Nano Matter开发板

    Arduino Nano Matter开发板,从而将Matter协议引入Arduino生态系统,为广大的开发人员提供一个快速涉足Matter互联互通设计的绝佳途径。
    的头像 发表于 04-11 17:35 650次阅读
    SiliconLabs携手<b class='flag-5'>Arduino</b>演示基于MGM240模块的新型Nano Matter<b class='flag-5'>开发板</b>

    何用Arduino开发STM32G070?

    何用Arduino开发STM32G070,各位大神有相关教程吗。我如何在Arduino开发板管理器中添加STM32G070
    发表于 04-07 08:22

    fpga开发板是什么?fpga开发板有哪些?

    FPGA开发板是一种基于FPGA(现场可编程门阵列)技术的开发平台,它允许工程师通过编程来定义和配置FPGA芯片上的逻辑电路,以实现各种数字电路和逻辑功能。FPGA开发板通常包括FPGA芯片、时钟模块、电源模块、输入输出接口等组
    的头像 发表于 03-14 18:20 2018次阅读

    fpga开发板使用教程

    FPGA开发板的使用教程主要包括以下几个关键步骤。
    的头像 发表于 03-14 15:50 1128次阅读

    fpga开发板与linux开发板区别

    FPGA开发板与Linux开发板是两种不同的硬件开发平台,各自具有不同的特点和应用场景。在以下的文章中,我将详细介绍FPGA开发板和Linux开发板
    的头像 发表于 02-01 17:09 2247次阅读

    带你玩转AM62x开发板的显示接口——LVDS的显示和修改方式

    此前小编已为大家介绍过OK6254-C开发板的RGB显示和修改方式,没有读过的小伙伴可以>>点击这里阅读,今天将继续为大家介绍OK6254-C开发板的LVDS显示和修改方式。话不多
    的头像 发表于 01-05 08:02 1278次阅读
    带你<b class='flag-5'>玩转</b>AM62x<b class='flag-5'>开发板</b>的显示接口——LVDS的显示和修改方式