使用Arduino程序员模式在虚拟COM端口上载代码

使用Arduino程序员模式在虚拟COM端口上载代码,com,arduino,virtual,bootloader,Com,Arduino,Virtual,Bootloader,这个问题涉及到。主要问题是能够将代码上传到虚拟COM端口,而不是使用Arduino,这样我就可以将二进制代码输出用于其他应用程序。问题是上传过程也与Arduino上的引导加载程序有关,这就是为什么上传过程从未达到100%。建议的解决方案是在我的应用程序中实现引导加载程序,或者使用已经存在的东西 我现在的问题是,我是否可以利用ArduinoIDE中的不同编程模式对引导加载程序进行旁路,这样上传过程就可以达到100%,代码就可以真正到达虚拟COM端口 任何帮助都将不胜感激。谢谢听起来您的虚拟串行端口

这个问题涉及到。主要问题是能够将代码上传到虚拟COM端口,而不是使用Arduino,这样我就可以将二进制代码输出用于其他应用程序。问题是上传过程也与Arduino上的引导加载程序有关,这就是为什么上传过程从未达到100%。建议的解决方案是在我的应用程序中实现引导加载程序,或者使用已经存在的东西

我现在的问题是,我是否可以利用ArduinoIDE中的不同编程模式对引导加载程序进行旁路,这样上传过程就可以达到100%,代码就可以真正到达虚拟COM端口


任何帮助都将不胜感激。谢谢

听起来您的虚拟串行端口驱动程序在某些超时或缓冲区上卡住了。IDE使用特定的协议调用avrdude,以与Arduino的引导加载程序(加载在AVR上)中内置的内容相匹配。还有其他的引导加载程序(事实上很多,太多了,不必提及),其中一些可能有不同的时间等等,但使用它们基本上不再是Arduino。查看可能性。\avrdude.exe-c

如果你只是想得到一个什么是通过串口转储。我用过。它是非常通用的,因为它是模块化的,允许你建立你想要的

另外,正如其他线程所提到的,请注意,串行端口上的数据是在。在其他线程中,您还提到不想使用其他工具获取数据。然而,为了使用另一个协议,您需要更改source compiler.java并重建项目,以便使用新协议调用avrdude。所以你最好用另一个工具来获得它。请参见下文,这将重新连接

您可以从输入到avrdude的内容中获取原始二进制文件。一开始可能并不明显。阿弗杜德得到的是精灵而不是垃圾箱。Arduino IDE包含所有avr gcc及其工具。avr objcopy位于的位置。\Arduino\hardware\tools\avr\bin可以将导入avrdude的IDE输出转换为您可能需要的二进制文件。不需要限定串行端口流的范围

要手动执行此操作,需要通过启用IDE的详细编译打印来定位IDE的临时工作目录。也可能将avr objcopy放在您的路径中。然后在下面的例子中简单地调用它,用你的草图的文件名代替我的文件名

C:\Users\mflaga\AppData\Local\Temp\build6135656488044319492.tmp>avr-objcopy -I ihex FilePlayer.cpp.hex -O binary FilePlayer.cpp.bin

如果你可以用一个批处理文件来替换avrdude.exe,该批处理文件调用avrdude和avr objcopy来自动执行

那么我不想手动执行,因为我的程序将使用.elf并使用它来模拟Arduino,所以我的程序要有一个良好的UI,我不能要求用户在保存草图的地方复制粘贴。因此,我需要将代码上传到Arduino上,并且IDE中的上传进度不会在达到90%时冻结,原因是引导加载程序。