Mengapa saya harus belajar arsitektur mikrokontroler? [Tutup]

8

Saya baru-baru ini mulai bekerja di sebuah perusahaan kecil yang memproduksi barang elektronik terkait diagnosa otomotif. Bos saya, yang berusia pertengahan 50-an, mengatakan bahwa ia menggunakan 8051 turunan, dan mereka melakukan pekerjaan itu. Saya pergi mencari Google untuk mengetahui apakah 8051 masih populer hingga saat ini. Dan di Quora, saya melihat ini:

... mungkin arsitektur MCU paling sederhana di sekitar. Setiap perangkat tampaknya seperti versi telanjang-tulang. Konsep timer, clocking, UART, dll. Saya banyak dibersihkan! Dan, saya kemudian mulai menghargai arsitektur lain - karena saya benar-benar memahami perbedaannya.

... jelas, itu tidak akan digunakan oleh industri mana pun untuk mengembangkan suatu produk karena kesederhanaannya ...

Tapi kenapa? Sejauh ini, setidaknya sebagai seorang mahasiswa, saya biasa melakukan banyak hal tanpa mengacaukan arsitektur. Saya dengan senang hati memberikan kode C, saya menggunakan periferal LCD, terhubung ke IC lain dengan protokol yang berbeda (SPI, I2C dll.)

Mengapa saya harus repot dengan arsitektur mikrokontroler saya, terlepas dari bidang terbatas aplikasi real-time & kritis waktu?

CK
sumber
3
Entah untuk bersenang-senang, atau karena Anda perlu melakukan proyek dengan arsitektur seperti itu, jelas.
PlasmaHH
Hari ini 8.051 adalah level hobi paling banyak. Di sisi lain, jika Anda mulai bekerja dengan sesuatu yang moderat seperti ARM Cortex M4, Anda tidak benar-benar perlu mempelajari arsitekturnya. Paling tidak untuk memulai
Gregory Kornblum
@PlasmaHH Saya berharap saya punya cukup waktu untuk "bersenang-senang" dengan setiap topik tunggal tentang elektronik, tetapi itu sudah ada di tahun-tahun mahasiswa saya :)
CK
6
Anda perlu mengetahui arsitektur saat Anda membutuhkan kinerja, yang mungkin tidak akan terjadi. Sebagai contoh, jika Anda perlu melakukan perhitungan berulang-ulang, dan Anda memiliki waktu terbatas, Anda mungkin diharuskan untuk tidak menggunakan data yang disimpan dalam flash, atau mengoptimalkan penggunaan register. Tetapi itu terjadi hari ini hanya untuk sejumlah profesional yang sangat terbatas. Anda akan membutuhkan waktu untuk sampai ke sana. Untuk saat ini saya tidak akan membuat kesalahan dengan asumsi hanya menulis C sudah cukup untuk tahun-tahun mendatang Anda.
Gregory Kornblum
2
Saya akan menyerahkannya kepada mereka yang mungkin tahu lebih baik :)
Gregory Kornblum

Jawaban:

30

Apakah 8051 dan mikrokontroler bit-rendah lainnya masih digunakan saat ini?

Ya, hampir di mana-mana. Mereka kecil dan mudah, ada banyak inti mengambang di sekitar yang dapat Anda masukkan ke silikon kustom Anda dengan biaya rendah atau tanpa biaya, ada kompiler matang. Ini semua membuat 8051 masih menjadi salah satu arsitektur inti paling populer di antara produsen silikon. Core ARM mungkin tersedia dalam produk yang lebih berbeda, tetapi sekali lagi, ketika Anda berbicara dengan seseorang yang membangun banyak perangkat dengan batasan harga yang sangat ketat, kemungkinan dia akan lebih memilih inti 8.051 yang lebih murah / gratis jika menyelesaikan pekerjaannya . Hanya untuk menentang klaim @ Nitro2k01 tentang penggunaan khusus: Mouser memiliki hampir 800 model 8.051 mikrokontroler pada persediaan ¹. Dan fakta bahwa ini dimulai, bahkan di Mouser, dengan harga di bawah 40ct mungkin merupakan indikasi untuk apa mereka digunakan:

MCU umum, berkinerja rendah, dan bervolume tinggi

