【问题标题】:Is programming using the Arduino IDE suitable for commercial products?使用 Arduino IDE 进行编程是否适合商业产品?
【发布时间】:2015-04-02 17:33:46
【问题描述】:

我需要以我完全知道它将做什么的方式对微控制器进行编程,因为它适用于需要高可靠性的项目(类似于汽车产品)。

我熟悉 C 语言(从 9 年前开始),所以理想情况下,我会使用 ATMEL 官方框架自己编写所有代码,使用 AVR-GCC 编译它并使用 AVRDude 刻录 EEPROM。还有一种将 .hex 上传到已经烧录的引导加载程序的方法,以避免使用电路编程器(由 Arduino 完成)。没有惊喜。

但是,框架显然是非常低级的。每次使用 ADC 或在 USART 上发送数据时,我都没有时间直接操作寄存器(实际上更容易出错)。所以我认为 Arduino 库一直存在(它有 C++ 语法,但为什么没有),它不可能不可靠。

但实际上,如果我要使用 Arduino 库,那么将整个 Arduino IDE 用于商业产品有什么问题?通过 Arduino IDE 进行编程隐藏(以使用户更简单)使其对商业应用程序“不可信”的什么?或者这是一个神话?

【问题讨论】:

  • 开源没有什么是“隐藏的”考虑mbed以获得更强大的平台在软件和硬件方面。
  • 您是在问将 Arduino IDE 作为商业产品的一部分发布是否有意义,或者仅在开发期间使用它是否有意义?
  • Clifford:这是一个比喻。谢谢,我去看看mbed。 @MatthewMurdoch:在开发过程中使用它。
  • @Clifford:MBED 对于我所考虑的项目的使用来说确实太复杂了。我几乎不需要 USART 和 ADC,一个 8 位微控制器就足够了。我尽量保持简单。
  • @Mister Mystère:不要将复杂性与范围混淆。虽然 mbed 涵盖了很多基础,但您无需使用所有基础,而且解决设备访问问题的子集并不比 Arduino 复杂。它只是一个更大的工具包;您不需要使用所有工具。在数量上,低端 Cortex-M 部件的成本与 8 位设备相当。

标签: c++ c arduino embedded


【解决方案1】:

Arduino 的库有效但效率不高。它们是为对硬件或软件知之甚少的用户开发的。

例如,看一下 hardwareSerial.cpp 模块,发现它使用内部循环来发送数据,而不是使用串行中断。这会阻止您的草图,直到它完成发送数据。

像这个例子还有更多,这也是我大部分时间编写自己的库的原因。

【讨论】:

  • 我猜在这个例子中这意味着程序可能永远挂起,所以听起来库本身并不符合行业标准。这是否意味着每家公司都在开发自己的库,却从未考虑过将其公之于众?我正在寻找一个好的可靠的 API。
  • 实际上我在 Arduino 中所做的是使用它的核心(带有所有define,引脚名称),而不是它的库。我不太确定公司是做什么的,但我猜他们开发了自己的库,因为它们之间的微控制器非常不同。他们可能会设计不同级别的接口,并将它们移植到不同的微机上。大多数时候都是一次性工作。
  • 您可以做的是查看 Arduino 的库并进行一些修改以优化它们。它们并没有那么糟糕,只是一些特定的关键功能,就像我提到的那样。您应该从使用等待循环改为使用中断,以便从 USART 和 ADC 获得数据的“并行请求”。
【解决方案2】:

完全放弃在商业产品中使用 Arduino lib 的想法。不仅因为它效率低下,而且还因为不能保证线程安全。例如,一些变量和数据结构(队列)没有从 ISR 上下文到主上下文的保护,这可能会导致数据完整性问题甚至随机硬故障。虽然概率很低,但除非你的产品质量不重要,否则你还是应该放弃这个想法。

另一方面,低效率意味着您必须在处理器上支付更多的硬件预算,这也使其不适用于商业产品。

人们喜欢 Arduino 是因为他们想要快速发展。如果您自己编写一个可靠的框架,您将能够快速、可靠地开发产品。

【讨论】:

  • 谢谢,它开始看起来像 Arduino 和我一样,“没有正确编码,因为打算用于业余爱好者”。我很惊讶没有人为 AVR 创建可靠的库——每个人似乎都在做自己的。 MikroC 似乎有不错的选择,但我们必须为此付出代价。
  • Linux 是可靠开发的一个例子,而且它是免费的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多