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:
- Tulis sketsa / firmware baru
- Kompilasi firmware
- Tulis salinan firmware ke Arduino A sebagai data (Arduino A diatur untuk berfungsi sebagai ISP)
- Lepaskan Arduino A dari komputer
- Di lokasi terpisah pasang Arduino A ke Arduino B menggunakan header ISP
- 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.
Jawaban:
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).
Daftar chip yang didukung
sumber
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
sumber