我对嵌入式世界很陌生。到目前为止,我一直只在 S/W 上工作
谁能解释一下Arduino Bootloader的使用?我希望 Arduino 使用一些必须放入芯片的附加组件来执行一些简单的数学运算。
我一定需要引导加载程序吗?
我对嵌入式世界很陌生。到目前为止,我一直只在 S/W 上工作
谁能解释一下Arduino Bootloader的使用?我希望 Arduino 使用一些必须放入芯片的附加组件来执行一些简单的数学运算。
我一定需要引导加载程序吗?
Arduino 基本上只是一个 Atmel AVR 微控制器,具有足够的支持电子设备使其能够运行。AVR 具有内置闪存,可以在断电的情况下保持程序,但是要直接对 AVR 芯片进行编程,您需要像 STK-500 这样的工具来完成这项工作。Arduino 通过在板上还有一个小型 USB 接口来克服这个问题,并且芯片上已经有 Arduino 引导加载程序代码。这允许 PC 端应用程序将您的程序传输到设备,并且实质上是让其自行闪烁。
所以,最重要的是,如果你有一个 Arduino,那么引导加载程序已经在那里,并且会自动完成它的工作。您在 PC 上编写程序,按下 IDE 上的“上传”按钮,片刻之后您的程序就在 Arduino 上运行。引导加载程序完全透明地完成其工作。
fwiw,我个人有一个 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 芯片。