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

时间:2013-04-08 22:51:51

标签: com arduino virtual bootloader

此问题与Upload Arduino code on virtual serial port through Arduino IDE有关。主要问题是能够将代码上传到虚拟COM端口而不是使用Arduino,因此我可以将二进制代码输出并在其他应用程序中使用它。问题在于上传过程也与Arduino上的引导加载程序有关,这就是上传过程永远不会达到100%的原因。建议的解决方案是在我的应用程序中实现引导加载程序或使用已经存在的东西。

我现在的问题是,我是否可以利用Arduino IDE中的不同程序员模式来绕过引导加载程序,以便上传过程可以达到100%并且代码实际上会到达虚拟COM端口?

任何帮助都将受到高度赞赏。感谢

1 个答案:

答案 0 :(得分:0)

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

如果您只是试图转移串口上的内容。我使用过Virtual Serial Ports Emulator。它的模块化非常多样化,可以让你构建你想要的东西。

另外,正如其他线程中提到的那样,请注意串行端口上的数据是在STK500 protocol的顶部形成的。您还在其他线程中提到您不想使用其他工具来获取数据。而为了使用其他协议,您需要更改源compiler.java并重建项目以使用新协议调用avrdude。所以你不妨用另一种工具来获取它。见下文这将重新打入。

你可以获得原始二进制文件,从正在被提供给avrdude。它最初可能并不明显。因为avrdude得到ELF而不是BIN。 Arduino IDE包含所有avr-gcc及其工具。 avr-objcopy位于。\ Arduino \ hardware \ tools \ avr \ bin可以将IDE的输出转换为avrdude,转换为您可能想要的二进制文件。无需确定串口端口流。

要手动执行此操作,您需要通过启用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同时调用为automat的批处理文件