jadi:

... jelas, itu tidak akan digunakan oleh industri mana pun untuk mengembangkan suatu produk karena kesederhanaannya ...

adalah omong kosong mengucapkan berkualitas tinggi. Terutama karena Anda sendiri memberikan contoh tandingan

Bos saya, yang berusia pertengahan 50-an, mengatakan bahwa ia menggunakan 8051 turunan, dan mereka melakukan pekerjaan itu.

Persis! Mereka digunakan di mana-mana, sudah terbukti dan murah, dan cukup ; jangan pernah meremehkan keuntungan memiliki solusi untuk masalah umum di laci di suatu tempat!

Tentu saja, sering kali Anda perlu solusi dengan katakanlah dua bus otomotif khas, antarmuka berkecepatan tinggi ke ADC, beberapa pengatur waktu pengawas yang andal, tiga unit PWM ... dan kemudian Anda mulai menyatukan sesuatu yang terdiri dari empat 8051 dan 8080 turunan .. eh. Itu adalah situasi yang buruk, dan sangat mungkin dapat diselesaikan lebih cepat dan lebih dapat diandalkan menggunakan MCU tunggal, lebih fleksibel, lebih kuat (misalnya ARM). Tetapi bahwa "kita memiliki pengetahuan perusahaan tentang bagaimana sesuatu bekerja dengan teknologi lama" vs "kita adalah bukti masa depan dengan memiliki kemampuan untuk berjalan pada perangkat keras modern" adalah tradeoff keamanan investasi klasik. Jika Anda menemukan salah satu dari proyek semacam itu, saya akan mencoba berbicara dengan bos dalam konteks itu. Untuk pekerjaan kecil yang mudah, ya, 8.051.

Haruskah saya belajar tentang arsitektur MCU secara umum?

Iya! Saya pikir @jfkowes menjelaskan dengan sangat baik. Tapi jujur: ini seperti bertanya "haruskah saya belajar bagaimana mesin pembakaran internal bekerja jika saya ingin menjadi mekanik mobil"; jawabannya adalah "Anda mungkin hidup dengan baik jika Anda bisa menjalankan manual perbaikan dengan cukup baik, tetapi Anda mungkin akan menjadi teknisi yang jauh lebih baik (biarkan insinyur sendiri) jika Anda mengerti apa yang perangkat keras Anda lakukan.

Segera setelah Anda menghadapi masalah yang tidak dapat di-google, Anda akan menjadi kura-kura yang cukup banyak jika Anda tidak memahami cara kerja prosesor Anda.

Haruskah saya belajar arsitektur 8051?

Mungkin tidak. Dalam arti bahwa, ya, selama biaya bukan fokus utama Anda, Anda kemungkinan besar dapat menggunakan MCU yang lebih kuat dan serbaguna berdasarkan inti ARM atau arsitektur lainnya yang lebih modern.

Kemudian lagi, inti 8051 sangat mudah sehingga saya benar-benar merekomendasikan untuk memahami apa unit-unitnya sebelum mencoba menangani inti MCU yang lebih modern, kompleks. Ini contoh yang bagus.

Jadi jika 8051 tidak inti Saya mencari dalam aplikasi volume rendah, apa yang sedang saya cari?

Jadi, secara pribadi: gunakan ARM Cortex-M0, -M3, -M4F; ini berlimpah dalam semua jenis mikrokontroler yang terjangkau, mudah diprogram (yay, dukungan GCC dewasa, lib standar CMSIS, banyak OS tertanam yang menjalankannya), dan umumnya datang dengan antarmuka debug standar (yang merupakan nilai tambah yang bagus).

ARM, dari luar, biasanya relatif mudah dipahami, karena Anda biasanya memetakan setiap perangkat ke ruang memori, dan hanya itu. Secara internal, mereka memiliki berbagai tingkat kecanggihan, dan optimisasi kecepatan / kekokohan / ukuran, menjadikannya tidak sepenuhnya mudah dimengerti secara detail, tapi saya rasa itu mungkin agak banyak ditanyakan kecuali Anda tertarik dengan desain CPU.

