Answers:
Arduino基本上只是一个Atmel AVR微控制器,具有足够的支持电子设备以使其能够运行。AVR具有内置闪光灯,可以使其在断电状态下保持程序运行,但是要直接对AVR芯片进行编程,则需要像STK-500这样的工具才能完成。Arduino通过在板上配备一个小型USB接口以及芯片上已经存在Arduino Boot-loader代码来克服了这一问题。这允许PC端应用程序将您的程序传输到设备,并且实质上使它自己闪烁。
因此,最重要的是,如果您使用的是Arduino,则引导加载程序已经存在,并且会自动执行其工作。您可以在PC上对程序进行编码,然后在IDE上按“上载”按钮,然后在Arduino上运行您的程序。引导加载程序完全透明地完成其工作。
首先,我个人有一个Arduino 2009 和一个STK-500,可以在AVR上进行金属编程,但是发现不需要绕过Arduino的引导程序。
Arduino需要一个引导程序,以便通过串行/ USB对草图进行编程。如果没有它,则需要AVR系统内编程器(ISP)来直接对AVR芯片中的闪存进行编程。
如果您购买的是Arduino,则它会随附已经烧入AVR芯片的引导程序。如果您要构建自己的电路板,则只需担心它。
这应该有所帮助: 我不了解Arduino概念
我会给出一个稍微理论上的答案;从实践的角度来看,其他答案是相当不错的。引导加载程序是驻留在闪存特殊段中的代码。允许驻留在该段中的代码执行自编程指令,从而无需像STK500那样的常规编程器(即系统内编程ISP或高压编程HVP)就可以修改闪存(即用户代码所在的位置)。或AVRISP mkII。
原则上,UART接收数据中断服务例程(ISR)对自举程序代码进行函数调用,该代码将串行发送的程序映像复制到闪存的用户程序空间中。在启动时,芯片上的任何程序都会开始运行,但是如果提早接收到适当格式的串行数据,则AVR会进入一种自编程模式。UART ISR中存在一些逻辑,这些逻辑仅在启动期间短时间内遵循引导加载程序代码。细节要比这复杂一些,但这是基本思想。
这样做的好处是,您可以购买Arduino,什么也没有,可以下载免费的集成开发环境(IDE),然后开始编写Arduino草图(程序),然后像这样通过USB将其下载到AVR上,同样感谢集成到Arduino板上的精美FTDI IC芯片。