Küsimus:
Kas Arduinost saab visandit alla laadida?
The Guy with The Hat
2014-02-14 03:23:36 UTC
view on stackexchange narkive permalink

Tegin visandi, kuid siis kaotasin selle. Laadisin selle siiski enne kaotamist Arduinosse üles. Kas ma saan seda kuidagi tagasi saada?

http://electronics.stackexchange.com/questions/28211/backup-avr-with-avrdude, kuid nagu teised ütlevad, sülitab see ainult .hex-faile, mitte algset C-allikat.
Saididevaheline dupe: http://reverseengineering.stackexchange.com/q/125/189
Viis vastused:
#1
+37
sachleen
2014-02-14 03:25:48 UTC
view on stackexchange narkive permalink

See peaks olema võimalik seni, kuni turvabitti pole määratud. See küsimus esitati EE-le mõni aeg tagasi.

Kas Arduino tahvlilt on võimalik koodi välja võtta?

Kuid te ei saa Arduino koodi, mille kirjutasite tagasi. Kood koostatakse kokkupanekuks ja peate selle ise tagasi C-ks teisendama.

Toorkuustiku ettelugemine: http://forum.arduino.cc/index.php?topic=6150.0 ja automaatne lahtivõtmine: http://forum.arduino.cc/index.php/topic,46843.0.html
#2
+21
Cybergibbons
2014-03-16 14:43:55 UTC
view on stackexchange narkive permalink

See vastus ei vasta otseselt küsimusele, kuid annab siiski sama lõpptulemuse.

Arduino IDE kasutab ajutisi katalooge ehitusfailide, sealhulgas nii algse visandi kui ka HEX-i salvestamiseks. ja vahefailid.

Macis asuvad need vaikimisi kaustades / var / kaustad ja Windowsi masinas asuvad ... \ Local Settings \ Temp \ (mis sõltuvalt Windowsi versioonist võivad olla mitmes kohas).

Olen avastanud, et eriti Windowsis ei kustutata neid järjefaile eskiisi või IDE sulgemisel, nii et need võivad teie arvutis olla palju kauem kui te mõtle.

Samuti varundavad Crashplan, Backblaze ja Time Machine vaikimisi neid asukohti, nii et isegi kui need on kustutatud, võivad need siiski varundada.

eeliseks on see, et taastate pigem C-koodi kui ASM-i.

See on IMHO parim lahendus. Ka väga loominguline ...
Selle leiate Linuxi (ja isegi Maci) kataloogidest `/ tmp /`. c.f. https://www.arduino.cc/en/Hacking/BuildProcess
Kommenteeritud kaja aktsepteeritud vastusest: töötlemata kuuskant: http://forum.arduino.cc/index.php?topic=6150.0 ja automaatne lahtivõtmine: http://forum.arduino.cc/index.php/topic, 46843.0.html
#3
+5
TheDoctor
2014-02-14 03:34:32 UTC
view on stackexchange narkive permalink

Saate faili hex-dump'i alla laadida, kuid kõigi C ++ koodi ja kommentaaride saamiseks pole lihtsat viisi. Kui saate montaažist aru, võiksite programmi uuesti luua, kuid see võtab natuke aega. Mõne seadme jaoks on saadaval disassemblers, ma ei tea arduino kohta.

Arduino jaoks pole demonteerijaid, sest see pole MCU tüüp. Seal on ** mitu ** ATmega ** demonteerijat (google ʻatmega demonteerija).
Kui teil on arduino väljakutse, on teil juba avr-objdump olemas, kuna see on varustatud avr-gcc-ga.
Toorkuustiku ettelugemine: http://forum.arduino.cc/index.php?topic=6150.0 ja automaatne lahtivõtmine: http://forum.arduino.cc/index.php/topic,46843.0.html
#4
+5
Zathura
2015-01-19 14:15:03 UTC
view on stackexchange narkive permalink

Ma arvan, et selleks on veel üks viis, ilma Arduino plaadilt koodi välja võtmata. Eemaldage visandi loomise kuupäev ja otsige seda menüüst C: \ Users \ User \ AppData \ Local \ Temp \ (Näiteks: C: \ Users \ User \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Võite oma salvestamata koodi leida, kui mõni "vabastav kosmoseprogramm" selle ei kustutanud. Edu!

#5
+4
Nick Gammon
2015-07-03 04:34:30 UTC
view on stackexchange narkive permalink

Kui teie eesmärk pole lihtsalt identse koodi teise seadmesse kopeerimine, on lihtne vastus: ei

Nagu teistes vastustes on märgitud, saate hex-kood seadmel tagasi assemblerikoodiks.

Näiteks (kui olete koodi seadmest tagasi oma kettale kopeerinud):

  avr-objdump -j .sec1 -d -m avr5 yourFileHere.hex  

Käivita ühel alglaadurifailil, mille saan (osaliselt):

  00007e00 <. sec1>: 7e00: 11 24 eor r1, r1 7e02: 84 b7 r24-s, 0x34; 52 7e04: 14 olema väljas 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 silmust 0x0081, r24 7e10: 82 e0 ldi r24, 0x02; 2 7e12: 80 93 c0 ​​00 silmust 0x00C0, r24 7e16: 88 e1 ldi r24, 0x18; 24 7e18: 80 93 c1 00 silmust 0x00C1, r24 7e1c: 86 e0 ldi r24, 0x06; 6 7e1e: 80 93 c2 00 silmust 0x00C2, r24 7e22: 80 e1 ldi r24, 0x10; 16 7e24: 80 93 c4 00 silmust 0x00C4, r24 7e28: 8e e0 ldi r24, 0x0E; 14 7e2a: c9 d0 rcall. + 402; 0x7fbe 7e2c: 25 9a sbi 0x04, 5; 4  

Nagu näete, pole see eriti kasulik teie visandi tegemiseks. Tõenäoliselt on üks kahest stsenaariumist:

  • teie visand oli lühike, sellisel juhul võite pärast nädalatepikkust tööd muuta assembleri koodi uuesti C-ks
  • Teie visand oli pikk, sel juhul oleks seda praktiliselt võimatu muuta uuesti C
ks

"Lühikese visandi" puhul on parem lihtsalt nullist ümber kirjutada. See oleks peaaegu kindlasti kiirem. "Pika visandi" puhul - see pole lihtsalt seda väärt. Ühtegi muutuja nime ei säilitata ning kuidas kompilaator koodi optimeerib, oleks isegi koodi struktuuri raske kindlaks teha.



See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...