Jika Anda tertarik dengan desain CPU, saya pikir (ini benar-benar kepercayaan pribadi berdasarkan pengamatan saya terhadap aktivitas penelitian dan investasi industri yang "dijanjikan") saat ini kami sedang mengamati munculnya ISA penting baru - RISC-V. Ada berbagai implementasi arsitektur ini untuk FPGA atau silikon, dan orang-orang seperti Nvidia tampaknya juga bermain-main dengan mengganti multiprocessor aliran mereka dengan core semacam ini.


¹: Sangat mungkin saya kehilangan lebih dari setengah dari 8051 yang sebenarnya yang dimiliki mouser (karena, hei, saya baru saja memilih semua MCU yang nama intinya adalah * 80 * 5 *). Kemungkinannya adalah jika Anda memilih mikrokontroler 8bit acak, kemungkinan intinya setidaknya sebagian berasal dari 8.051. Maksud saya, lihat saja "daftar [8051] vendor turunan wikipedia" dari wikipedia .

Marcus Müller
sumber
AVR juga merupakan arsitektur pembelajaran yang hebat, dengan dokumentasi yang luar biasa dan dukungan gcc.
chrylis -cautiouslyoptimistic-
@Chrylis benci untuk tidak setuju, tapi saya pribadi tidak berpikir ATMega 8bitters adalah arsitektur yang hebat, dokumentasi atau dukungan GCC mereka juga luar biasa dibandingkan dengan ARM cortex m0, yang dengannya mereka bersaing. Tapi itu pendapat pribadi!
Marcus Müller
1
@ MarcusMüller Setelah beberapa pengalaman dengan Atmel, saya tidak akan pernah menggunakannya lagi (kecuali untuk hobi.) Atmel bergantung pada aktivitas penghobi untuk mendukung bisnis yang lebih kecil dari "ukuran" tertentu - yang saya selalu lebih kecil dari itu, karena qtys kami tidak pernah melebihi 6000 setahun. FAE bagus, tapi itu tidak membantu dengan Prancis (AT91) dan jadi saya biarkan saja. Microchip, di sisi lain, telah mendukung saya ke level hebat yang gila apa pun proyeknya. Mendukung prof mereka. alat "selamanya" dan bahkan chip lama masih dibuat. Atmel sekarang dibeli oleh Microchip. Jadi mungkin berubah di sana dan saya akan melihat lagi.
jonk
1
@jonk begitu, sedangkan PIC / microchip memiliki reputasi layanan yang baik dan mungkin bertahan sendirian, ekstensi portofolio Atmel mungkin datang ke sebuah kios. Dan, harapan saya untuk dekade berikutnya: Seperti yang telah kita bahas di komentar untuk jawaban lain beberapa waktu lalu, jika terbukti benar bahwa "layanan antar-jemput" wafer menjadi lebih dan lebih terjangkau, dan dengan 32bit yang sangat kompetitif / opsional 64bit / opsional RT menjamin arsitektur seperti RISC-V dalam berbagai ukuran dan kecepatan (sebagaimana diterapkan sebagai core dengan nama BOOM, Rocket-chip, atau PicoRV32), "heck, saya punya masalah khusus, saya bisa mendapatkan MCU khusus" akan…
Marcus Müller
1
@ MarcusMüller One bisa berharap. Jika semuanya menghidupkan dukungan pelanggan, Microchip hanya membantai semua orang. Saya punya alat profesional, 12 tahun, di mana saklar daya menjadi "serpihan." Saya menelepon untuk menanyakan apakah mereka bisa memberi saya nomor bagian sakelar sehingga saya bisa memesan satu dan memperbaiki unit. Sebagai gantinya, mereka meminta saya mengirim unit pengganti, mengirimkannya kepada saya dan sebuah kotak untuk mengembalikan mereka yang lama, dan tiba pada pagi berikutnya! Tanpa biaya. Saya bertanya, "Apakah Anda perlu bukti pembelian?" Mereka berkata, "Tidak. Kembalikan unit yang lain. Hanya kepemilikan fisik yang kita butuhkan." Benda terkutuk itu kuno.
jonk
12

Secara umum, berikut adalah beberapa alasan bagus untuk mempelajari (atau setidaknya memiliki pengetahuan tentang) arsitektur mikrokontroler yang Anda gunakan.

