Perangkat lunak tertanam sangat berbeda.
Pada aplikasi desktop, abstraksi dan perpustakaan menghemat banyak waktu pengembangan. Anda memiliki kemewahan melempar pasangan lain megabita atau gigabita RAM atau sekitar 2 + GHz 64-bit core CPU pada suatu masalah, dan orang lain (pengguna) membayar untuk perangkat keras itu. Anda mungkin tidak tahu sistem apa yang akan dijalankan aplikasi.
Dalam proyek tertanam, sumber daya seringkali sangat terbatas. Dalam satu proyek saya bekerja pada (prosesor seri 17X-PIC) perangkat keras memiliki 2Kwords memori program, 8 tingkat (in-hardware) stack dan 192 byte (<0,2 kB) RAM. Pin I / O yang berbeda memiliki kemampuan yang berbeda dan Anda mengkonfigurasi perangkat keras sesuai kebutuhan dengan menulis ke register perangkat keras. Debugging melibatkan osiloskop dan penganalisis logika.
Dalam embedded, abstraksi sering menghalangi dan akan mengelola (dan biaya) sumber daya yang tidak Anda miliki. Misalnya kebanyakan sistem embedded tidak memiliki sistem file. Oven microwave adalah sistem tertanam. Pengendali mesin mobil. Beberapa sikat gigi listrik. Beberapa headphone peredam bising.
Salah satu faktor yang sangat penting bagi saya dalam mengembangkan sistem embedded adalah mengetahui dan mengendalikan apa yang diterjemahkan kode dalam hal instruksi, sumber daya, memori dan waktu eksekusi. Seringkali urutan instruksi yang tepat mengontrol mis. Waktu untuk bentuk gelombang antarmuka perangkat keras.
Abstraksi dan 'sihir' di belakang layar (mis. Pengumpul sampah) sangat bagus untuk aplikasi desktop. Pengumpul sampah menghemat BANYAK waktu untuk mengejar kebocoran memori, ketika memori dialokasikan secara dinamis.
Namun di dunia embedded real-time kita perlu tahu dan mengontrol berapa lama, kadang-kadang hingga nanodetik, dan tidak bisa melempar beberapa MB RAM atau CPU yang lebih cepat pada suatu masalah. Salah satu contoh sederhana: ketika melakukan peredupan perangkat lunak LED dengan mengendalikan siklus tugas (CPU hanya memiliki kontrol on / off LED), itu TIDAK OK untuk prosesor untuk pergi dan melakukan mis pengumpulan sampah selama 100 ms karena tampilan akan terlihat flash terang atau keluar.
Contoh yang lebih hipotetis adalah pengontrol mesin yang langsung menyalakan busi. Jika CPU itu mati dan melakukan pengumpulan sampah selama 50 ms, mesin akan berhenti sejenak atau menembak pada posisi poros engkol yang salah, berpotensi mematikan mesin (saat lewat?) Atau merusaknya secara mekanis. Anda bisa membuat seseorang terbunuh.