为什么在Arduino中使用AVR?


41

为什么Arduino使用AVR?我知道它们是官方处理器,但是除了成本之外,没有理由将代码无法移植到ARM或飞思卡尔架构上,对吗?只要有板载内存,我就可以很容易地迁移到这些部分中。

我在行业中看到很多ARM(似乎每个供应商都在将ARM投入他们的设计中),并且想知道为什么Arduino开发人员世界中没有更多的ARM。


4
谁是您的市场?如果您想销售行业中的大型产品,那么您将需要ARM,因为如果Atmel破产,那么使用AVR则一无所有。有了ARM,还有许多其他供应商提供了即用型替代产品。对于优秀的工程师而言,ARM复杂性的增加不再是一个问题,而对于那些不了解基础知识的业余爱好者来说,ARM的问题就更少了。如果您是向业余爱好者销售产品,那么学习曲线将变得非常陡峭,处理器功能将无法使用,而SMT将会是想象中的砖墙。您担心谁是业余客户或潜在雇主?请 澄清。
凯文·维米尔

9
我不是要冒犯他人,而是要提出这个问题。Atmel已有25年的历史,除了ARM以外,它还拥有非常成功的市场,AVR本身就是一个非常非常成功的平台。这样一家公司倒闭的机会是什么?这听起来像是说:“不要使用Windows,如果MicroSoft掉线了怎么办?”
Rick_2047 2010年

我确实同意您的另外两点意见,即如果您有一个业余市场,那么很少有机会利用ARM的全部功能,而SMT就是一堵砖墙。
Rick_2047

2
是否没有上面带有SAM3XE(ARM 32位)uC的Arduino Due?因为,我现在手上只有一个...
Doombot 2014年

1
我想指出的是,“如今”实际上存在可以使用Arduino(库和IDE)进行编程的基于ARM的板。Teensy 3.2是一个很好的例子。sparkfun.com/products/13736
Paul

Answers:


32

有人甚至在乎您在开发什么吗?

是的,没有。我一直在为特定项目开发AVR32,与例如PIC32相比,开发环境(尤其是编译/编程/调试周期)令人恐惧。

除成本和维护外,客户不在乎,对于类似arduino的系统,程序员也不会在乎,因为arduino的环境和开发周期比当前的AVR32设置好得多。

我只是想知道,因为Arduino系列中AVR的功能如此强大。我知道它们是官方处理器,但是除了成本之外,没有理由将代码无法移植到ARM或飞思卡尔架构上,对吗?只要有板载内存,我就可以很容易地迁移到这些部分中。

没有理由不能使用其他处理器,但是有一个很好的理由,他们选择了低端的8位设备,而不是ARM,MIPS,PowerPC等设备:易于使用。

如果您查看了低端臂的设置,则它比8位处理器要复杂一个数量级(内存映射,缓存等)。但更重要的是-当时还没有DIP手臂处理器,这些处理器是要由艺术家和黑客使用和构建的,不一定是即使对48引脚TQFP也感到满意的电子技术人员和工程师。

之所以选择AVR而不是PIC,是因为PIC实际上并没有广泛使用的开源免费C编译器(SDCC端口还不成熟)。

我在行业中看到很多ARM(似乎每个供应商都在将ARM投入他们的设计中),并且想知道为什么Arduino开发人员世界中没有更多的ARM。有什么想法吗?

主要是由于易用性-复杂性,易焊接性,成本以及不需要太多的事实。开发人员喜欢具有强大功能的想法,但是最终,当您需要做的只是移动一些伺服器并使用低端FFT闪烁一些灯光时,一个8位处理器就可以了。

即使采用28引脚封装的低端皮质ARMS仍然是SOIC,而不是DIP。

因此,AVR具有所有正确的功能:

  • 容易焊接
  • 易于通过世界各地的邮购获得
  • 免费的GCC C编译器
  • 易于理解的处理器和外围设备的设置和使用
  • 无处不在-AVR家庭周围有很多人和经验

