Jadi aku ingin belajar Majelis pertama pada seorang anggota parlemen, kemudian pindah ke C (karena tampaknya seperti itu yang apa yang kebanyakan dari mereka menggunakan).
Saya ingin masuk ke Pemrograman Tertanam, saya benar-benar menyukai hal-hal tingkat rendah C (Kernel / Modul untuk Linux terutama apa yang telah saya lakukan), tapi saya suka gagasan untuk dapat memprogram tingkat lebih rendah dari itu (Microcontrollers / Mikroprosesor).
Aku tahu tentang Arduino, dan itu besar dan semua, tapi aku tidak bisa menemukan banyak sumber daya untuk menggunakan Assembly dengan mereka. Atmel AVR tampaknya sangat populer (dan murah), tetapi ketika datang ke bagian perangkat keras yang sebenarnya (mengaitkannya di papan tempat memotong roti, dll.), Saya tidak menemukan banyak informasi.
Setiap saran / informasi atau sumber daya yang kalian ketahui silakan beri tahu saya.
Edit: Hal lain: Sepertinya semua buku Mikroprosesor saya baca (Biasanya AVRs) bicara tentang mikroprosesor itu sendiri, dan pemrograman itu. Tapi saya belum melihat buku yang benar-benar berbicara tentang menginstal semua komponen sendiri (mikroprosesor, memori, daya, dll). Jika saya dapat menemukan sesuatu yang menuntun saya, saya akan berbisnis. (Saya ingin belajar dari bawah ke atas.) Belum lagi saya tidak tahu bagaimana Anda akan berkomunikasi di antara mereka.
sumber
Jawaban:
Saya belajar tentang 68HC11 di perguruan tinggi. Mereka sangat sederhana untuk bekerja dengan tetapi jujur kebanyakan mikrokontroler bertenaga rendah akan serupa (AVR, 8051, PIC, MSP430). Hal terbesar yang akan menambah kompleksitas pemrograman ASM untuk mikrokontroler adalah jumlah dan jenis mode pengalamatan memori yang didukung . Anda harus menghindari perangkat yang lebih rumit pada awalnya seperti prosesor ARM high end.
Saya mungkin akan merekomendasikan MSP430 sebagai titik awal yang baik. Mungkin menulis sebuah program dalam C dan belajar dengan mengganti berbagai fungsi dengan inline assembly. Mulai sederhana, x + y = z, dll.
Setelah Anda mengganti fungsi atau algoritme dengan rakitan, bandingkan dan kontras bagaimana Anda mengodekannya dan apa yang dihasilkan oleh kompiler C Ini mungkin salah satu cara yang lebih baik untuk mempelajari perakitan menurut saya dan pada saat yang sama belajar tentang bagaimana kompiler bekerja yang sangat berharga sebagai programmer yang tertanam. Pastikan Anda mematikan optimisasi dalam kompiler C pada awalnya atau Anda mungkin akan sangat bingung dengan kode yang dihasilkan kompiler. Nyalakan secara bertahap optimisasi dan catat apa yang dilakukan kompiler.
RISC vs CISC
RISC berarti 'Pengurangan Set Instruksi Komputasi' itu tidak merujuk pada set instruksi tertentu tetapi hanya strategi desain yang mengatakan bahwa CPU memiliki set instruksi minimal. Beberapa petunjuk bahwa setiap melakukan sesuatu dasar. Tidak ada definisi teknis yang ketat tentang apa yang diperlukan 'untuk menjadi RISC'. Di sisi lain, arsitektur CISC memiliki banyak instruksi tetapi masing-masing 'melakukan lebih banyak'.
Keuntungan RISC yang disengaja adalah bahwa desain CPU Anda membutuhkan lebih sedikit transistor yang berarti lebih sedikit penggunaan daya (besar untuk mikrokontroler), lebih murah untuk dibuat dan laju jam lebih tinggi yang mengarah ke kinerja yang lebih besar. Penggunaan daya yang lebih rendah dan pembuatan yang lebih murah umumnya benar, kinerja yang lebih besar belum benar-benar sesuai dengan tujuan sebagai hasil dari perbaikan desain dalam arsitektur CISC.
Hampir semua core CPU RISC atau 'jalan tengah' desain hari ini. Bahkan dengan arsitektur CISC paling terkenal (atau terkenal), x86. CPU x86 modern secara internal RISC seperti core dengan decoder yang dibaut di ujung depan yang memecah instruksi x86 menjadi beberapa instruksi seperti RISC. Saya pikir Intel menyebut ini 'mikro-ops'.
Seperti yang (RISC vs CISC) lebih mudah untuk dipelajari dalam perakitan, saya pikir itu adalah melemparkan. Melakukan sesuatu dengan set instruksi RISC umumnya membutuhkan lebih banyak jalur perakitan daripada melakukan hal yang sama dengan set instruksi CISC. Di set instruksi sisi CISC lain yang lebih rumit untuk belajar karena jumlah yang lebih besar dari instruksi yang tersedia.
Sebagian besar CISC alasan mendapat nama buruk adalah bahwa x86 adalah dengan dan jauh contoh yang paling umum dan adalah sedikit berantakan untuk bekerja dengan. Saya pikir thats sebagian besar hasil dari instruksi x86 set menjadi sangat tua dan telah diperluas setengah lusin atau lebih kali tetap menjaga kompatibilitas. Bahkan core i7 4.5GHz Anda dapat berjalan di 286 modus (dan tidak di boot).
Adapun ARM menjadi arsitektur RISC, saya akan menganggap bahwa cukup diperdebatkan. Ini tentu saja arsitektur load-store. Set instruksi dasar seperti RISC, tetapi dalam revisi baru-baru ini set instruksi telah tumbuh sedikit ke titik di mana saya pribadi menganggapnya lebih sebagai jalan tengah antara RISC dan CISC. Petunjuk praktis set benar-benar paling 'RISCish' dari set instruksi ARM.
sumber
Saya pikir mikrokontroler PIC 8 bit adalah pilihan terbaik karena berkurangnya instruksi.
Efek samping dari berkurangnya jumlah instruksi adalah Anda harus menemukan kembali roda dibandingkan dengan mikrokontroler lainnya dengan lebih banyak instruksi.
Tetapi setelah belajar dengan PIC, Anda dapat bermigrasi ke mikrokontroler lain dan melihat apa yang lebih cocok untuk Anda.
sumber
Mirip dengan saran Markus dari 68HC11, The set instruksi dari Freescale 68HCS08 keluarga adalah versi slimmed-down dari Motorola 6809, yang saya pikir memiliki salah satu dari 8-bit instruksi set terbersih pada masanya. Anda bisa mendapatkan papan pengembangan dengan sakelar, LED, accelerometer 3-sumbu, dan bel piezo seharga $ 79 di sini .
sumber
The msp430 set instruksi adalah satu yang baik untuk belajar assembler pada. Hindari x86. Arm adalah salah satu yang baik lain tetapi memiliki lebih banyak instruksi dan pilihan dan tidak dapat paling cocok sebagai instruksi set pertama. Praktis adalah bagian dari lengan set instruksi dan tidak buruk, pada github saya memiliki jempol emulator (thumbulator) dan msp430 emulator (tidak diuji sebanyak satu ibu jari) yang barebone, hanya prosesor dan memori dan sedikit lebih , sehingga Anda bisa mendapatkan visibilitas yang baik ke dalam apa yang terjadi. Alternatif akan qemu misalnya di mana visibilitas ada tapi jauh lebih sulit untuk mendapatkan, juga dengan qemu seperti solusi dibutuhkan lebih banyak pekerjaan sebelum Anda mengetahui jika Anda memiliki sesuatu kerja.
goto mspgcc4.sf.net untuk membangun toolchain, dan / atau saham binutils (./configure --target = msp430 --prefix = / sesuatu) dalam kombinasi dengan llvm saham. Setelah Anda siap untuk hardware biaya papan msp430 pengembangan di bawah 5 dolar. Untuk lengan / alat praktis hanya mendapatkan versi lite dari codesourcery. Sebuah korteks-m3 (ibu jari / thumb2) papan adalah sekitar 12 dolar sekarang. Saya akan menghindari x86 dan AVR dan lain-lain sebagai instruksi set pertama, Anda akan ingin belajar lain untuk menjadi berpengetahuan luas. Tua / asli pic set instruksi adalah sesuatu yang layak melihat juga. Anda bisa menulis simulator sendiri di sore untuk itu serta belajar assembler. Saya tidak akan mempelajarinya pertama tentu, hal ini mengajarkan beberapa hal menarik, tetapi pada skala waktu doesnt sama dan isnt selalu mewakili umum fitur yang Anda temukan di sebagian besar instruksi set. msp430 memberiku nuansa pdp11 yang merupakan instruksi pertama set Aku benar-benar belajar, keduanya telah baik bulat, sebagian besar fitur orthogonal. Kedua msp430 dan instruksi microchip pic set didokumentasikan di wikipedia, setidaknya sebagai referensi, untuk mendapatkan seluruh gambar mendapatkan lembar data / manual dari vendor yang akan menjelaskan setiap mendaftar dan menangani modus, ulang / boot, dll
sumber
Anda yakin ingin belajar Majelis? Bisakah Anda mengatakan mengapa? Hal ini cukup tugas, dan kurang dan kurang relavent atau berguna sekarang hari. Ini dari orang yang telah menulis di dalamnya dan bahkan program rakitan tangan (tidak ada assembler, linker, hanya kartu dengan set instruksi).
sumber
Saya juga belajar tentang 68HC11 di perguruan tinggi. Alih-alih mereka menyarankan ini daripada MPU / MCU lainnya, saya hanya ingin menunjukkan bahwa papan pengembangan yang kami gunakan memiliki program monitor. Jadi dari terminal bisu kita bisa melangkah melalui kode dan memeriksa register ... Saya sarankan ketika Anda tahu prosesor mana yang sesuai dengan kebutuhan Anda, Anda juga memeriksa papan pengembangan apa yang tersedia dengan program monitor.
sumber
Saya mengajar baik PIC (14-bit core) dan perakitan ARM. Kelas PIC saya katakan bahwa sekali mereka telah menguasai jeleknya arsitektur itu, mereka dapat mengambil hal lain. ARM (tidak Thumb yang / Cortex!) Adalah arsitektur yang sangat bagus untuk belajar perakitan. Kami menggunakan papan LPC2148.
sumber
Saya belajar 16-bit PIC perakitan dengan dsPIC33F. Rakitan prosesor cukup mirip C, karena mendukung pointer dan tiga operasi variabel (A = B + C, misalnya), yang membuat belajar dan beradaptasi lebih mudah.
sumber
Anda membingungkan mikrokontroler dan mikroprosesor di sini. AVR adalah garis mikrokontroler oleh Atmel, bukan sebuah mikroprosesor. Saya sarankan Anda pertama kali mencari di wikipedia untuk mendapatkan pemahaman yang lebih baik dari apa perbedaan antara ini. Pada dasarnya mikrokontroler adalah sistem yang lebih atau kurang lengkap, sedangkan mikroprosesor hanya cpu (maka mikrokontroler memiliki di dalam mikroprosesor).
sumber
Di universitas saya, kami diajarkan hardware desain / arsitektur bersama bahasa assembly (dua tangan saja di tangan, jelas) dengan MIPS (atau mungkin DLX ) arsitektur. Sejak itu, saya mencoba-coba perakitan PIC dan AVR sedikit di sekolah / kerja, dan semuanya sangat mirip. Saya pikir perakitan MIPS adalah titik awal yang bagus, karena bahasanya sangat sederhana, seperti arsitektur prosesor.
Lihat juga: buku ini . Bukan buku terbaik di dunia, tapi itu buku desain komputer standar untuk banyak universitas.
sumber
saran saya adalah siapa pun yang akan mulai belajar tentang mikrokontroler dan prosesor harus membaca buku yang menamai "kode bahasa tersembunyi dari komputer" jika Anda mempelajari bahwa Anda hampir ahli dengan prosesor dan untuk pemrograman, lebih baik gunakan poney prog programmer dan program dari Atmel studio6.1 dari Atmel situs resmi
sumber