Pelajari C, dan dapatkan papan pengembangan mikrokontroler yang murah, seperti MSP430 atau ARM Cortex, dan setidaknya tulis dan muat beberapa program C.
Saya memiliki gelar ilmu komputer dan latar belakang pengembangan perangkat lunak, sebagian besar pemrograman C ++ untuk game dan sekarang game dan aplikasi iOS, tetapi pekerjaan terakhir saya adalah pertunjukan semi-pro EE yang dimulai dengan melakukan banyak pemrograman firmware untuk sistem ARM Cortex M3 , dan kemudian berakhir dengan saya belajar bagaimana melakukan beberapa desain sirkuit dasar dan tata letak papan dan merancang beberapa papan sederhana. Jadi pada dasarnya saya harus menghadapi masalah menggunakan bahasa pemrograman terbaik untuk menjembatani desain perangkat keras / perangkat lunak sebagai seseorang yang bertanggung jawab untuk kedua ujungnya.
C benar-benar bahasa yang perlu Anda ketahui. Sangat mudah bagi orang yang memprogram dalam C ++ dan tidak pernah benar-benar harus membatasi diri pada set fitur C untuk mengatakan "itu hal yang sama" tetapi tidak. Terutama cara C ++ telah mengembangkan dan mengumpulkan fitur-fitur, dan cara para programmer C ++ menggunakan fitur-fitur itu, itu benar-benar hal yang jauh berbeda untuk bekerja pada aplikasi C yang cukup besar dibandingkan dengan aplikasi C ++. Firmware SDK Anda akan berupa sekelompok pustaka C, apa pun yang cocok dengan MCU akan menjadi pustaka C, OS apa pun yang masuk akal pada MCU akan ditulis dalam C, dll. Dll.
Yang mengatakan, karena banyak dari alat MCU di luar sana akhirnya menggunakan GCC sebagai kompiler mereka, Anda hampir pasti akan memiliki kompiler C ++ yang tersedia jika Anda menggunakan keluarga MCU yang layak. Tetapi Anda harus sangat berhati-hati dengan fitur yang Anda gunakan, terutama hal-hal dari perpustakaan standar, karena sangat mudah berakhir dengan biner yang terlalu besar untuk dipasang di perangkat Anda. Saya pikir ada kasus yang baik untuk dibuat menggunakan C ++ pada perangkat yang disematkan, C ++ memiliki beberapa fitur bagus yang memiliki sampah atau tanpa ukuran atau penalti kecepatan, Anda hanya perlu tahu apa yang Anda lakukan dan menulis kode seperti itu lebih jauh pada ujung C-style dari spektrum daripada ujung STL dari spektrum dalam hal penggunaan fitur pintar.
Jangan terlalu memperhatikan orang yang mengatakan Anda dapat menggunakan Lua atau Python pada MCU dengan penerjemah yang disematkan bla, bla. Itu benar, saya sudah melakukannya dan itu menyenangkan, tetapi saat ini lebih untuk proyek mainan dan hal-hal yang muncul di Hack a Day. Saya pikir kita akan melihat lebih banyak hal seperti itu karena Hukum Moore diterapkan tanpa henti bahkan pada prosesor terkecil, ini adalah sesuatu yang terjadi dengan game di mana dulu ada banyak perakitan, kemudian mereka bertahan dengan C dan C ++ lebih lama daripada orang lain, dan sekarang semuanya sangat cepat, dan produktivitas pengembang sangat penting sehingga banyak pengembangan dilakukan dengan bahasa tingkat tinggi yang tertanam atau dalam bahasa tingkat tinggi secara langsung. Meski begitu, itu akan beberapa tahun sebelum Anda melihat perusahaan mempekerjakan programmer firmware dengan latar belakang Python dan Lua.
Jangan terlalu banyak menghabiskan waktu untuk perakitan. Tidak buruk untuk terbiasa dengan konsep-konsep, tetapi tidak mungkin Anda akan menemukan diri Anda melakukan banyak hal, jika ada program perakitan. Ada seperti kebijaksanaan konvensional ini dengan permainan dan tertanam bahwa itu "baik untuk diketahui" perakitan, sering diulang oleh orang-orang yang tidak benar-benar bekerja di bidang itu. Tetapi pada kenyataannya sangat tidak mungkin Anda akan menulis perakitan apa pun, pernah, dan jika Anda melakukannya mungkin hanya akan ada beberapa baris untuk optimasi atau sesuatu dengan perangkat keras Anda hanya tidak memiliki API untuk (tetapi Anda akan setelah Anda menulis satu yang membungkus beberapa baris perakitan). Saya telah bekerja di beberapa permainan dan proyek desain papan / firmware dan jumlah total jalur perakitan yang saya tulis untuk proyek komersial mungkin di kalangan remaja. Saya t'