Arduino编程模式,Bootloader,Arduino作为ISP
-
21-12-2019 - |
题
我目前正在使用Arduino Uno(Rev3)板的项目。最终我可能会让它与Arduino独立运行,并让我思考整个编程和引导程序的东西是如何工作的。
这是我所知道的/到目前为止所知道的:
-
电路板有两个芯片:Atmega328(主芯片)和Atmega16u2(用作USB到串行桥)。
-
通过激活DFU模式并使用例如,可以更改Atmega16U2的固件。 DFU程序员。然后可以将Arduino识别为HDI / MIDI设备,但不再是可编程的。
-
在编程ATMEGA328时,芯片正在重置并在重新启动引导加载程序时,通过其串行连接和ATMEga16U2-Bridge将加载和写入新程序。芯片的ISP接口不用于上传新程序。谁首先启动重置?
-
Arduino可以用作ISP程序员来编程其他外部芯片。对于将某些固件加载到AATMEGA328上,待编程的芯片的ISP-PIN连接到Arduino板上的芯片。然后,Arduino-IDE配置为使用Atmega328作为程序员,而不是重新编程它。
我希望,至少我所写的大部分都是正确的。我的问题是:
如果我把一个新的/空白的avr放在我的板上,引导程序如何掌握该芯片? “刻录引导程序”命令工作如何?
是否可以将十六进制文件上传到Atmega328,而不首先上传引导程序?可以通过在Atmega16u2上使用Speciaf固件来完成吗?
谢谢!
Johannes
解决方案
ISP程序员(ArduinoISP或诸如USBASP的离散程序员)可用于编程AVR的闪存,EEPROM,熔丝位和锁定位,而无需预先存在的引导加载程序。它使用设备上的SPI引脚将命令发送到设备以操纵非易失性存储内容。
Atmega16u2只有UART连接到'328;没有“在328上没有引导加载程序的UART就无法编程。