Mevcut programı bir Arduino'dan nasıl okuyabilirim?


14

Arduino bootloader ve bazı programlarla önceden programlanmış bir ATmega2560 ile bir Arduino PCB aldım . Sahibim çizimini , ama onunla işe yaramaz önce, yedekleme denetleyicisi olduğu cari ikili istiyorum. Çoğu Arduinos gibi, PC'ye TX0 ve RX0'a bağlı bir USB-seri dönüştürücü kullanılarak bağlanır ve ISS arabirimi yoktur .

Görünüşe göre orada Arduino bootloader okuma için kod ama Arduino IDE hiçbir menü öğesi olmadığı için aracı erişimi için kullanmak için hiçbir fikrim yok.

Arduino'dan programı okumak için hangi yazılıma ihtiyacım var?


Önyükleyicide okumak için kod bulundu, düzenlenmiş soru.
AndreKR

bu doz sorunuzu uyandırır, ancak arduino skeches'lerinizi bir .HEX dosyası olarak dışa aktarabilirsiniz.
uranium Lees

Yanıtlar:


1

Arduino önyükleyici, orijinal STK500 protokolünün (1.x) bir çeşididir . 'T' karakteri (ASCII 0x74) "Sayfayı Oku" komutudur. Bu yüzden, programı AVRDUDE kullanarak bootloader üzerinden seri porttan çıkarmak mümkündür ... Ama en iyisi, onu çıkarmak için bazı fantezi zamanlama alacaktır.


11

Aşağıdaki komutla ATMega328P ile Duemillenova'dan bir bellek döktüm:

avrdude -C avrdude.conf -v -v -v -v -p atmega328p -c stk500 -U flash:r:"c:/arduino.hex":r -P\\.\COM2 -b57600

1
uygulanabilir programcının muhtemelen stk500 değil arduino olduğuna dikkat edin.
Paulo Neves

Neden dört -vs gerekli?
Peter Mortensen

Gönderen AVRDUDE belgelerinde, "2.1 Opsiyon Açıklamaları" : "... çıkış Ayrıntılı Enable -v. Daha -v seçenekleri ayrıntı düzeyini artırmak. "
Peter Mortensen

Bu kabul edilen cevap olmalı.
Caterpillaraoz

EVET! Profesyonel mikro önyükleyici profesyonel mikro klonumda çalışmadı. Flaşı çalışan bir profesyonel mikro klondan döktüm ve bir önyükleyiciye ihtiyaç duyulana kaydettim. ISP (linux) olarak bir Arduino kullanma - dökümü ./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:r:"/tmp/dump.bin":r -P /dev/ttyUSB0:; yazma ./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:w:"/tmp/dump.bin":r -P /dev/ttyUSB0:; doğrulayın:./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:v:"/tmp/dump.bin":r -P /dev/ttyUSB0
b_laoshi

7

Does avrdude ile Yedekleme AVR iplik sorunuza cevap? Temel olarak, koruma sigortası ayarlanmadığı sürece AVR'deki tüm belleği okuyabilirsiniz.

Bu ATtiny ve ATmega için kullandığım kurulum.

Gösterilen tahtada:

  • 11 = MOSI
  • 12 = MISO
  • 13 = SCLK

Tam olarak hangi pimin kullanılacağı denetleyicinin veri sayfasına bakın. Bir Arduino kullanarak AVR'lerin programlanması hakkında internette yazılmış birkaç web sitesi vardır, örneğin: http://hlt.media.mit.edu/?p=1229


Bunun için ikinci bir arduinoya ihtiyacım var, değil mi? Bende yok.
AndreKR

1
Bu iki Arduino yöntemi, evet.
jippie

Ve resimde görmek biraz zor olsa da, hedef Arduino'da kullanılan pimler de TX0 ve RX0 değil, değil mi?
AndreKR

Hayır, TX ve RX ICP için kullanılmaz. Cevabı biraz güncelledi.
jippie

Sanırım sorumun bütün noktasını kaçırdınız, muhtemelen kötü bir başlık vermiştim. Bütün soruyu yeniden ifade ettim.
AndreKR

3

Arduino bootloader kaynak kodundan görebildiğim kadarıyla , ondan tüm hafızayı 'boşaltmanın' bir yolu yok. Önyükleyici, her seferinde bir bellek baytını boşaltmanızı sağlayan bir 'monitör' modunu destekler. Ancak, kaynak kod yorumlarına göre "/ * monitör işlevleri yalnızca ATmega128 kullanılırken önyükleme boyutu kısıtlamaları nedeniyle derlenecektir * /"

Bu nedenle, ISS kullanmak, önyükleyiciyi değiştirmek veya bunu yapmak için bir kroki yüklemek istemiyorsanız şansınız kalmadı.


701 satırında başlayan bölümden bahsediyordum else if(ch=='t') {.
AndreKR

İyi bir nokta - bunu görmemiştim.
RJR

2

Bunun için bir menü seçeneği olduğunu düşündüm ama şu anda bulamıyorum. Bir ISS programlayıcınız varsa, bellek görüntüsünü çipten okumak ve bir HEX dosyasına kaydetmek için AVR Studio'yu kullanabilirsiniz, bu da aynı yollarla geri yüklemenizi sağlar.

Düzenle

Yorumunuza yanıt olarak - bu kolay! Çıkarmak için iki değer diyagramını özümsemeniz gerekir. Birincisi Arduino / ATMega2560 Pin Eşleme.

resim açıklamasını buraya girin

İkincisi, ISS Başlığı / AVR Pin Eşleme:

resim açıklamasını buraya girin

Bu iki resim ile donanmış, nasıl bağlayacağınızı görebilmelisiniz.

  • Dragon ISP başlık pimi DIG50 bir tel çalıştırın 1
  • VCC'den Dragon ISP başlık pimine bir kablo geçirin 2
  • DIG52'den Dragon ISP başlık pimi 3'e bir kablo geçirin
  • DIG51'den Dragon ISP başlık pimi 4'e bir kablo geçirin
  • RESET'ten Dragon ISP başlık pimine bir kablo geçirin 5
  • GND'den Dragon ISP başlık pimine bir kablo geçirin 6

Yerinde olanlarla, Hex dosyasını çipten okumak için AVR Studio'yu kullanabilmelisiniz - daha fazla yardıma ihtiyacınız varsa bana bildirin.


Bir Ejderim var, ama Ejder'deki hangi pinlerin Arduino'nun seri arayüzüne bağlanacağını bilmiyorum.
AndreKR

@AndreKR daha fazla bilgi için düzenlenmiş cevabımı gör
vicatcu

Sorumda belirtildiği gibi, ISS kullanarak programı nasıl okuyacağımı elbette biliyorum. Ne bilmek istiyorum seri arayüzü (TX0 ve RX0) kullanarak nasıl yapılır - aynı şekilde programlar Arduino dünyasında denetleyiciye yüklenir.
AndreKR

@AndreKR Kafam karıştı ... bir ejderhan var, neden programı normal şekilde okumak istemiyorsun - "seri arayüz" e hangi pinlerin bağlanacağını bilmeme hakkındaki yorumunu yanlış
anladım

Sahip olduğum PCB'nin bir ISS başlığı yok. Ancak, bir seri arayüze ve bir Arduino önyükleyicisine sahiptir. Bu şekilde programlar Arduino dünyasına yüklenir ve görünüşe göre aynı şekilde indirilebilirler.
AndreKR
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.