|
1
3
我想你可能会认为上传代码到Arduino是单向通信:这就像把草莓放在搅拌机里一样 Daquiri 出来了。如果这是真的,那么您只需将IDE转储的任何内容带到串行端口,将其保存到一个文件中,就可以获得Arduino二进制文件。(跳到 TL;博士 如果对细节不感兴趣。Upshot:这个假设是不正确的)。 单向通信的假设并不完全正确:Arduino上有一个程序(称为“ bootloader “),负责与程序员通信(“程序员”:一个为Arduino编程的程序,假设它现在是Arduino IDE)。在它们最“自然”的状态下,Arduino CPU不能通过串行线编程。相反,这些芯片通过 system programming (ISP)或 via 这个 JTAG 协议引导程序是一个在Arduino CPU上运行的程序,通过串行端口加载草图/程序。该程序在启动时运行,并通过串行端口查找编程命令。 如果它发现程序员试图交流编程信息,它将通过串行链路读取经过编译的Arduino二进制文件,将其存储在闪存中,通过串行链路将其发送回进行验证,如果一切顺利,则退出并启动存储的草图。如果串行端口上没有显示任何编程信息,也就是说,没有程序员试图编写新的草图,那么引导程序只需退出并启动已经存储在闪存中的程序。 TL;博士 :为了在串行端口上实现伪Arduino,你必须编写一个程序——一些代码,模拟虚拟串行端口另一端的Arduino(引导程序)。所以,当程序员/IDE对Arduino说“你在吗?”时,你的程序会像Arduino一样回答“是的!”。 默认的Arduino引导加载程序是 STK-500 compatible :这意味着它实现STK-500命令-可以找到其参考 here 。如果您决定这样做,那么最简单的事情可能是从现有的引导加载程序开始,例如 Arduino 的或 AdaFruit 的(还有其他的),并对其进行修改。这样的引导加载程序将已经实现所有命令,并且由于它是用C编写的(我不会选择程序集引导加载程序来修改:),因此修改起来应该足够容易。 或者,您可能会认为STK-500太难实现。如果是这种情况,您可以使用任何程序员协议 Avrdude 支持:Avrdude是一个用于编程AVR芯片的程序,Arduino IDE在内部使用Avrdude将草图发送到Arduino。如果你这样做,那么你就必须更改你正在使用的程序员Arduino IDE中的设置。 就我个人而言,我认为兼容STK-500是最好的选择,但 YMMV . |
|
|
Jason A · 为什么c++对象中的这个私有变量没有更新?复制 2 年前 |
|
Robbert · 用程序求有限序列中的一个数 3 年前 |
|
|
Pertev · 使用for循环作为延迟的替代方案? 3 年前 |
|
|
Franta123456 · 如何将以前的值存储到数组中 8 年前 |