在很大程度上,这仍然是正确的-我不知道DIP格式的ARM,而且适配器使其比AVR贵得多。在大多数情况下,制造商认为DIP封装的32位处理器不会带来很大的利润。


有一个,就是视差螺旋桨。它在芯片上具有八个32位CPU,并采用DIL,QFP和QFN封装。
莱昂·海勒

5
这是现场的。由于许可,通过PIC实现了AVR,而由于软件和工具链以及焊接能力的简化,通过ARM实现了AVR。对于您自己的项目,这可能不适用。但是,如果要开发ARM-duino,请看一下其他类似的项目。他们不像AVR那样流行。这也可能是由于Arduino开发环境。
凯文·维米尔

您正在使用哪些AVR32工具-我在AVR32和MSP上都使用了IAR,并且发现此环境功能强大。在专业环境中,成本不是问题-等于比雇用工程师一周的成本还低。
uɐɪ

关于工具的这种说法可以克服-Arduino使用gcc,它也有一个AVR32端口。
克里斯·斯特拉顿

1
恩智浦现在在DIP封装中具有一些Cortex-M0 ARM。我认为来自LPC11xx系列。我认为他们的目标市场是家用电器中的极其便宜,低质量的单面PCB。
Marko


16

由于您似乎正在征求意见,因此这是我的$ .02。我是在研究ARM还是AVR都很重要(因此,我确实很在意),这主要取决于我要执行的操作。在某些情况下,AVR是有意义的,而在某些情况下,ARM是有意义的。通常,在AVR和PIC之间也需要权衡取舍。

首先,虽然我可能会这么说有点麻烦,但“ Arduino家族中的强大队伍”实在是很少。我遇到的大多数arduino族(用户)都是那种宁愿以鞭打python脚本来做一些有趣事情的方式来对待他们的硬件,通常他们对所涉及的复杂性的了解程度不如他们当他们会执行“ from numpy import foo”时将有。尽管Arduino的处事方式有其优点,但也有很多批评的余地。

我认为除了Arduino生态系统之外,还值得研究AVR。Arduino团队还从使AVR成为事实上的业余爱好者标准的原因中受益匪浅-甚至在arduino出现之前,它就已经越来越多地从PIC手中接过。AVR的直接竞争对手将是PIC,在某种程度上可以说是MSP430,这在很大程度上受到了TI的大力推动以及TI的补贴工具的吸引。

生态系统

正如在其他答案中提到的那样,AVR是一个家庭,它拥有一种干净,标准化的方法,可以使用免费工具从零开始走向世界。avr-gcc端口,构成winavr工具链的零件,复杂程度和功能各不相同的大量程序员原理图,但仍受avrdude支持的权威的束缚,这比处理工具链变得容易得多。

PIC的生态系统是一场噩梦,任何数量的编译器,编程工具,汇编器,一应俱全。它们中的许多彼此不兼容。他们大多数是有偿的。并非所有人都很好。更重要的是,没有事实上的标准。自由/开源替代方案(例如SDCC)还有很多不足之处,但更多的是,它们没有像avr-gcc和company一样获得事实上的标准。即使软件工具链已经解决,您至少也必须投资某种程序员。PICkit的价格可能仅为20美元左右,但是当您必须弄清楚如何在线购买(信用卡,国际运输,外汇麻烦)时,对于爱好者来说,这可能是一个大问题。不好

MSP430略胜一筹,主要是因为它较新(在流行度方面至少)-可以减少的噪音要小得多。TI以无与伦比的效率向您提供IC样品。mspgcc处于正常状态,甚至还有不难找到或设置的开源调试软件。但是,问题在于它不像AVR那样对爱好者友好。您仍然遇到编程器的问题,该问题比购买PIC所需要的要贵。3.3v供电操作为习惯5v Logic的人们设置了明显的障碍。而且它不会在DIP中扩展-有低端的芯片可用,但是一旦您获得了更为充实的芯片,就不会如此。

使用方便

我认为,DIP与SMD的区别比通常认为的更为重要。DIP IC可以用于面包板,通用板,无论它们在您住的地方等等。SMD IC必然需要进行制造或购买转接板,而转接板往往并不容易以所需的尺寸或形状提供。

