是否可以在Arduino上升级固件,以便它可以做更多事情,例如改变欠压/过压,以提供更多的处理能力。为此,您很有可能必须重新刷新芯片本身,那么将如何实现呢?
是否可以在Arduino上升级固件,以便它可以做更多事情,例如改变欠压/过压,以提供更多的处理能力。为此,您很有可能必须重新刷新芯片本身,那么将如何实现呢?
Answers:
要回答有关大多数Arduino板上使用的ATmega328p MCU上“固件”的问题,请执行以下操作:
除引导加载程序外,ATmega上完全没有固件。您编写的程序直接在硬件上运行。
有某些“保险丝”设置是由ISP程序员设置的。但是,它们只有24个(3个字节),它们在很大程度上与低级配置有关,并不是我想的那样:
还有一个Bootloader,它是一个小程序,位于MCU程序存储器的单独段中,并允许它在启动时进行自身更新(这是对所有arduino进行编程的方式)。但是,它仅在启动时运行很短的时间,并且在MCU跳转到主程序后已从内存中完全删除。
最后,大多数arduino板上都有用作USB串行接口的辅助MCU(ATmega16U2 / 8U2),可以对其进行更新以使其行为有所不同(例如,模拟键盘/鼠标),但实际上,这实际上并没有改变核心处理器,因此它是否算作“安装其他固件”取决于您如何定义arduino。
真的,我强烈建议您阅读ATmega328P数据表。这是基本上构成“ Arduino”的MCU的文档。它应该解决似乎是误解的问题。
请注意下图,关于您针对不同的F_CPU进行欠压/过压保护设备的关系。结果,您会发现大多数Arduino在5V和16MHz的时钟频率下运行。虽然有些3.3V变体以8MHz运行。
但是,IDE随附的核心库通常针对8和16 MHz F_CPU速度具有特定的#if,在大多数情况下不使用公式。
因此,可以按照您的要求做。但是,您会发现影响核心库的限制。将成本与收益之比提高到非常有意图的水平。然后很可能会将Stock IDE和核心库留给其他makefile方法。