2013-04-08 2 views
1

이 질문은 Upload Arduino code on virtual serial port through Arduino IDE과 관련 있습니다. 주요 문제는 Arduino를 사용하는 대신 가상 COM 포트에 코드를 업로드 할 수있어서 이진 코드 출력을 받아 다른 응용 프로그램에서 사용할 수 있습니다. 문제는 업로드 프로세스가 Arduino의 부트 로더와 관련되어 있기 때문에 업로드 프로세스가 결코 100 %에 미치지 못하는 이유입니다. 제안 된 솔루션은 애플리케이션에 부트 로더를 구현하거나 이미 존재하는 것을 사용하는 것이 었습니다.Arduino 프로그래머 모드를 사용하여 가상 COM 포트에 코드 업로드

Arduino IDE에서 다른 프로그래머 모드를 사용하여 부트 로더를 우회하여 업로드 프로세스가 100 %에 도달하고 코드가 실제로 가상 COM 포트에 도달 할 수 있습니까?

도움을 주시면 감사하겠습니다. 감사합니다

답변

0

가상 직렬 포트 드라이버와 같은 소리가 일부 시간 초과 또는 버퍼에 걸려 있습니다. IDE는 avrdude를 특정 프로토콜로 호출하여 AVR에로드 된 Arduino의 부트 로더에 내장 된 것과 일치시킵니다. 다른 부트 로더 (실제로는 너무 많고 언급하기에는 너무 많음)가 있습니다. 그 중 일부는 타이밍이 다를 수 있지만 기본적으로는 더 이상 Arduino가 아닙니다. 가능성을보기. \ avrdude.exe -c.

직렬 포트를 통과하는 것을 덤프하려고하는 경우. 나는 Virtual Serial Ports Emulator을 사용했다. 그것은 모듈 식으로 매우 다양하여 원하는 것을 구축 할 수 있습니다.

또 다른 스레드에서 언급했듯이 직렬 포트를 통한 데이터는 STK500 protocol의 공식화 된 ontop입니다. 또한 다른 스레드에서 데이터를 가져 오기 위해 다른 도구를 사용하지 않으려한다고 언급합니다. 다른 프로토콜을 사용하려면 소스 compiler.java를 변경하고 새 프로토콜로 avrdude를 호출하도록 프로젝트를 다시 빌드해야합니다. 그래서 당신은 다른 도구로 그것을 얻을 수도 있습니다. 아래 참조하십시오. 다시 연결될 것입니다.

당신은 avrdude로 먹여지고있는 것에서부터 원시 바이너리를 얻을 수 있습니다. 어디로 처음에는 분명하지 않을 수도 있습니다. avrdude가 BIN이 아닌 ELF를 얻습니다. 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 

어디 내 프로그램은 .elf 사용 걸릴 것으로 잘 내가 직접하고 싶지 않아

+0

을 자동 판매기에 avrdude와 AVR-objcopy의 모두 호출하는 배치 파일로 avrdude.exe 대체 할 수로 그것은 Arduino를 시뮬레이트하기 위해 나의 프로그램이보기 흉한 UI를 가졌기 때문에 사용자에게 스케치를 저장 한 곳에 붙여 넣기를 요구할 수 없었다. 따라서 Arduino에 업로드 할 코드가 필요하고 IDE의 업로드 진행률이 부트 로더의 90 %에 도달하면 멈추지 않을 것입니다. –

관련 문제