2013-04-08 65 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

相關問題