Arduino sebagai ISP tanpa komputer

12

Adakah yang melihat atau mengetahui metode preloading (menggunakan komputer atau apa pun) firmware sebagai data ke satu Arduino yang diatur untuk beroperasi sebagai ISP dan kemudian menggunakan Arduino, tancapkan antarmuka ISP ke yang lain dan unggah firmware.

Agar lebih jelas - saya sedang mencari cara untuk membuat unggahan sketsa Arduino mungkin tanpa koneksi langsung ke komputer yang penuh sesak nafas.

Idealnya langkah-langkah yang terlibat adalah:

  1. Tulis sketsa / firmware baru
  2. Kompilasi firmware
  3. Tulis salinan firmware ke Arduino A sebagai data (Arduino A diatur untuk berfungsi sebagai ISP)
  4. Lepaskan Arduino A dari komputer
  5. Di lokasi terpisah pasang Arduino A ke Arduino B menggunakan header ISP
  6. Menggunakan beberapa metode (mungkin tombol) memicu Arduino A untuk mengunggah firmware yang dimuat sebelumnya ke Arduino B.

Saya berasumsi bahwa secara teori itu bisa berhasil karena mengunggah firmware hanyalah pertukaran byte di antarmuka SPI tapi saya tidak yakin dengan kenyataan.

Skenario yang saya pertimbangkan adalah jika saya menginstal arduino (secara permanen) di lokasi yang jauh dari komputer saya (saya tidak punya laptop dan saya tidak ingin mendapatkannya) akan merepotkan untuk memprogram ulang Itu.

Metode lain yang telah saya pertimbangkan adalah menggunakan ATMEGA paket DIL yang kemudian dapat saya hapus dari papan dan program di komputer dan kembali ke papan - namun saya lebih suka untuk tidak mengambil risiko menekuk pin dan kesulitan harus menghapus chip setiap kali saya ingin memprogram ulang.

m3z
sumber
Hasilnya adalah Anda hanya dapat memprogram Arduino lain dengan sketsa / firmware persis yang telah dimuat ke dalam programmer (Arduino A). Jadi itu hanya akan berguna untuk membuat salinan seperti dalam jalur produksi, bukankah begitu? Jika Anda perlu mengubah apa pun pada sketsa Anda harus kembali ke komputer untuk memodifikasi dan memuatnya lagi. Apakah saya benar?
Ricardo
1
Apakah tidak mungkin menyimpan "flash image" untuk disalin ke target pada dukungan lain (seperti kartu SD)?
jfpoilpret
Ya. Saya kira itu juga akan bagus untuk jalur produksi. Situasi saya adalah saya memiliki arduino yang direkatkan ke dalam kandang yang sulit untuk dipindahkan dan berada di ruangan yang berbeda dengan komputer saya (juga sulit untuk dipindahkan). Jadi saya akan senang memuat sketsa ke Arduino A setiap kali saya ingin mengubahnya.
m3z
2
Ini dilakukan untuk tujuan terbatas memrogram bootloader - github.com/WestfW/OptiLoader - tetapi harus bekerja untuk payload yang lebih kecil dari flash yang tersedia dikurangi ukuran alat. Untuk firmware muatan yang lebih besar, perangkat penyimpanan eksternal (atau hanya Arduino Mega?) Harus berfungsi.
Chris Stratton
@ ChrisStratton yang terlihat sempurna bagi saya untuk beradaptasi. Terima kasih
m3z

Jawaban:

5

Saya pikir μProg - kecil, cepat, programmer AVR portabel dengan SD melakukan apa yang Anda inginkan. Anda dapat menyimpan banyak file dalam kartu SD (hex, eep dll) dan memilih dari menu perangkat mana yang akan ditulis ke MCU target tanpa memerlukan PC.
Bagian terbaiknya adalah tersedia secara gratis (PCB, skema, firmware, dll).

Salah satu dari jenisnya, programmer AVR portabel! Membantu di mana pun Anda perlu memperbarui firmware perangkat, di mana perangkat target berada di lokasi yang sulit dijangkau dan Anda tidak dapat (atau tidak mau) membawa laptop Anda dengan banyak kabel. Mudah digunakan, super murah untuk dibuat, super kecil, super cepat, menggunakan kartu SD ...

Fitur:

  • super kecil - dimensi 44 x 39 x 5,5 mm
  • super cepat - tulis hingga 12,5 kB / s, baca hingga 14,5kB / s
  • menggunakan media penyimpanan murah - kartu MICRO SD kecil
  • mendukung sistem file FAT16 dan FAT32
  • dapat membaca, menulis, memverifikasi memori flash dan eeprom
  • dapat membaca, menulis, memverifikasi fusebits dan lockbits
  • tulis dan baca file BIN, HEX, dan TXT
  • dapat mengatur nilai default fusebits, menghapus memori
  • murah, mudah didapat, tampilan grafis LPH7779
  • menunjukkan animasi lucu setelah setiap operasi
  • tajuk pemrograman standar - Atmel 6-PIN ISP
  • memiliki fungsi pembaruan otomatis firmware sendiri (dari SD)
  • sangat mudah digunakan, navigasi 4 tombol
  • menu pengaturan pengguna
  • pemilihan otomatis kecepatan pemrograman (hingga 4MHz)
  • Beroperasi pada 3V, program chip dipasok dari 3V ke 5V

Daftar chip yang didukung

masukkan deskripsi gambar di sini

alexan_e
sumber
Kelihatan bagus. Akan menyelidiki pada akhir pekan.
m3z
Saya tidak tahu bagaimana saya melewatkan pertanyaan ini tempo hari. Saya hanya berbicara dengan seorang teman tentang membuat proyek yang tepat ini sendiri. Dan kemudian saya melihat jawaban Anda.
Madivad
4

Saya tidak punya solusi langsung untuk apa yang Anda inginkan, tetapi ya mungkin untuk melakukannya. Anda dapat meretas firmware bootloader sehingga membaca kode flash firmware dan mengunggahnya melalui ISP.

Meskipun Anda jelas tidak dapat mengunggah 32k firmware pada AVR target jika kedua arduinos hanya memiliki 32k total flash di MCU mereka, Anda harus meminta flasher memiliki lebih banyak flash daripada target jika Anda ingin melakukannya (1284p atau 2560 Mega akan cukup jauh, atau 328 / 32u4 akan baik untuk mem-flash 168 atau attiny). Satu-satunya pengecualian adalah memiliki firmware yang akan di-flash lebih kecil dari total memori (seperti untuk sketsa berkedip).

Pada akhirnya, itu tidak akan mudah, ini 100% kode AVR murni, tetapi Anda bisa melakukannya. Lihatlah:

Cara saya mengimplementasikannya adalah dengan membuat semuanya muat di bootloader dari perangkat flasher, jadi ia membaca firmware (semuanya dari 0x00 ke alamat mulai bootloader) dan mem-flash-nya melalui ISP dengan menggabungkan AVRISP dengan Optiboot.

Bagaimanapun, itu adalah proyek yang menarik untuk lokakarya tentang bootloader dan AVR yang saya sarankan di peretas lokal saya! ;-)

HTH

zmo
sumber
Terima kasih, kode sumber AVRISP tidak terlihat serumit yang saya harapkan. Saya akan melihat sedikit lebih dalam tentang ini selama akhir pekan
m3z
Di mana ruang peretas lokal Anda? :)
Madivad
itu di Perancis Le Loop
zmo
tidak ada masalah, itulah yang dipilih untuk ;-)
zmo