Peringatan: dalam konteks pekerjaan Anda, perusahaan, aplikasi, perangkat keras terkait dll, mungkin ada alasan mengapa Anda tidak harus mempelajari arsitektur tertentu yang Anda gunakan saat ini.

Debugging

Saat pustaka tingkat tinggi bekerja, Anda mungkin tidak perlu tahu arsitekturnya. Ketika Anda mulai mengalami masalah, mengetahui bagian dalam mikrokontroler Anda dapat banyak membantu untuk mengisolasi dan memperbaiki masalah tersebut dengan cepat.

Efisiensi dan Kesederhanaan Kode

Jika Anda tahu arsitekturnya, Anda mungkin dapat memindahkan fungsionalitas dari perangkat lunak ke perangkat keras. Ini berpotensi mengurangi beban perangkat lunak dan menghapus sumber bug.

Pengurangan biaya

Pengetahuan arsitektur dapat mengurangi penggunaan program dan memori data dan beban prosesor. Ini mungkin berarti Anda dapat memilih mikrokontroler dengan sumber daya lebih sedikit, berpotensi mengurangi biaya.

Meningkatkan kegunaan Anda

Bahkan jika Anda tidak menggunakan pengetahuan itu sekarang, diskusi dengan kolega / vendor / teknisi pendukung, dll. Mungkin akan membahasnya. Misalnya, sesuatu yang Anda tahu mungkin membantu orang lain mengatasi masalah yang mereka alami. Menyelamatkan hari adalah sesuatu yang diingat orang.

Pengetahuan adalah kekuatan

Bahkan jika Anda tidak memerlukan pengetahuan dalam pekerjaan Anda saat ini, ketika Anda melihat iklan untuk pekerjaan yang terlihat menakjubkan yang mengatakan "Pengetahuan tentang arsitektur <mikrokontroler keluarga> diperlukan / disukai" , Anda akan berada dalam posisi yang lebih baik pergi untuk itu.

jfowkes
sumber
Kemudian lagi, saya tidak tahu apakah Anda akan sering membaca kalimat itu dalam iklan pekerjaan - ini semacam pengetahuan yang misterius, dan siapa pun yang paling tidak tahu tentang arsitektur CPU apa pun dapat mengambil 8051 dalam tiga hari pertamanya pekerjaan, saya kira
Marcus Müller
Poin baiknya, saya sudah mengeditnya agar lebih umum.
jfowkes
7

Apakah 8051 dan mikrokontroler bit-rendah lainnya masih digunakan saat ini?

Ya, meskipun sebagian besar untuk kasus penggunaan niche. Mereka sebagian besar digunakan untuk tugas-tugas sederhana, dalam produksi massal, produk yang digerakkan oleh biaya, atau di mana rekam jejak yang terbukti diinginkan. Mereka sering dilisensikan dan diintegrasikan ke solusi chip tunggal. Karena arsitekturnya yang sederhana, mudah untuk mengintegrasikannya dengan periferal khusus pada chip yang sama. Keuntungan lain adalah bahwa mereka dapat diproduksi di area kecil dengan teknik manufaktur semikonduktor yang lebih tua (dan lebih murah).

Salah satu contohnya adalah dalam chip kontrol dalam kartu pintar, yang sering menggunakan inti 8.051 atau serupa dengan ekstensi perangkat keras kriptografis. Anda mungkin akan menemukan inti mikrokontroler 8-bit dalam hal-hal seperti pengontrol untuk monitor sikat gigi listrik pintar. ECU kendaraan sering menggunakan mikrokontroler 8-bit, bersama dengan 32-bit, sebagai pengawas karena keandalannya yang lebih tinggi dan kompleksitas yang lebih rendah.

Haruskah Anda mempelajarinya?

Terlepas dari kemungkinan Anda benar-benar berakhir dalam situasi di mana pengetahuan tentang arsitektur tertentu diperlukan, saya berpendapat bahwa itu adalah keterampilan yang berguna secara umum. Bahkan jika Anda memprogram C dalam pekerjaan Anda sehari-hari, memiliki pemahaman umum tentang apa yang terjadi pada "satu tingkat di bawah" berguna. Saat memecahkan bug aneh atau masalah kinerja, mungkin akan jauh lebih mudah untuk menentukan masalah jika Anda memiliki pemahaman umum tentang perangkat keras yang mendasarinya. Anda juga bisa lebih mudah menganalisis keluaran bahasa rakitan dari kompiler C. Mempelajari satu arsitektur juga akan memudahkan mempelajari yang berbeda di masa mendatang. Keterampilan ini juga dapat membantu Anda menulis kode yang lebih baik bahkan untuk core CPU yang lebih modern.

