스케치를 만들었는데 잃어버렸습니다. 하지만 분실하기 전에 아두이노에 업로드했습니다. 다시 가져올 수 있는 방법이 있나요?
보안 비트가 설정되어 있지 않다면 가능할 것입니다. 이 질문은 얼마 전에 EE에 올라온 질문입니다.
하지만 작성한 아두이노 코드는 돌려받을 수 없습니다. 코드는 어셈블리로 컴파일되며 이를 다시 C로 직접 변환해야 합니다.
이 답변은 질문에 대한 직접적인 답변은 아니지만 최종 결과는 동일합니다.
아두이노 IDE는 임시 디렉터리를 사용하여 원본 스케치뿐만 아니라 HEX 및 중간 파일을 포함한 빌드 파일을 저장합니다.
Mac에서는 기본적으로 /var/폴더에, Windows에서는 ...\Local Settings\Temp(Windows 버전에 따라 여러 위치에 있을 수 있음)에 있습니다.
특히 Windows에서는 스케치나 IDE를 닫아도 빌드 파일이 삭제되지 않기 때문에 생각보다 훨씬 더 오래 컴퓨터에 존재할 수 있습니다.
또한 기본적으로 Crashplan, 백블레이즈, 타임머신은 이러한 위치를 백업하므로 삭제했더라도 여전히 백업에 남아 있을 수 있습니다.
여기서 장점은 ASM이 아닌 C 코드를 복구한다는 것입니다.
가 있다고 생각하는 다른 방법이 없이 추출하는 코드에서 Arduino 보드입니다. 하는 사용자는 날짜를 만들 스케치,그리고에서 찾습니다 C:\Users\User\AppData\Local\Temp\ (예를 들어:C:\Users\User\AppData\Local\Temp\untitled4390292704786567977.tmp\sketch_jan19a ). 당신이 찾을 수 있는 저장되지 않은 코드가 없는 한 그것에 의해 삭제되었습니다 몇 가지"있는 여유 공간을 차지하는 프로그램". 행운을 빕니다!
지 않는 한 당신의 목적은 단순히 복사하고 동일한 코드를,다른 장치에 대한 간단한 대답입니다:없음
으로 지적되었다 다른 답변에서,당신은 설정할 수 있습의 hex 코드 장치에 다시 어셈블러 코드입니다.
예를 들어(번 복사에서 코드 장치에 다시 디스크):
avr-objdump -j .sec1 -d -m avr5 yourFileHere.hex
에서 실행되는 하나의 부트로더에 파일 내가 이러한 결과(부):
00007e00 <.sec1>:
7e00: 11 24 eor r1, r1
7e02: 84 b7 in r24, 0x34 ; 52
7e04: 14 be out 0x34, r1 ; 52
7e06: 81 ff sbrs r24, 1
7e08: f0 d0 rcall .+480 ; 0x7fea
7e0a: 85 e0 ldi r24, 0x05 ; 5
7e0c: 80 93 81 00 sts 0x0081, r24
7e10: 82 e0 ldi r24, 0x02 ; 2
7e12: 80 93 c0 00 sts 0x00C0, r24
7e16: 88 e1 ldi r24, 0x18 ; 24
7e18: 80 93 c1 00 sts 0x00C1, r24
7e1c: 86 e0 ldi r24, 0x06 ; 6
7e1e: 80 93 c2 00 sts 0x00C2, r24
7e22: 80 e1 ldi r24, 0x10 ; 16
7e24: 80 93 c4 00 sts 0x00C4, r24
7e28: 8e e0 ldi r24, 0x0E ; 14
7e2a: c9 d0 rcall .+402 ; 0x7fbe
7e2c: 25 9a sbi 0x04, 5 ; 4
당신이 볼 수 있듯이,특히 유용한 재생하는 어떤 스케치했다. 가 될 가능성이 있다 하나의 두 가지 시나리오:
스케치했다 짧은 경우에는,당신도,후 작품의 주 설정,어셈블러 코드로 다시 C 스케치 오래되는 경우에,그것은 사실상 불가능하다고 그것을 다시 설정으로 C
In"짧은 스케치"경우,당신은 더 나은 단지 처음부터 다시 쓰기. 는 것이 더 빠르고,거의 확실한 보장을 의미합니다. In"긴 스케치"경우-그것은 단지 아't 가치가있다. 없음 변수의 이름이 보존하는 방법과 컴파일러 최적화 코드,심지어의 구조 코드는 어려울 것이 결정합니다.