การเขียนโปรแกรมระบบสมองกลฝังตัว (ซึ่งฉันทำงานมานานกว่า 30 ปี) ต้องการความคิดที่แตกต่างจากการพัฒนาซอฟต์แวร์ประเภทอื่น ๆ ช่วงของพลังการประมวลผลนั้นแตกต่างกันอย่างมากตั้งแต่ไมโครคอนโทรลเลอร์ 8 บิตซึ่งมีราคา 30 เซ็นต์ในปริมาณจนถึงไมโครโปรเซสเซอร์ 32 บิตที่ใช้ Linux หรือระบบปฏิบัติการทั่วไปอื่น ๆ ฉันกำลังทำโครงการที่ปลายทั้งสองของสเกลนี้ หน่วยความจำรหัสในไมโครที่เล็กที่สุดอาจมีเพียงไม่กี่ KB และมี RAM เพียงไม่กี่ร้อยไบต์ ปริมาณขนาดกลาง 16 บิตที่คิดต้นทุน $ 3 อาจมีที่เก็บข้อมูลโปรแกรมขนาด 256KB และ RAM ขนาด 16KB
นอกเหนือจากทรัพยากรหน่วยความจำที่ จำกัด หนึ่งในแง่มุมของการเขียนโปรแกรมแบบฝังที่แตกต่างจากส่วนอื่น ๆ ของการพัฒนาซอฟต์แวร์คือโปรแกรมเมอร์มักจะติดต่อกับฮาร์ดแวร์โดยตรงที่ระดับรีจิสเตอร์ - บนไมโครตัวเองหรือในอุปกรณ์ต่อพ่วง ไมโครผ่านบัสอนุกรมเช่น UART, SPI หรือ I2C ด้วยเหตุนี้ไมโครสโคปแบบโลว์เอนด์จึงถูกโปรแกรมในภาษา C หรือภาษาแอสเซมบลี
ระบบฝังตัวมักจะจัดการกับเหตุการณ์แบบเรียลไทม์ดังนั้นโปรแกรมเฟิร์มแวร์ที่ฝังตัวมักจะมีรูทีนการขัดจังหวะจำนวนมากและ RTOS ขนาดเล็ก (OS แบบเรียลไทม์) ที่เป็นไปได้ การดีบักระบบดังกล่าวมักจะต้องการความช่วยเหลือด้านฮาร์ดแวร์โดยใช้สองบรรทัดเฉพาะในไมโครเพื่อให้จุดพักสามารถตั้งค่าจากระยะไกลจากพีซี การวิเคราะห์เชิงลอจิกตัววิเคราะห์บัสและออสซิลโลสโคปเป็นเครื่องมือเพิ่มเติมที่ใช้สำหรับการดีบักระบบเหล่านี้
เนื่องจากด้านฮาร์ดแวร์ของการพัฒนาที่ฝังตัวนักพัฒนามักจะมีพื้นหลังอิเล็กทรอนิกส์บางส่วน (ฉันมีองศาทั้งใน EE และ CS)