我做了一个草图,但是后来我丢失了。但是,我在丢失之前将其上传到了Arduino。有什么办法可以找回它吗?
我做了一个草图,但是后来我丢失了。但是,我在丢失之前将其上传到了Arduino。有什么办法可以找回它吗?
Answers:
该答案不会直接回答问题,但仍会产生相同的最终结果。
Arduino IDE使用临时目录存储构建文件,包括原始草图以及十六进制和中间文件。
在Mac上,默认情况下它们位于/ var / folders中,而在Windows机器上,它们位于…\ Local Settings \ Temp \中(取决于Windows的版本可能在多个位置)。
我发现,特别是在Windows中,关闭草图或IDE时不会删除这些构建文件,因此它们在计算机上的存在时间可能比您想象的要长得多。
同样,默认情况下,Crashplan,Backblaze和Time Machine会备份这些位置,因此,即使它们已被删除,它们仍可能处于备份状态。
这样做的好处是您将恢复C代码而不是ASM。
/tmp/
在Linux(甚至Mac)上的目录中找到它。cf arduino.cc/en/Hacking/BuildProcess
除非您的目标是将相同的代码简单地复制到另一台设备,否则简单的答案是:否
正如其他答案中指出的那样,您可以将设备上的十六进制代码重新转换为汇编代码。
例如(一旦将代码从设备复制回磁盘上):
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
如您所见,对于复制草图所做的工作并没有特别的帮助。可能是以下两种情况之一:
在“简短草图”情况下,最好从头开始重写。几乎可以肯定,那会更快。在“长草图”情况下-这是不值得的。不会保留任何变量名,以及编译器优化代码的方式,即使代码的结构也很难确定。