数据表的质量,应用说明以及它们的可读性也有所不同。Atmel似乎在这方面做得更好。当然,这是一个高度主观的评估。

AVR可以使用内部RC,而PIC通常不使用。他们需要水晶,加上很少的信心,这会使它变得有些讨人喜欢。

与几年前的PIC相比,AVR在系统内编程方面似乎也更加友好,尽管我很容易就错了。

AVR与ARM

但是,您的问题与AVR与ARM有关。就像我一开始所说的那样,AVR和ARM在频谱上占据着不同的空间。如果您可以使用AVR进行某些操作,那么为什么要使用ARM进行处理呢?ARM更加昂贵,需要更多的零件数量,消耗更多的能量,制作更复杂的代码,需要更昂贵的制造工艺。焊接100引脚TQFP的成本比焊接40引脚DIP / SOIC的成本高,这取决于您如何衡量成本。如果您要进行大批量生产并使用与此相适应的生产技术,这可能不成立,但是如果您这样做,那么采用便宜的解决方案将使价格差异变得更加诱人。

作为一般黑客入侵房屋或您家的首选控制器,我想说AVR更容易使用,因为:-从业余爱好者的角度来看更加标准化,可以从互联网上重用更多的代码,因为没有那么多编译器的变体,以及家族成员之间寄存器名称和API之间的变体。(尝试将LPC ARM代码移植到ATMEL ARM硬件上,您会明白我的意思)-代码本质上变得更加复杂(确实如此)。-工具链需要额外的工作来设置。-使连接稍微容易一些。ARM通常会将您降至3v3或1v8逻辑,从而使与其他玩具的接口出现一些问题。-便宜-在我居住的地方,在当地的硬件商店购买ARM芯片不是我的选择,而是使用AVR。


1
我不记得任何PIC,除了一些OTP部件,其中的熔丝位已作为工厂测试的一部分进行了预编程(确认LP,XT或HS模式有效的唯一方法是将芯片配置为该模式)那需要水晶。有些确实需要使用外部电阻器和电容来使用RC模式,并且对其产生的频率有相当粗糙的规格,但是我不记得任何没有内部或外部RC设计选项的PIC。我忘记了吗?
超级猫

实际上,ARM / AVR的成本几乎相当于可比资源的成本。而且,在生产环境中使用的软件包不一定会有什么不同,因为它们可能是QFP或QFN的任何一种。所需的支持电路也相当可比。
克里斯·斯特拉顿

@Chris:考虑到每个芯片提供的资源,我想说ARM几乎每次都会便宜。这就是说,问题是,在AVR有道理在生产环境中的情况是,你并不需要的马力和/或花俏的ARM带来的表。当对已利用资源而不是可用资源进行加权时,AVR的价格会便宜一些。我认为支持电路不具有可比性(1个钽电容器与4个钽电容器,以及其他类似的螺旋形电容器)。ARM并不是一个昂贵的野兽,因为它可能会被过度杀伤。
Chintalagiri Shashank

@supercat:也许吧。我得检查一下。几次看对我来说,这似乎从来都不是显而易见的。我确实知道,如果将dsPIC设置正确,则至少有一些dsPIC可以退回到内部,但是即使这样,也需要一些猜测和鬼混才能发现。IMO,Microchip数据表还有很多需要改进的地方,不过,这又取决于您正在寻找的市场。
Chintalagiri Shashank

@ChintalagiriShashank-忽略其他外设,只看闪存和ram大小,就有ARM产品,例如ATMEGA328p,它们具有相当的竞争力。而且不要被旁路盖分散注意力。一方面,钽可以用作电源滤波器,但实际的旁路电容是针对高频开关要求的较低价值的本地储存器,因此可以是廉价的SMT陶瓷。同样,驱动需求的是时钟和I / O开关频率-在相当的时钟速率下,ARM实际上并不需要所有建议的旁路电容。
克里斯·斯特拉顿

12

