2013-04-08 113 views
1

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

我现在的问题是,我可以利用Arduino IDE中的不同编程器模式对引导加载器进行旁路排序,以便上传过程可以达到100%,代码实际上可以到达虚拟COM端口?

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

回答

0

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

如果您只是试图获取串行端口的转储信息。我用过Virtual Serial Ports Emulator。它的模块化非常灵活,可以让你创建你想要的东西。

另外,正如其他关于此的线程所述,请注意串口上的数据是在STK500 protocol的ontop上格式化的。您还在其他线程中提到您不想使用其他工具来获取数据。而为了使用另一种协议,您需要更改源compiler.java并重建项目,以使用新协议调用avrdude。所以你可以用另一种工具来获得它。看到下面这将回来。

你可以得到原始的二进制文件,从正在馈送到avrdude。因为它可能并不明显。由于avrdude获取ELF不是BIN。 Arduino IDE包含了所有的avr-gcc及其工具。位于。\ Arduino \ hardware \ tools \ avr \ bin中的avr-objcopy可以将集成到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和AVR-objcopy命令来自动售货机

+0

好,我不想做手工是我的计划将采取.elf和使用批处理文件替换avrdude.exe它来模拟Arduino,所以我的程序有一个体面的用户界面,我不能要求用户复制粘贴他保存草图的地方。所以我需要将代码上传到Arduino上,并且在引导加载程序达到90%的原因时,IDE中的上载进度不会冻结。 – 2013-04-09 19:23:34