Answers:
引导加载程序是AVR闪存中的一个小程序,它永远不会被覆盖,并在加电时运行。引导加载程序的工作是从UART读取程序数据并将其写入内部闪存。没有引导加载程序,加载代码的唯一方法是使用ISP。
AVR ATMega8的闪存中没有代码。可以使用AVR ISP编程器(甚至是另一个Arduino)通过ISP(系统内编程)引脚上载代码。
对于Arduino,ISP(制造时)仅使用一次-上传一个小型引导程序。上电时,引导加载程序将运行并与串行UART(TX + RX引脚)通信。现在,可以使用STK500协议通过串行引脚对Arduino进行编程。
由于串行引脚(通常)已连接至FTDI USB至串行芯片,因此Arduino也可以通过USB进行编程。
Arduino引导加载程序背后的想法是,与最初的编程或较旧的微控制器(通常需要专用的编程器(例如用于PIC MCU的PicKit2))相比,您不需要任何专用硬件或电路即可对其进行重新编程。引导加载程序允许通过基本串行连接进行编程。
当然,当时您需要串行链接,通常是从TTL到RS232的rs232转换器。然后逐步淘汰了串行端口,usb到串行变得无处不在,从而可以用它代替max232或类似产品。现在,使用支持USB的Atmel微控制器甚至不需要这样做,因此具有最少无源部件的单个ic可以提供Arduino功能和USB到串行。现在,您只需要一根usb电缆和一些无源即可上传草图。自举程序的初始编程仍然需要传统的ICSP编程。