Phần mềm nhúng rất khác nhau.
Trên một ứng dụng máy tính để bàn, trừu tượng và thư viện giúp bạn tiết kiệm rất nhiều thời gian phát triển. Bạn có thể sử dụng một vài megabyte hoặc gigabyte RAM hoặc một số lõi CPU 64-bit 2 + GHz, và một người khác (người dùng) đang trả tiền cho phần cứng đó. Bạn có thể không biết ứng dụng sẽ chạy trên hệ thống nào.
Trong một dự án nhúng, tài nguyên thường rất hạn chế. Trong một dự án tôi đã làm việc trên (bộ xử lý sê-ri PIC 17X), phần cứng có 2Kwords bộ nhớ chương trình, 8 cấp độ ngăn xếp (trong phần cứng) và 192 byte (<0,2kB) RAM. Các chân I / O khác nhau có các khả năng khác nhau và bạn đã cấu hình phần cứng khi cần bằng cách ghi vào các thanh ghi phần cứng. Gỡ lỗi liên quan đến một máy hiện sóng và phân tích logic.
Trong nhúng, các khái niệm trừu tượng thường cản trở và sẽ quản lý (và chi phí) tài nguyên mà bạn không có. Ví dụ, hầu hết các hệ thống nhúng không có hệ thống tập tin. Lò vi sóng là hệ thống nhúng. Bộ điều khiển động cơ xe. Một số bàn chải đánh răng điện. Một số tai nghe chống ồn.
Một yếu tố rất quan trọng đối với tôi trong việc phát triển các hệ thống nhúng là biết và kiểm soát những gì mã dịch theo hướng dẫn, tài nguyên, bộ nhớ và thời gian thực hiện. Thông thường trình tự chính xác của các điều khiển hướng dẫn, ví dụ thời gian cho dạng sóng giao diện phần cứng.
Trừu tượng và 'ma thuật' đằng sau hậu trường (ví dụ: công cụ thu gom rác) rất phù hợp cho các ứng dụng trên máy tính để bàn. Công cụ thu gom rác giúp bạn tiết kiệm rất nhiều thời gian để tránh rò rỉ bộ nhớ, khi bộ nhớ được / có thể được phân bổ động.
Tuy nhiên, trong thế giới nhúng thời gian thực, chúng ta cần biết và kiểm soát mọi thứ mất bao lâu, đôi khi xuống đến nano giây và không thể ném thêm vài meg RAM hoặc CPU nhanh hơn vào một vấn đề. Một ví dụ đơn giản: khi thực hiện phần mềm làm mờ đèn LED bằng cách điều khiển chu kỳ nhiệm vụ (CPU chỉ có điều khiển bật / tắt đèn LED), bộ xử lý không tắt và thực hiện việc thu gom rác trong 100ms vì màn hình hiển thị rõ ràng đèn flash sáng hoặc đi ra ngoài.
Một ví dụ giả thuyết hơn là bộ điều khiển động cơ bắn trực tiếp bugi. Nếu CPU đó tắt và thu gom rác trong 50ms, động cơ sẽ bị cắt trong giây lát hoặc bắn vào vị trí trục khuỷu sai, có khả năng làm cho động cơ bị đình trệ (trong khi vượt qua?) Hoặc làm hỏng cơ học. Bạn có thể khiến ai đó bị giết.