我目前正在使用Arduino Uno(Rev3)板的项目。最终我可能会让它与Arduino独立运行,并让我思考整个编程和引导程序的东西是如何工作的。

这是我所知道的/到目前为止所知道的:

  1. 电路板有两个芯片:Atmega328(主芯片)和Atmega16u2(用作USB到串行桥)。

  2. 通过激活DFU模式并使用例如,可以更改Atmega16U2的固件。 DFU程序员。然后可以将Arduino识别为HDI / MIDI设备,但不再是可编程的。

  3. 在编程ATMEGA328时,芯片正在重置并在重新启动引导加载程序时,通过其串行连接和ATMEga16U2-Bridge将加载和写入新程序。芯片的ISP接口不用于上传新程序。谁首先启动重置?

  4. Arduino可以用作ISP程序员来编程其他外部芯片。对于将某些固件加载到AATMEGA328上,待编程的芯片的ISP-PIN连接到Arduino板上的芯片。然后,Arduino-IDE配置为使用Atmega328作为程序员,而不是重新编程它。

  5. 我希望,至少我所写的大部分都是正确的。我的问题是:

    如果我把一个新的/空白的avr放在我的板上,引导程序如何掌握该芯片? “刻录引导程序”命令工作如何?

    是否可以将十六进制文件上传到Atmega328,而不首先上传引导程序?可以通过在Atmega16u2上使用Speciaf固件来完成吗?

    谢谢!

    Johannes

有帮助吗?

解决方案

ISP程序员(ArduinoISP或诸如USBASP的离散程序员)可用于编程AVR的闪存,EEPROM,熔丝位和锁定位,而无需预先存在的引导加载程序。它使用设备上的SPI引脚将命令发送到设备以操纵非易失性存储内容。

Atmega16u2只有UART连接到'328;没有“在328上没有引导加载程序的UART就无法编程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top