人们对Arduino的广泛兴趣的部分原因是物理标准化。Arduino的开发人员通过灵活的布局扩展了标准化的扩展选项,从而使人们能够提出自己的解决方案。如果您想用另一块使用不同微控制器的板子代替基本的Arduino板子,可以。IIRC,有人已经构建了一个使用Arduino外形尺寸的基于PIC的板。(PIC Ardunio板的外形尺寸不相同,但其他方面相似。)

Arduino成功的另一个原因是它的开放性-大多数基于PIC的微控制器都是封闭的。他们使用专有的硬件实现,因此,如果您想重新设计电路板以使其更适合特定的空间,那么您就不走运了。他们使用了自定义固件和专有的开发工具,因此,如果您遇到错误或想要扩展功能,那么您将不走运。借助Arduino,难题的每一个环节都是打开的:您可以在任何地方购买零件,根据需要进行重新排列,改进或修改固件以及开发工具。您可以从Arduino IDE入手,但仍可以在需要时随时使用C或Assembly。

就个人而言,我喜欢Arduino,因为它能使很多事情“恰到好处”:它并不昂贵,它没有被专有工具锁定,很容易上手,它具有很多功能,并且拥有庞大的用户社区。 ,它会继续扩展并做一些整洁的事情。


1
您列举了像Arduino这样的微控制器爱好者的很好理由,但问题是关于ARM与AVR。之所以提到Arduino,是因为它决定选择AVR系列MCU来实现。我认为您的帖子下方还有一些更相关的答案;例如,Atmel通过C编译器支持其AVR系列。但是,对于不熟悉Arduino的人来说,这是一个很好的信息。
盎司

7

ATmel uC的主要优点是可以为Linux,PC和Mac提供免费的编译器。再加上一个简单的跨平台GUI,您将拥有一个可在所有平台上运行的免费开发系统。

成本是爱好者委员会的主要因素。由于您希望入门价格在30美元左右,因此uC成本不超过几美元。

ARM将是高端主板的理想选择。许多公司许可ARM内核并添加外围设备。我相信有针对Linux,PC和MAC的免费编译器。

我真的很喜欢飞思卡尔Coldfire用于高端主板。我为使用5206e的测试设备开发板。我们添加了一些DRAM和高精度A / D和D / A转换器。这是一个经济高效的解决方案。我最近还没有将Coldfire与各种各样的ARM进行比较。

一些8位飞思卡尔uC很不错,但是我不确定它们是否有免费工具。


4
感谢您的有用评论,但是“签名”的8行有点极端,这些基于stackoverflow的网站往往看不起在您的答案中宣传自己的网站。
davr

5
@jluciani,如果要广告其他网站,请将链接放在个人资料中,而不要在答案中。毕竟,您的博客不是问题的答案...
Craig Trader

5

我同意DIP程序包的观点,不同意的是,臂架更难配置,而lpc则不同,但它们并不是臂架上的唯一孩子(就此而言,是atmel本身)。从我记得和经历过的经验来看,Atmel曾经而且也许现在仍然对开发人员更加友好。AVR蝴蝶极大地帮助了他们,使他们已经有足够的规模和满意的用户群,从而吸引了更多用户。PIC在很多方面都让人感到痛苦,那里有avr工具,轻而易举地编程,并且花费的钱比无线电棚里的一些电线和连接器还多。这些工具是免费的,但不如在主线gcc上找到手臂和拇指解决方案的工具容易。在arduino问世之前很久,AVR是爱好项目的首选芯片。

目前没有任何产品可以与ARM竞争。对于您每天接触的其他处理器,您至少要接触几个ARM。对于几乎所有您接触的事物,都使用ARM。它是8位杀手的自然之选,在相同的大小,价格等条件下,其性能要比8位更好。工具要好得多,指令集比大多数竞争产品都干净得多,因此相同的代码可以运行更快,等等。因为任何人和他们的兄弟都可以嵌入ARM,并且它并没有像pic,avr,msp430这样的公司锁定,所以存在各种各样的解决方案,以及处理微控制器rom / ram混合的许多不同方式和中断向量表。不幸的是,最流行的解决方案是最痛苦的。尝试sam7或类似产品或恒星。

