Bagaimana jika Anda sudah mempelajari cara memprogram mikrokontroler?

Hi Khabrovchanin,



Pada artikel ini saya ingin berspekulasi tentang bagaimana mengembangkan programmer mikrokontroler. Artikel ini adalah bahan bacaan kecil bagi mereka yang, seperti saya dulu, tidak tahu ke mana harus mengembangkan profesinya lebih jauh. Mungkin Anda bisa mengambil sesuatu yang menarik di sini.



Saat ini saya telah bekerja sebagai programmer selama 3 tahun, dan sampai saat ini, saya tidak melihat apa yang harus saya lakukan selanjutnya. Namun, kemudian saya bertemu seseorang dengan pengalaman 20+ tahun dalam pemrograman sistem tertanam, dan saat berkomunikasi dengannya, saya mengidentifikasi beberapa aspek yang dapat Anda kembangkan. Di sini saya ingin membagikannya, serta pengalaman pribadi saya. Saya tidak ingin mengajari siapa pun, saya hanya akan membagikan praktik terbaik saya, dan Anda dapat memutuskan sendiri apakah tips ini berguna atau tidak.



Setiap bulan ada artikel lain untuk pemula dengan LED yang berkedip. Pada gilirannya, tidak ada artikel untuk programmer menengah. Di sini saya ingin menunjukkan bahwa pemrograman mikrokontroler dengan benar bukanlah tugas yang sepele. Ini tidak bisa dipelajari dalam beberapa tahun. Pada tahun 2020, ini tidak jauh berbeda dengan tugas pemrograman sistem konvensional, karena MC menjadi lebih bertenaga dan lebih bertenaga. Tentu saja, saya berbicara tentang proyek jutaan baris atau lebih.



Sepertinya perkenalannya agak tertunda, jadi saya akan turun ke bisnis. Pada artikel ini, hanya aspek pemrograman yang akan dipertimbangkan, saya tidak menyentuh sirkuit. Saya mencoba untuk mengutamakan item, tetapi perbedaan antara yang pertama dan yang terakhir kecil, semua item itu penting.



1. Pelajari bahasa C ++.

Ini adalah nasihat yang sepele, namun saya merasa perlu untuk menyorotnya. Faktanya adalah bahwa hampir semua orang yang saya kenal terus memprogram dalam C murni bahkan sekarang. Mengapa itu buruk? Menurut berbagai sumber, sebuah proyek dengan lebih dari 100.000 baris (yang bukan jumlah yang besar) praktis menjadi tidak didukung di C. Pada tahun 2020, kompiler untuk MK mencapai tingkat kompilasi kode sumber sedemikian rupa sehingga pembuangan dari C dan C ++ tidak akan berbeda. Tetapi pembacaan kode akan sangat berbeda. Kelas, OOP, fungsi virtual, petunjuk cerdas, dll. - semua ini adalah asisten yang hebat bagi programmer. Sayangnya, tidak mungkin untuk memilih dan merekomendasikan satu buku, karena jumlahnya terlalu banyak.



2. Mempelajari pola desain.

Bukan rahasia lagi bahwa menulis program C ++ yang baik masih menjadi tantangan. Bahasa ini terlalu luas, mengandung terlalu banyak alat. Apa itu pola desain? Ini adalah semacam panduan untuk menyelesaikan tugas yang sering berulang. Di sini saya dapat merekomendasikan sebuah karya klasik, yaitu karya empat geng "Pola desain berorientasi objek Gamma Erich, Helm Richard". Sulit untuk menemukan programmer C ++ biasa yang belum membaca ini, mengapa kita lebih buruk?



3. Temukan dunia STL yang menakjubkan

Saya pikir perpustakaan ini tidak perlu diperkenalkan. Bagi yang masih belum tahu apa itu, ini adalah pustaka templat standar. Ini memungkinkan Anda untuk membuat kode Anda lebih pendek dan lebih mudah dipahami melalui pemrograman generik. Alat ini sudah terpasang di C ++. Namun, untuk beberapa alasan yang tidak diketahui, sangat sulit menemukan proyek untuk MK, di mana proyek itu digunakan. Meskipun kompiler modern (IAR yang sama) mendukungnya.



4. Tambahkan tes Unit ke proyek Anda.

Di sini saya tidak punya sesuatu yang istimewa untuk ditulis. Karya yang tak terhitung jumlahnya telah ditulis tentang apa itu dan mengapa. Pengaruh pengujian unit dan pengembangan melalui pengujian adalah signifikan. Tes ini memungkinkan Anda menemukan banyak bug bahkan sebelum perbaikan dikirim ke OT. Selain itu, ada buku bagus tentang subjek ini: Jeff Langr - Modern C ++ Programming with Test-Driven Development (2013).



5. Jelajahi Kernel

Meskipun kami memprogram mikrokontroler yang berbeda, kebanyakan dari mereka memiliki kernel seri CortexM. Kernel memiliki banyak fitur berbeda, seperti bitmask atau pengatur waktu debug. Semua ini bisa berguna. Hal ini juga berguna untuk mengetahui bagaimana RON disimpan saat terputus, misalnya. Di sini saya dapat merekomendasikan "inti ARM Cortex-M3. Panduan Lengkap oleh Joseph Yu. "



6. Pelajari Assembler

Ini mungkin tampak konyol, tetapi saya pikir mengetahui assembler untuk aplikasi debugging itu penting. Ditambah lagi, cukup menyenangkan untuk menulis. Dengan bantuan Assembler, Anda dapat dengan jelas memahami apa yang terjadi pada breakpoint khusus ini. Buku dari paragraf sebelumnya juga cocok di sini.



7. Beberapa kata tentang IDE

Baru-baru ini saya beralih ke bundel VS + VGDB. Paket ini memiliki banyak keuntungan, dan bersama-sama mereka melebihi satu-satunya keunggulan IAR, ukuran biner. Di gcc, Anda dapat menyetel tanda untuk peringatan tambahan, serta tanda bahwa peringatan tersebut harus dianggap sebagai kesalahan (Omong-omong, IAR juga memiliki ini). Dengan pendekatan ini, IDE Anda sendiri membantu Anda membuat kode dengan rapi. Ada artikel bagus tentang ini .di habr. Ngomong-ngomong, saya telah menemukan perusahaan yang, untuk tugas tes (selama wawancara), wajib menulis kode dengan tanda ini.



Mungkin itu saja. Mudah-mudahan, jika Anda mengikuti tautan tersebut, Anda menemukan apa yang Anda cari. Silakan bagikan di komentar tentang jalur pengembangan lain yang dapat dimiliki pemrogram tersemat.



PS Pada artikel ini terdapat hal-hal yang tidak disebutkan, misalnya pemrograman peripheral yang kompleks melalui register atau RTOS. Diasumsikan bahwa pembaca sudah memiliki keterampilan tersebut, atau setidaknya mengetahui keberadaannya.



All Articles