Saya ingin beberapa kiat untuk mereka yang ingin menjadi pengembang perangkat lunak tertanam yang baik atau ingin meningkatkan di bidang ini.
Apa yang harus saya pelajari tentang perangkat keras, perangkat lunak?
Buku mana yang paling direkomendasikan? Blog?
Pada akhirnya, bagaimana saya bisa beralih dari hobiis pemula ke profesional hebat?
Untuk buku, saya akan merekomendasikan menggali sejarah. Sebagian besar teknik perangkat lunak yang tertanam saat ini berasal dari ujung masa lalu.
Seperti apa pun, berlatihlah setiap hari.
sumber
Jawaban lainnya bagus, tetapi perbedaan terbesar antara penghobi dan profesional harus menjadi pola pikir tentang kualitas. Jadi, minta proyek Anda berjalan terus, jangan berhenti ketika Anda 80% selesai dengan sebuah proyek. Ambillah sepenuhnya, buktikan bahwa itu berfungsi, dan dokumentasikan dengan benar.
Pastikan kode Anda dapat dibaca dan dipelihara.
Dan jangan lupa bersenang-senang juga :)
sumber
Terlepas dari yang sudah jelas, seperti belajar C dan mulai dengan beberapa papan pengembang, Anda pasti ingin belajar membaca lembar data mikrokontroler .
Pabrikan menambahkan lebih banyak fitur ke dalam mikrokontroler, yang karenanya menjadi semakin kompleks. Lembar data tidak hanya memberikan karakteristik listrik (yang lebih menarik bagi insinyur elektronik daripada pengembang perangkat lunak), tetapi juga deskripsi terperinci tentang register, peta memori, dll.
Saat membaca lembar data pertama mungkin terlihat menakutkan, tetapi gagal memahaminya dapat menyebabkan sakit kepala yang lebih parah pada fase debugging.
sumber
'Tertanam' adalah sedikit istilah yang dimuat ..
Dalam beberapa hal, sistem apa pun yang didedikasikan untuk menjalankan aplikasi tunggal dapat disebut sistem tertanam, asalkan ada beberapa perangkat keras yang dapat dikendalikan. Anda dapat memanggil PPC604 400MHz dengan RAM 2GB yang menjalankan aplikasi java di atas sistem embedded Linux, jika itu terjadi mengendalikan proses melalui modul I / O lokal. Di sisi lain, Arduino yang hanya menjalankan semacam aplikasi jaringan minimal tidak akan menjadi sistem embedded. Tapi mungkin 'tertanam' membuat kebanyakan orang berpikir tentang pengontrol berbasis flash dengan hanya beberapa ratus byte RAM, tidak ada sistem operasi untuk berbicara tentang, dan sejumlah besar peripheral on-chip.
Yang sedang berkata, mungkin dua rintangan terbesar non-embedded programmer biasanya menghadapi pembelajaran embedded system adalah I / O register dan interupsi.
Interupsi sebenarnya mungkin lebih mudah dari dua konsep untuk programmer non-embedded untuk menangani, karena masalah utama dengan ini, konkurensi dan pemrograman berbasis acara, sering ditemui dalam aplikasi mainstream. Apa yang membuat gangguan mengganggu adalah menyadari sensitivitas ekstrim dari suatu sistem terhadap kualitas penanganan interupsi, dan seluk-beluk berurusan dengan perangkat keras untuk menghapus kondisi interupsi dan mengatur untuk yang berikutnya. Dengan GUI, kebuntuan hanya membunuh aplikasi. Dengan penangan interupsi, jalan buntu menyebabkan seluruh sistem Anda terkunci.
Perangkat I / O tampaknya merupakan area yang paling menyebabkan kesulitan. Bagi yang belum tahu, mungkin cukup mengejutkan mengetahui bahwa membaca register ini di sini berpengaruh pada register itu di sana . Menulis 1 untuk menghapus bit. Bit status yang membersihkan diri sendiri ketika Anda membaca register data, dll. Ada begitu banyak kemungkinan dengan perangkat keras I / O sehingga tidak ada aturan umum untuk menghadapinya, kecuali untuk mempelajari cara menemukan dan menafsirkan lembar data perangkat. Menulis driver perangkat untuk port serial akan mengajarkan Anda banyak tentang pemrograman I / O tingkat rendah.
Benar-benar tidak ada pengganti untuk mempelajari hal-hal ini selain menyingsingkan lengan baju seseorang, dan memprogram beberapa bahasa C dan / atau bahasa rakitan lurus pada bare metal. Bahkan sistem embedded berbasis java yang disebutkan di atas pada akhirnya membutuhkan driver perangkat untuk I / O, dan ini berarti pada akhirnya berurusan dengan beberapa C. Pengalaman adalah guru terbaik. Pilih mikrokontroler, baik itu MSP430, TMS320, AVR, ARM, PIC, 68HC11, apa pun, temukan kit eval, dan buat beberapa sistem.
sumber
Apa yang ingin Anda pelajari di sini adalah assembler untuk berbagai platform. C. C dan interaksi assembler. Alat berbeda, GCC dan non-GCC. Cara membaca referensi lembar data / pemrogram (dan menyadari bahwa mereka semua memiliki beberapa kesalahan atau dapat menyesatkan, tidak pernah mempercayai mereka, perangkat keras menang atas dokumen) dan cara membaca atau menggunakan skema. Biasanya ini bukan skema rumit. Sejumlah papan yang baik untuk interfacing dalam proyek berarti mereka tidak memiliki sampah di papan, hanya akses langsung ke pin I / O. Tapi itu bukan yang terbaik untuk belajar. Sesuatu seperti Stellarispapan yang menyakitkan untuk proyek memiliki banyak hal menyenangkan di papan untuk belajar tertanam dan belajar meminjam / menggunakan driver atau menulis sendiri dari lembar data. Atmel AVR butterfly juga merupakan papan yang bagus jika masih tersedia, mungkin perlu disolder pada port serial Anda sendiri untuk memprogramnya atau cukup selipkan beberapa kabel di dalam lubang. Apa yang memberi Anda adalah beberapa perangkat yang dapat Anda pelajari untuk diprogram.
Bahkan jika Anda akhirnya melakukan pekerjaan tertanam yang melibatkan penulisan aplikasi menggunakan panggilan SDK atau API di linux atau RTOS (tidak pernah menyentuh perangkat keras atau membaca lembar data), pengetahuan di atas masih akan membuat Anda unggul.
sumber
Artikel ini (diterjemahkan secara otomatis dari Bahasa Portugis ke Bahasa Inggris) memiliki tinjauan yang baik untuk mengembangkan karier sebagai pengembang perangkat lunak yang disematkan. Catatan: Yang asli ada di sini .
Itu dimulai dengan menguraikan bidang-bidang pengetahuan yang harus Anda kembangkan:
Ini kemudian memberikan tips berikut untuk menguasai bidang-bidang ini (dan mengembangkannya dengan teks lebih lanjut, ini hanya judulnya):
sumber
Berpikir dua kali sebelum Anda menjadi insinyur perangkat lunak tertanam. Saya memiliki fase dalam karir saya. Saya telah mengembangkan perangkat lunak 5 tahun pertama, daripada pindah ke penjualan / pemasaran, melakukannya selama 15 tahun, mengelola bisnis 100 + M $ dan sekarang saya kembali ke perangkat lunak.
Ketika saya kembali ke perangkat lunak setelah 15 tahun, saya ingat mengapa saya pergi di tempat pertama. Itu susah. Perlu konsentrasi, beberapa ratus baris kode saling menyentuh dan Anda semua harus menyimpannya di memori. Tertanam sangat sulit.
Anda juga perlu memahami diri sendiri. Jika Anda umumnya pria yang cerdas, teliti dan sabar, Anda akan menjadi insinyur yang hebat. Jika Anda kehilangan salah satu dari mereka, Anda akan menjadi rata-rata di terbaik. Berpikir tentang itu. Jika Anda sangat pintar dan tidak sabar, tidak ada artinya karena tidak peduli seberapa pintar Anda, teknik yang baik membutuhkan kesabaran dan perhatian terhadap detail.
Anda juga harus nyaman melihat kode jam sekaligus tanpa berbicara. Saya mengamati bahwa orang-orang dengan keterampilan sosial yang baik menemukan ini tidak tertahankan.
Jika semua ini memeriksa, daripada membaca semua buku hebat itu, lakukan latihan dan Anda akan menjadi insinyur yang hebat .. Semoga beruntung
sumber
Semua orang mengatakan hal-hal hebat. Jadi saya akan memberi Anda saran umum: baca baca baca baca baca baca baca baca!
Baca setiap artikel di http://embeddedgurus.com. Jika Anda tidak mengerti sesuatu, risetlah. Jika dalam penjelasan tentang hal-hal itu Anda menemukan sesuatu yang tidak Anda pahami, bacalah lagi. Saya akan menuju ke posisi perangkat lunak tertanam dan pengalaman saya adalah beberapa proyek profesional selama beberapa tahun terakhir dan banyak membaca. Pengalaman memungkinkan Anda mencoba hal-hal, tetapi membaca memberi tahu Anda apakah hal-hal yang telah Anda coba lakukan sebelumnya, mungkin lebih baik daripada yang Anda bisa. Ini memperkenalkan Anda pada konsep-konsep yang dapat Anda kerjakan dalam situasi apa pun.
Bacalah!
sumber
Menjadi seorang ahli dalam C Memahami Pengatur Waktu dan Serial. Anda harus membuat tangan Anda kotor karenanya. Pahami protokol RF, sesuaikan dengan kebutuhan Anda. Jangan hanya membabi buta mencoba kombinasi kode saat debugging. Kode melakukan persis apa yang Anda perintahkan. Baca buku petunjuk dan lembar data lalu buat perubahan jika sesuatu tidak berhasil. Semua yang dikatakan dan dilakukan, satu-satunya cara nyata untuk menjadi seorang ahli adalah berlatih. Terus buat aplikasi. Segera, itu akan menjadi kebiasaan.
sumber