Arduino引导程序


9

我对嵌入式世界非常陌生。到目前为止,我只从事软件方面的工作

谁能解释一下Arduino Bootloader的用法?我希望Arduino使用一些必须放入芯片的其他组件来执行一些简单的数学运算。

我是否需要引导加载程序?

Answers:


10

Arduino基本上只是一个Atmel AVR微控制器,具有足够的支持电子设备以使其能够运行。AVR具有内置闪光灯,可以使其在断电状态下保持程序运行,但是要直接对AVR芯片进行编程,则需要像STK-500这样的工具才能完成。Arduino通过在板上配备一个小型USB接口以及芯片上已经存在Arduino Boot-loader代码来克服了这一问题。这允许PC端应用程序将您的程序传输到设备,并且实质上使它自己闪烁。

因此,最重要的是,如果您使用的是Arduino,则引导加载程序已经存在,并且会自动执行其工作。您可以在PC上对程序进行编码,然后在IDE上按“上载”按钮,然后在Arduino上运行您的程序。引导加载程序完全透明地完成其工作。

首先,我个人有一个Arduino 2009 一个STK-500,可以在AVR上进行金属编程,但是发现不需要绕过Arduino的引导程序。


我希望看到有关使用Arduino编程AVR的更多信息。
格雷格


@Greg实际上有一个arduino支持的草图,用于Duemilanove将引导加载程序闪存到裸露的atmega328上。显然,可以扩展此功能以将任何程序刷新到裸机atmega328上。您不需要ISP连接器。本质上,您将arduino micro变成了ISP。
NickHalden

5

Arduino需要一个引导程序,以便通过串行/ USB对草图进行编程。如果没有它,则需要AVR系统内编程器(ISP)来直接对AVR芯片中的闪存进行编程。

如果您购买的是Arduino,则它会随附已经烧入AVR芯片的引导程序。如果您要构建自己的电路板,则只需担心它。

这应该有所帮助: 我不了解Arduino概念


4

我会给出一个稍微理论上的答案;从实践的角度来看,其他答案是相当不错的。引导加载程序是驻留在闪存特殊段中的代码。允许驻留在该段中的代码执行自编程指令,从而无需像STK500那样的常规编程器(即系统内编程ISP或高压编程HVP)就可以修改闪存(即用户代码所在的位置)。或AVRISP mkII。

原则上,UART接收数据中断服务例程(ISR)对自举程序代码进行函数调用,该代码将串行发送的程序映像复制到闪存的用户程序空间中。在启动时,芯片上的任何程序都会开始运行,但是如果提早接收到适当格式的串行数据,则AVR会进入一种自编程模式。UART ISR中存在一些逻辑,这些逻辑仅在启动期间短时间内遵循引导加载程序代码。细节要比这复杂一些,但这是基本思想。

这样做的好处是,您可以购买Arduino,什么也没有,可以下载免费的集成开发环境(IDE),然后开始编写Arduino草图(程序),然后像这样通过USB将其下载到AVR上,同样感谢集成到Arduino板上的精美FTDI IC芯片。

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.