Menginstal firmware berbeda di Arduino

12

Apakah mungkin untuk memutakhirkan firmware pada Arduino sehingga dapat melakukan lebih banyak hal seperti mengubah undervolting / overvolting untuk memberikan kekuatan pemrosesan yang lebih. Untuk melakukan ini, Anda harus mem-flash chip itu sendiri, jadi bagaimana hal itu dapat dilakukan?

JVarhol
sumber
2
Sebagian besar fungsi baru disediakan oleh perpustakaan dan pemrograman. "Lebih banyak hal" apa yang Anda bicarakan?
TheDoctor
Apa yang TheDoctor katakan, apa yang Anda maksud dengan lebih banyak hal? Juga, apa yang Anda maksudkan dengan "firmware"? Perangkat lunak / OS onboard?
hichris123
Haruskah saya menghapus pertanyaan
JVarhol
@JVarhol Jika Anda bisa membuatnya lebih jelas, nah, simpanlah. Cukup jelaskan kepada kami apa yang sebenarnya Anda pikirkan ...
hichris123
Saya tahu Anda dapat menginstal firmware baru pada chip USB-serial sehingga dapat meniru keyboard
TheDoctor

Jawaban:

7

Untuk menjawab aspek pertanyaan Anda tentang "firmware" pada ATmega328p MCU yang digunakan di sebagian besar papan Arduino:

Tidak ada firmware pada ATmega sama sekali selain dari bootloader. Program yang Anda tulis berjalan langsung pada perangkat keras.

Ada pengaturan "sekering" tertentu yang ditetapkan dengan pemrogram ISP . Namun, hanya ada 24 di antaranya (tiga byte), dan sebagian besar berhubungan dengan konfigurasi tingkat rendah, dan bukan yang saya pikir Anda tanyakan:
masukkan deskripsi gambar di sini

Ada juga Bootloader , yang merupakan program kecil yang duduk di segmen terpisah dari memori program MCU dan memungkinkannya untuk memperbarui sendiri saat startup (yang merupakan cara semua arduinos diprogram). Namun, itu hanya berjalan untuk jangka waktu singkat saat startup, dan sepenuhnya dihapus dari memori setelah MCU telah melompat ke program utama.

Terakhir, ada MCU tambahan (ATmega16U2 / 8U2) pada sebagian besar papan Arduino yang digunakan sebagai antarmuka serial-USB, yang dapat diperbarui untuk berperilaku berbeda (misalnya mengemulasi keyboard / mouse), tetapi sekali lagi, ini sebenarnya bukan perubahan ke prosesor inti, jadi apakah itu dianggap sebagai "menginstal firmware yang berbeda" tergantung pada bagaimana Anda mendefinisikan Arduino.

Sungguh, saya akan sangat merekomendasikan membaca lembar data ATmega328P . Ini adalah dokumentasi untuk MCU yang pada dasarnya membentuk "Arduino". Ini harus membahas apa yang tampaknya kesalahpahaman.

Connor Wolf
sumber
5

Perhatikan bagan di bawah ini, berkenaan dengan over / over volting perangkat Anda untuk F_CPU berbeda, menunjukkan hubungannya. Akibatnya, Anda menemukan sebagian besar Arduino beroperasi pada 5V dan clock rate 16MHz. Sementara ada beberapa varian 3.3V yang berjalan pada 8MHz.

Frekuensi vs Vcc

Namun, pustaka inti yang dilengkapi dengan IDE biasanya memiliki # if's untuk kecepatan F_CPU 8 dan 16 MHz, tidak menggunakan rumus di sebagian besar tempat.

Karena itu dimungkinkan untuk melakukan apa yang Anda minta. Namun, Anda akan menemukan keterbatasan perpustakaan inti yang mempengaruhi. Tip rasio biaya vs manfaat, dengan niat yang sangat. Dan kemungkinan besar orang akan meninggalkan Stock IDE dan perpustakaan inti ke metode makefile yang lebih.

mpflaga
sumber
Rupanya itu bisa di-overclock hingga 20 mHz
TheDoctor
@TheDoctor - itu bukan overclocking. ATmega328p diberi peringkat hingga 20 Mhz. Arduino sebenarnya di- underclock hingga 16 Mhz.
Connor Wolf
@FakeName ya, saya maksudkan bahwa Anda dapat memodifikasi papan Arduino untuk memiliki resonator nessecary yang dapat disetel pada 20 mHz
TheDoctor
Oh, nada samping lain. Anda biasanya dapat melampaui area pengoperasian yang aman tanpa masalah besar . Saya memiliki sejumlah papan yang menjalankan 16 Mhz dengan rel 3.3V tanpa masalah. Mereka mungkin memiliki masalah stabilitas pada suhu ekstrem, tetapi tampaknya berfungsi sebagian besar baik pada suhu kamar.
Connor Wolf