Mengapa kita membutuhkan programmer perangkat keras?


22

Saya menggunakan Boarduino dan papan roti 30-baris untuk memprogram ATtiny saya. Saya memuat sketsa yang tidak terlalu rumit yang disebut ArduinoISP (termasuk secara default sekarang di IDE Arduino), dan tiba-tiba saya memiliki programmer yang berfungsi. Atmel menjual programmer yang bagus dengan harga antara $ 30 dan $ 40, dan ada banyak kit untuk membuat yang lebih murah.

Saya sangat senang begitu saya mendapatkan programmer yang bekerja dan membuat kedipan kecil beberapa petunjuk. Namun, sekarang boarduino saya yang buruk terjebak pada tugas programmer.

Sejauh yang saya tahu programmer ini menahan tombol reset, dan kemudian mentransmisikan dan menerima pin MOSI dan MISO. Saya pikir SCK tidak digunakan atau setidaknya tidak dibutuhkan. (SCK diperlukan menurut lembar data ATtiny, programmer saya tidak bekerja tanpanya, dan saya tidak dapat menemukan tempat yang saya pikir saya baca tidak diperlukan.)

Mengapa saya memerlukan programmer perangkat keras untuk hanya mengirimkan serial? Maksud saya, anggap saja saya bersedia menahan tombol reset dengan jari saya alih-alih menggunakan IC. Yang tersisa hanyalah pengiriman dan penerimaan serial, jadi yang saya butuhkan adalah tiga kabel, GND, RXD, dan TXD. Heck, jika saya memiliki garis "DTR" atau apa pun, Anda bahkan dapat menekan tombol reset dengan kabel serial.

Mengapa ada semua solusi perangkat keras ini yang juga memerlukan perangkat lunak mewah (seperti AVRdude, atau AVR studio, atau apa pun)?

Maksud saya, saya dapat memahami kabel USB kecil yang menghadirkan mikrokontroler sebagai perangkat penyimpanan massal dan memungkinkan Anda menyeret file biner ke pemrograman (seperti papan dev ARM ini ). Hanya perangkat keras, menggunakan driver perangkat lunak standar.

Saya juga bisa memahami solusi perangkat lunak saja (modulo mengaitkan kabel dari USB ke chip, menggunakan sesuatu seperti chip FTDI untuk menyederhanakan apa yang turun kabel). Semua protokol pemrograman mewah akan ditangani oleh perangkat lunak di komputer, dan perangkat kerasnya hanya berupa kabel.

Mengapa kita melibatkan perangkat lunak dan perangkat keras (rumit)? Maksud saya, sejauh yang saya tahu, pemrograman mikrokontroler cukup mudah, tetapi ketika saya baru saja membahas ini, saya benar-benar khawatir tentang bagaimana saya akan pernah membeli sebuah chip dari mouser atau digikey tanpa membayar beberapa guru untuk memprogram bootloader untuk saya.

Saya yakin ada alasan yang bagus (tidak seperti saya telah menulis perangkat lunak atau mulai membuat programmer USB drag-n-drop), tetapi sebagai pendatang baru, saya tidak tahu apa itu.


Apakah programmer perangkat keras buatan rumahan Anda mengizinkan debugging? Anda mungkin pemrograman baik-baik saja, tetapi akan membutuhkan programmer perangkat keras jika Anda ingin melakukan debugging on-chip (pengaturan breakpoints dalam kode dan menghentikan eksekusi ketika Anda mencapai titik itu) karena operasi itu mungkin melakukan hal-hal lucu dengan garis reset.
Joel B

1
Sesuatu yang dapat membuat Anda terhibur, hackaday.com/2013/05/10/…
binarysmacker

Jawaban:


18

Anda benar, pemrograman AVR cukup mudah. Itu hanya protokol khusus yang diterapkan di atas SPI, berjalan pada tegangan rendah. SCK dibutuhkan.

Namun, pemrograman PIC yang lebih lama (dan pemrograman non ISP AVR) memerlukan voltase tinggi dan protokol khusus yang berbeda. Ini memerlukan programmer perangkat keras khusus.

Perangkat lain lebih kompleks. Sebagian besar mikrokontroler ARM harus diprogram melalui JTAG, di sini memori sedang ditulis secara langsung dan prosesor diperintahkan untuk menulis ke flash. Sekali lagi, setiap perangkat berbeda.


Adakah ide mengapa itu jauh lebih kompleks? Cara AVR (Tegangan rendah, protokol standar) tampaknya jauh lebih masuk akal daripada membutuhkan pemrogram khusus (seperti orang ini dengan pemrogram yang membutuhkan 8.051/8052 - bantuan yang diinginkan, perwakilan yang tersedia! Electronics.stackexchange.com/questions/4104 )
Kevin Vermeer

2
Sebenarnya tidak ada sesuatu yang istimewa atau mahal tentang programmer PIC; banyak desain tersedia secara online, dan sebagian besar PIC baru dapat diprogram dengan tegangan rendah.
akohlsmith

4
Pabrikan IC tidak terlalu peduli tentang betapa kompleksnya sesuatu yang bisa digunakan oleh penggemar. Selama itu dapat digunakan dalam produksi jumlah besar, itu semua tentang biaya.
endolith

2
Pemrograman tegangan tinggi pertama kali ada di sana, itu adalah cara untuk memprogram EPROM yang dapat dihapus UV pada tahun delapan puluhan (dan mikrokontroler yang mengandung EPROM seperti itu).
starblue