nitro2k01
sumber
Saya sedikit tidak setuju dengan klaim "Niche"; lihat jawaban saya di bawah ini :) tetapi tetap saja, jawaban Anda adalah jawaban yang bagus!
Marcus Müller
1

Anda dapat belajar banyak tentang desain digital melalui mempelajarinya. Elektronik digital dibangun menggunakan dua hal. Pertama adalah logika, interkoneksi elemen-elemen AND, OR, NOT yang mengimplementasikan ekspresi logis. (Dalam praktiknya, elemen logis lain seperti NAND sebenarnya digunakan, tetapi AND, ATAU dan TIDAK lebih mudah dipahami.) Kedua adalah elemen memori yang dapat menampung satu atau lebih bit. Ketika elemen memori diperkenalkan, perangkat dapat memiliki apa yang disebut keadaan . Kombinasi bit yang berbeda dalam elemen memorinya sesuai dengan status yang berbeda.

Pertimbangkan mesin penjual otomatis yang dimulai pada kondisi 0 dan pindah ke kondisi lain setiap kali koin dimasukkan. Dengan melakukan hal itu mesin dapat melacak jumlah total uang, tahu kapan cukup uang telah dimasukkan dan tahu berapa banyak perubahan untuk kembali.

Untuk merancang sirkuit mesin, dimulai dengan diagram keadaan dengan panah yang menunjukkan transisi ke keadaan lain bersama dengan kondisi yang memicu mereka. Untuk setiap panah, ekspresi logis mengidentifikasi suatu kondisi. Seseorang kemudian dapat mengetahui apa semua ekspresi ini dan menerapkannya dengan elemen-elemen logika.

Untuk mesin penjual otomatis, ini tidak terlalu sulit. Untuk pengontrol yang kompleks, ini menjadi jauh lebih sulit. Mikrokontroler adalah cara cepat dan mudah untuk melakukan hal yang sama. Pertimbangkan "memori" yang (dalam arti byte atau kata) adalah lebar k bit dan memiliki n baris alamat yang menghasilkan 2 ^ n lokasi dalam memori. Memori ini diprogram dengan desain dan hanya-baca dalam praktik. Perhatikan bahwa menggunakan bit alamat memori sebagai "input" dan bit data sebagai output, memori dapat diprogram untuk mewujudkan fungsi logis apa pun.

Menambahkan register juga lebar k bit untuk menampung konten dari lokasi memori menghasilkan mesin negara.

Jika k bit dibagi menjadi, misalnya opcode dan alamat. Set bit opcode mengontrol bagian-bagian lain dari rangkaian (seperti mengeluarkan produk mesin penjual otomatis) dan yang lainnya adalah alamat memori selebar n bit, setiap set bit k menjadi instruksi mikro dengan kemampuan percabangan.

Tambahkan ke beberapa logika aritmatika ini, beberapa register (di mana satu atau lebih dari itu mengambil input kontrol untuk bergeser ke kiri dan kanan) dan Anda dapat membangun CPU yang instruksi mesinnya diimplementasikan dengan urutan microinstructions.

Pada 1970-an dan 1980-an sejumlah komputer yang sukses dibangun menggunakan desain ini. Salah satunya (Digital Equipment's VAX 11) memiliki instruksi mesin untuk menghitung polinomial integer, yang dimaksudkan untuk perhitungan alamat (think array). Ternyata instruksi tersebut dapat diimplementasikan lebih cepat menggunakan instruksi yang lebih sederhana.

Mikrokontroler dapat dan biasanya merupakan, implementasi yang kurang efisien daripada mesin negara tradisional. Tetapi mereka dapat dengan mudah diubah, lebih cepat untuk dirancang dan merupakan solusi pengontrol yang hebat.

Stuart Wilson
sumber