使用Arduino IDE编程是否适合商业产品

Is programming using the Arduino IDE suitable for commercial products?

本文关键字:Arduino IDE 编程 是否 使用      更新时间:2023-10-16

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

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

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

但实际上,如果我要使用Arduino库,那么将整个Arduino IDE用于商业产品有什么错?通过Arduino IDE编程隐藏了什么(为了让用户更简单),这使得它在商业应用程序中"不受信任"?还是一个神话?

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

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

就像这个例子一样,还有更多的,这就是为什么我大部分时间都在编写自己的库的原因。

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

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

人们喜欢Arduino是因为他们想要快速发展。如果你自己写一个坚实的框架,你将能够快速开发产品。