Memperbaiki klaim SCK. Saya menyukai gagasan bahwa hanya SPI yang diperlukan, tetapi karena komputer tidak memiliki port SPI (dan heck kabel FTDI sudah memiliki chip $ 4 di dalamnya !!) Kita mungkin juga berbelanja secara royal pada mikrokontroler $ 2. Argumen unggah dan debug JTAG telah menjual saya pada manfaat papan pengembangan secara umum, dan saya pikir endolith memiliki poin yang baik bahwa tidak ada yang peduli dengan apa saya menghabiskan $ 20 saya; produsen peduli pada apa yang akan digunakan oleh insinyur asli (dan majikan mereka).
Jack Schmidt

5

Saya melakukan banyak riset dan bersiap untuk mulai bermain dengan AVR, tetapi saya tidak pernah benar-benar menggunakannya, jadi ini mungkin salah, tetapi:

Kebanyakan programmer murah tidak akan mendukung pemrograman tegangan tinggi AVR. Ini diperlukan jika controller diatur menjadi nonprogrammable menggunakan bit sekering atau jika Anda entah bagaimana membuat beberapa bug serius dan perlu mengatur ulang ke default dan sebagainya.


2
Pemrogram bertegangan rendah seperti AVRISP mkII [1] atau USBtinyISP [2] dapat digunakan untuk mengatur sekering dengan avrdude atau pemrogram lain, tetapi mereka tidak dapat menyimpan chip AVR yang telah dibuat tidak dapat di-boot atau memiliki garis reset yang diubah menjadi sebuah GPIO. Anda memang membutuhkan programmer tegangan tinggi untuk hal semacam itu. [1] mouser.com/search/… [2] ladyada.net/make/usbtinyisp
blalor

@blalor Mengingat informasi ini, saya akan mengedit jawaban saya.
AndrejaKo

Saya memang melihat beberapa instruksi untuk membuat programmer tegangan tinggi (dan lembar data untuk chip tampaknya memiliki instruksi yang cukup rinci tentang merancang satu), tetapi saya menunggu sampai saya bata salah satu chip saya sampai saya mencobanya. Osilator saya tiba di sini besok, jadi saya akan membakar sekering dan segera menggoda peri bata!
Jack Schmidt

Perlu dicatat bahwa avrdude memeriksa ulang bit sekering Anda untuk mencegah masalah ini. Masalah yang sedikit lebih umum adalah mengatur chip ke jam eksternal.
Yann Vernier

4

Sebagian besar programmer AVR murah hanya menyinkronkan antarmuka serial dengan garis reset. Anda dapat menggunakan FT232 untuk bitbang keluar Serial Peripheral Interface (SPI). FT232 dirancang untuk serial async tidak disinkronkan sehingga semuanya dilakukan dalam perangkat lunak.

Anda bisa mengunggah bootloader seperti arduino yang memungkinkan Anda untuk mengunggah kode melalui antarmuka serial async menggunakan ft232 dalam mode normal atau antarmuka serial async menggunakan konverter level sesuai kebutuhan. Hanya saja, jangan lupa untuk menggunakan bootloader yang tepat untuk kecepatan jam Anda dan untuk mengatur byte sekering dengan benar.


1

Banyak perangkat yang dapat diprogram secara historis mengharuskan mereka diprogram menggunakan urutan sinyal yang relatif tepat waktu. Dalam banyak kasus, jika seseorang hanya ingin memprogram satu jenis perangkat tertentu, perangkat keras yang diperlukan akan cukup sederhana, tetapi karena perangkat yang berbeda memiliki persyaratan yang berbeda, membangun programmer yang lebih umum untuk keperluan umum agak lebih sulit.

Saat ini, seseorang mungkin dapat memprogram lebih dari 50% perangkat yang dapat diprogram menggunakan tidak lebih dari kabel I / O USB dan perangkat lunak PC, tetapi programmer "perangkat keras" masih memiliki keunggulan kecepatan yang cukup besar. Agar PC bereaksi terhadap sinyal yang diterima oleh perangkat USB dan mengirim respons, biasanya membutuhkan waktu minimal 1-2 milidetik. Jika urutan pemrograman berulang kali meminta perangkat kapan siap untuk potongan data berikutnya dan kemudian mengirimkannya, menggunakan kabel I / O sederhana akan menambah satu atau dua milidetik tambahan untuk waktu yang diperlukan untuk menangani setiap potongan. Bergantung pada sifat perangkat yang dipermasalahkan, hal itu dapat meningkatkan waktu keseluruhan yang diperlukan untuk pemrograman dengan urutan besarnya dibandingkan dengan programmer yang dapat diberi tahu, sambil menunggu perangkat siap, apa yang harus dilakukan setelah itu.

Secara pribadi, saya suka pendekatan memiliki perangkat yang dilengkapi flash dikirimkan dari pabrik dengan boot-loader di memori yang dapat digunakan dengan minimum perangkat keras pemrograman. Jika perangkat mendukung pemrograman flash di bawah kendali perangkat lunak, pendekatan seperti itu dapat menyederhanakan produksi tanpa menambahkan apa pun pada biaya silikon di luar waktu marginal yang sangat kecil yang diperlukan untuk memiliki program perlengkapan uji pabrik di boot-loader setelah melakukan semua hal lain. .

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.