Arduino编程模式、引导加载程序、Arduino作为ISP

Arduino编程模式、引导加载程序、Arduino作为ISP,arduino,avr,bootloader,arduino-uno,Arduino,Avr,Bootloader,Arduino Uno,我目前正在使用Arduino Uno(rev3)板进行一个项目。最终,我可能会让它从Arduino独立运行,这让我思考整个编程和引导加载程序是如何工作的 以下是我目前所知道/假设的情况: 该板有两个芯片:ATmega328(主芯片)和ATmega16u2(用作USB到串行总线) ATmega16u2的固件可通过激活DFU模式并使用DFU编程器等进行更改。然后,Arduino可以被识别为HDI/Midi设备,但不再可编程 编程ATmega328时,芯片正在复位,重启时引导加载程序将通过其串行连接和

我目前正在使用Arduino Uno(rev3)板进行一个项目。最终,我可能会让它从Arduino独立运行,这让我思考整个编程和引导加载程序是如何工作的

以下是我目前所知道/假设的情况:

  • 该板有两个芯片:ATmega328(主芯片)和ATmega16u2(用作USB到串行总线)

  • ATmega16u2的固件可通过激活DFU模式并使用DFU编程器等进行更改。然后,Arduino可以被识别为HDI/Midi设备,但不再可编程

  • 编程ATmega328时,芯片正在复位,重启时引导加载程序将通过其串行连接和ATmega16u2桥加载和写入新程序。芯片的ISP接口不用于上传新程序。谁首先启动重置

  • Arduino可用作ISP程序员,对其他外部芯片进行编程。为了将某些固件加载到AATmega328 an上,将要编程的芯片的ISP引脚连接到Arduino板上的ISP引脚。然后将Arduino IDE配置为使用Atmega328作为程序员,而不是重新编程

  • 我希望,至少我写的大部分是正确的。我的问题是:

    如果我把一个新的/空白的AVR放在我的主板上,引导加载程序是如何放到芯片上的?“Burn Bootloader”命令是如何工作的

    是否可以在不首先上载引导加载程序的情况下将十六进制文件上载到ATmega328?这可以通过在ATmega16u2上使用专用固件来实现吗

    谢谢

    Johannes

    ISP程序员(ArduinoISP或USBasp等离散式程序员)可用于编程AVR的闪存、EEPROM、保险丝位和锁位,而无需预先存在的引导加载程序。它使用设备上的SPI引脚向设备发送命令,以操作非易失性存储内容

    ATmega16U2仅与'328'有UART连接;如果没有328上的引导加载程序,就无法使用UART编程