问题并不总是处理器,某些芯片已知会出现问题,有些芯片则存在其他已知问题。有些可能无法提供具有弱上拉功能的开放式集电极io引脚,您必须将硬件置于芯片外部才能与某些接口连接,而另一种可能在某个或所有引脚上都有可用的接口。我建议您对该领域进行采样,尝试使用不同的公司和解决方案,以便当您需要低功耗时,可以轻松使用msp430;您可以使用小巧的芯片来处理功率,或者可以创建一个希望的开放项目如果可以的话,其他人会在您的arduino上建立他们的车库。

但对于您的问题,最重要的是,它实际上取决于您的应用程序,编写方式以及您感兴趣的性能和资源。与gcc或firefox将在许多不同的平台和处理器上运行的方式相同,您当然可以编写可在各种微控制器上运行的C应用程序... IF...您有一个特定于微控制器的抽象层,这是有成本的。如果微控制器具有足够相似的功能,并且具有所需的功能,则您需要预先计划并合并这些功能。下一个平台是否有足够的内存/资源。您对可移植性比对性能更感兴趣。可以说,您需要提前计划。或至少在第一次从A切换到B时,您需要重新设计软件,如果/当第三次从B切换到C时,痛苦减轻了。


目前没有任何产品可以与ARM竞争。<-在行业中。在业余爱好者世界中,AVR仍然非常强大,而且将持续很长时间。
凯文·维米尔

绝对同意,一个世界avr疯狂流行,另一个世界恰好是我们购买并使用的产品,金钱所在的世界。因此,在家学习一种乐趣,在日常工作中学习另一种,并整日整夜玩游戏。
old_timer 2010年

4

我知道您说的是“成本以外”,但这确实是业余爱好者最重要的事情。在一个廉价的通用平台上,您不需要一个以上的UART或一个以上的SPI。一旦开始需要> 20MHz的速度,您就应该真正考虑自定义设置(当然是ymmv)


3

其他评论未提及的一些小问题:

  • Arduino专用于小型I / O项目,可为电路增加少量智能。它们通常是单线程的实时设备,在这些设备上,ARM会非常浪费。当然,ARM板有很多选择,但是用例通常是不同的-通常它们会启动到完整的操作系统中。

  • 通过针对这种小规模的用例,其他所有事情都变得更加容易-引脚数,支持组件,功耗等。

就是说,对于Arduino的目标用例,这并不像您在沉迷它。16MHz处理器对于集成了LED追踪器(或其他任何功能)的闹钟非常烦恼


2

Arduino的可在其他处理器。例如,从Microchip检出ChipKit。使用PIC 32。


抱歉,奥林(Olin),这个标题是我编辑该问题的错误尝试,它是从问题的正文中得出的。现在应该更正确了。
clabacchio

1

第二次尝试(自原始答案以来,+ 3年前的原始帖子标题和问题已更改):

鸡肉和鸡蛋,尤其是在最近几年(2007年ARM推出了Cortex-M架构)中,32位MCU的普及度越来越高,而供应商在以> 8-微型位(更好的sw工具,免费工具,更多示例...)。

Atmel与100多家其他公司一起提供了Cortex-M设备,并且已经升级了其工具链以支持AVR到ARM,以及长期的合作关系,因此给出了Arduino升级路径。但是,替代方案突然出现,并且似乎涉及其他尝试来获得“爱好者”蛋糕的份额:例如,由NXP / ARM以及最近的“ CoAction Hero”组成的mbed:KickStarter上的32位开源ARM Cortex-M3开发板。

在最初提出问题3年后的最后思考:当所有供应商都提供32位Cortex-M内核时-Arduino现在真的可以变成非Atmel吗?

原始答案:Atmel AVR联合创始人之一Alf-Egil Bogen在其视频博客(http://blog.energymicro)上探讨了该行业从8位ARM内核过渡到32位ARM内核的一些背景。 com / 2013/04/24 / avr2arm /

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.