Một hệ thống nhúng là một thuật ngữ chỉ một hệ thống được nhúng vào một môi trường hoặc hệ thống mẹ. Nó là sự kết hợp hoàn hảo giữa phần cứng và phần mềm để đáp ứng các yêu cầu chuyên biệt trong nhiều lĩnh vực công nghiệp, điều khiển tự động, quan trắc và truyền tin. Hệ thống nhúng có sự ổn định và tính tự động hoá cao.
Các hệ thống nhúng được thiết kế để thực hiện một chức năng chuyên biệt. Khác với máy tính cá nhân đa chức năng, hệ thống nhúng chỉ thực hiện một hoặc một số chức năng nhất định. Chúng thường đi kèm với các yêu cầu cụ thể và bao gồm những thiết bị và phần cứng chuyên dụng mà không tìm thấy trong máy tính đa năng. Việc tối ưu hóa kích thước và chi phí sản xuất là ưu tiên hàng đầu. Hệ thống nhúng thường được sản xuất hàng loạt với số lượng lớn và có nhiều dạng khác nhau, từ các thiết bị cầm tay đến các hệ thống điều khiển trong nhà máy.
Những thiết bị như PDA hoặc máy tính cầm tay có nhiều điểm tương đồng với hệ thống nhúng nhưng không phải là hệ thống nhúng thực sự, bởi vì chúng là các thiết bị đa năng cho phép sử dụng nhiều ứng dụng và kết nối với nhiều thiết bị ngoại vi.
Lịch sử
Hệ thống nhúng đầu tiên xuất hiện là Apollo Guidance Computer (Máy tính Dẫn đường Apollo). Nó được phát triển bởi Charles Stark Draper tại phòng thí nghiệm của trường Đại học MIT. Hệ thống nhúng đầu tiên được sản xuất hàng loạt là máy hướng dẫn cho tên lửa quân sự vào năm 1961.
Từ những ứng dụng đầu tiên vào những năm 1960, các hệ thống nhúng đã phát triển mạnh mẽ về khả năng xử lý. Bộ vi xử lý đầu tiên hướng đến người tiêu dùng là Intel 4004, phục vụ cho máy tính điện tử và các hệ thống nhỏ khác. Vào những năm cuối thập kỷ 1970, các bộ xử lý 8 bit đã được sản xuất, nhưng vẫn cần đến các chip nhớ và hỗ trợ khác.
Vào giữa thập kỷ 1980, kỹ thuật mạch tích hợp đã phát triển cao, cho phép nhiều thành phần có thể được tích hợp vào một chip xử lý. Các vi điều khiển trở nên rất hấp dẫn để xây dựng các hệ thống chuyên dụng. Sự bùng nổ của hệ thống nhúng đã kéo theo sự phát triển của nhiều loại chip xử lý đặc biệt với nhiều giao diện lập trình . Thứ phát triển này đã trở thành một xu hướng phổ biến trong hầu hết các lĩnh vực và vẫn tiếp tục phát triển cho đến ngày nay.
Các đặc điểm
Hệ thống nhúng thường có một số đặc điểm chung như sau:
- Các hệ thống nhúng được thiết kế cho một số nhiệm vụ chuyên dụng thay vì các hệ thống máy tính đa chức năng.
- Một hệ thống nhúng thường không phải là một khối riêng biệt, mà là một phần trong một thiết bị lớn hơn.
- Phần mềm của hệ thống nhúng được gọi là firmware và được lưu trữ trong các chip bộ nhớ ROM hoặc bộ nhớ flash.
- Giao diện với bên ngoài được thực hiện thông qua các thiết bị ngoại vi như giao tiếp nối tiếp, giao tiếp đồng bộ, USB, mạng và các thiết bị đầu vào/ra tổng quát.
- Công cụ phát triển phần mềm nhúng được sử dụng để biên dịch, lập trình và gỡ lỗi chương trình nhúng.
- Độ tin cậy là một yếu tố quan trọng trong các hệ thống nhúng, vì chúng thường phải hoạt động liên tục mà không bị lỗi và có khả năng khôi phục khi gặp sự cố.
Kiến trúc phần mềm hệ thống nhúng
Có nhiều loại kiến trúc phần mềm được sử dụng trong các hệ thống nhúng, bao gồm:
Vòng lặp kiểm soát đơn giản
Theo thiết kế này, phần mềm được tổ chức thành một vòng lặp đơn giản. Mỗi chương trình con quản lý một phần của hệ thống phần cứng hoặc phần mềm.
Hệ thống ngắt điều khiển
Các hệ thống nhúng thường được điều khiển bằng các ngắt, có nghĩa là các tác vụ được kích hoạt bởi các sự kiện khác nhau. Ví dụ, một ngắt có thể được sinh ra bởi một bộ định thời hoặc khi cổng nối tiếp nhận được một byte dữ liệu.
Đa nhiệm tương tác
Hệ thống đa nhiệm không ưu tiên tương tự như vòng lặp kiểm soát đơn giản, nhưng có giao diện lập trình API để che giấu vòng lặp. Các tác vụ được định nghĩa bởi nhà lập trình và chạy trong một môi trường riêng của chúng. Khi không cần thực hiện tác vụ, chúng tạm nghỉ để các tiến trình khác có thể chạy.
Đa nhiệm ưu tiên
Hệ thống đa nhiệm ưu tiên có một đoạn mã chuyển đổi giữa các tác vụ thông qua một bộ định thời. Đoạn mã này thường nằm ở mức đủ thấp để quản lý việc chuyển đổi giữa các tác vụ mà không gặp phải những phức tạp trong quản lý đa nhiệm.
Vi nhân và nhân ngoại
Vi nhân (microkernel) là một kiến trúc gần với hệ điều hành thời gian thực, trong đó nhân hệ điều hành quản lý việc cấp phát bộ nhớ và CPU cho các luồng thực thi. Còn nhân ngoại (exokernel) tạo ra một giao tiếp hiệu quả bằng cách sử dụng các lời gọi chương trình con thông thường.
Nhân khối
Trong kiến trúc này, một nhân đầy đủ được chuyển đổi để phù hợp với môi trường nhúng. Nó giúp các nhà lập trình có một môi trường giống hệ điều hành trong máy tính để bàn như Linux hay Windows.
Như vậy, hệ thống nhúng là một công nghệ đáng chú ý và có sự ứng dụng rộng rãi trong cuộc sống hàng ngày. Từ thiết bị điện tử nhỏ gọn như đồng hồ và máy chơi nhạc, đến các hệ thống kiểm soát lớn trong nhà máy và ngành năng lượng hạt nhân, hệ thống nhúng đã mang lại nhiều tiện ích và tiến bộ cho con người.
References:
- Wikipedia