ซอฟต์แวร์ฝังตัวแตกต่างกันมาก
ในแอพเดสก์ท็อปนามธรรมและไลบรารีช่วยให้คุณประหยัดเวลาได้มาก คุณมีความหรูหราในการขว้างปาคู่อีกเมกะไบต์หรือ RAM กิกะไบต์หรือมีแกน CPU 2 + GHz 64 บิตที่มีปัญหาและคนอื่น (ผู้ใช้) กำลังจ่ายค่าฮาร์ดแวร์นั้น คุณอาจไม่ทราบว่าระบบจะใช้แอพใด
ในโครงการฝังตัวทรัพยากรมักจะมีข้อ จำกัด มาก ในโครงการหนึ่งที่ฉันทำงานด้วย (โปรเซสเซอร์ซีรีย์ PIC 17X) ฮาร์ดแวร์มีหน่วยความจำโปรแกรม 2KK, สแต็ก (ในฮาร์ดแวร์) 8 ระดับและ 192 ไบต์ (<0.2kB) ของ RAM หมุด I / O ที่แตกต่างกันมีความสามารถที่แตกต่างกันและคุณกำหนดค่าฮาร์ดแวร์ตามต้องการโดยการเขียนลงทะเบียนฮาร์ดแวร์ การดีบักเกี่ยวข้องกับออสซิลโลสโคปและลอจิกตัววิเคราะห์
ในที่ฝังตัว abstractions มักจะเข้าหาและจัดการทรัพยากร (และราคา) ที่คุณไม่มี เช่นระบบฝังตัวส่วนใหญ่ไม่มีระบบไฟล์ เตาอบไมโครเวฟเป็นระบบฝังตัว ตัวควบคุมเครื่องยนต์ของรถยนต์ แปรงสีฟันไฟฟ้าบางตัว หูฟังตัดเสียงรบกวนบางตัว
ปัจจัยหนึ่งที่สำคัญมากสำหรับฉันในการพัฒนาระบบฝังตัวคือการรู้และควบคุมสิ่งที่โค้ดแปลไปในแง่ของคำแนะนำทรัพยากรหน่วยความจำและเวลาดำเนินการ บ่อยครั้งที่ลำดับของคำสั่งที่แน่นอนจะควบคุมเช่นเวลาสำหรับรูปแบบคลื่นอินเทอร์เฟซของฮาร์ดแวร์
Abstractions และเบื้องหลัง 'เวทย์มนตร์' (เช่นนักเก็บขยะ) เหมาะสำหรับแอปบนเดสก์ท็อป นักสะสมขยะช่วยให้คุณประหยัดเวลาได้มากในการลดการรั่วไหลของหน่วยความจำเมื่อหน่วยความจำถูก / สามารถจัดสรรแบบไดนามิกได้
อย่างไรก็ตามในโลกแห่งการฝังตัวแบบเรียลไทม์เราจำเป็นต้องรู้และควบคุมว่าจะใช้เวลานานเท่าใดบางครั้งอาจลดลงเป็นนาโนวินาที ตัวอย่างง่ายๆอย่างหนึ่ง: เมื่อทำการลดแสงไฟ LED ของซอฟต์แวร์โดยการควบคุมรอบการทำงาน (CPU มีเพียงการควบคุมเปิด / ปิดของ LED เท่านั้น) มันไม่ตกลงสำหรับโปรเซสเซอร์ที่จะออกและทำเช่นการเก็บขยะ 100ms เพราะหน้าจอจะมองเห็นได้ชัดเจน สว่างหรือออกไปข้างนอก
ตัวอย่างที่ชัดเจนมากขึ้นคือตัวควบคุมเครื่องยนต์ที่เผาประกายหัวเทียนโดยตรง หากซีพียูนั้นปิดการทำงานและเก็บรวบรวมขยะเป็นเวลา 50 มิลลิวินาทีเครื่องยนต์จะตัดออกชั่วขณะหนึ่งหรือเกิดเพลิงไหม้ที่ตำแหน่งเพลาข้อเหวี่ยงที่ไม่ถูกต้องอาจทำให้เครื่องยนต์ติดขัด คุณสามารถฆ่าคนได้