Kiến trúc phần mềm hệ thống nhúng – Solution IAS

Phần mềm hệ thống nhúng là các chương trình được viết, thiết kế, lập trình chuyên biệt cho các thiết bị số và hoạt động song song với các thiết bị đó. Hiện nay có 6 loại kiến trúc phần hệ thống nhúng phổ biến là: 

  • Vòng lặp kiểm soát đơn giản
  • Hệ thống ngắt điều khiển
  • Đa nhiệm tương tác
  • Đa nhiệm ưu tiên
  • Vi nhân (Microkernel) và nhân ngoại (Exokernel)
  • Nhân khối (monolithic kernels)

Với sự đa dạng và khác biệt, các lâp trình viên cho nhiều lựa chọn hơn khi chọn phần mềm hệ thống nhúng để sử dụng. Hãy cùng tham khảo bài viết dưới để hiểu thêm về 6 loại kiến trúc phần mềm hệ thống nhúng này nhé. 

1. Vòng lặp kiểm soát đơn giản

Một vòng lặp kiểm soát là một hệ thống quản lý quá trình được thiết kế để duy trì một quá trình diễn biến tại một vị trí mong muốn.

Theo thiết kế này thì phần mềm được tổ chức thành một vòng lặp đơn giản. Vòng lặp gọi đến các chương trình con, 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.

Mỗi bước trong vòng lặp sẽ hoạt động cùng với các bước khác để quản lý hệ thống.

Vòng lặp kiểm soát đơn giản

2. Hệ thống ngắt điều khiển

Hệ thống nhúng thường được điều khiển bằng các ngắt, các tác vụ của hệ thống nhúng được kích hoạt bởi các loại 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 sau một chu kỳ được định nghĩa trước, hoặc bởi sự kiện khi cổng nối tiếp nhận được một byte nào đó.

Hệ thống ngắt điều khiển thường được sử dụng trong các hệ thống có bộ quản lý sự kiện đơn giản, ngắn gọn và cần độ trễ thấp. Thường được thực hiện một tác vụ đơn giản trong một vòng lặp chính.

Đôi khi, các tác vụ phức tạp hơn sẽ được thêm vào một cấu trúc hàng đợi trong bộ quản lý ngắt để được vòng lặp xử lý sau đó. Lúc này, hệ thống gần giống với kiểu nhân đa nhiệm với các tiến trình rời rạc.

Hệ thống ngắt điều khiển

3. Phần mềm hệ thống nhúng đa nhiệm tương tác

Hệ thống đa nhiệm không ưu tiên gần giống với kỹ thuật của vòng lặp kiểm soát đơn giản, chỉ khác ở chỗ trừ việc vòng lặp này được ẩn giấu thông qua một giao diện lập trình API.

Các nhà lập trình định nghĩa một loạt các nhiệm vụ, mỗi nhiệm vụ chạy tỏng một môi trường riêng của nó, khi không cần thực hiện nhiệm vụ đó thì nó gọi đến các tiến trình con tạm nghỉ bằng cách gọi “pause”, “wait”, “yield”,…

Đối với hệ thống đa nhiệm tương tác, việc thêm một phần mềm mới được thực hiện dễ dàng hơn bằng cách lập trình một tác vụ mới hoặc thêm vào hàng đợi thông dịch.

Phần mềm hệ thống nhúng đa nhiệm tương tác

4. Đa nhiệm ưu tiên

Hệ thống đa nhiệm ưu tiên thường có một đoạn mã ở mức thấp thực hiện việc chuyển đổi giữa các tác vụ khác nhau thông qua một bộ định thời.

Đoạn mã này thường nằm ở mức mà hệ thống được coi là có một hệ điều hành và vì thế cũng gặp phải tất cả những phức tạp trong việc quản lý đa nhiệm.

Bất kỳ tác vụ nào có thể phá hủy dữ liệu của một tác vụ khác đều cần phải được tách biệt một cách chính xác. Việc truy cập tới các dữ liệu chia sẻ có thể được quản lý bằng một số kỹ thuật đồng bộ hóa như hàng đợi thông điệp (message queues), các phương thức truyền tin thị giác (semaphores)…

Hệ thống này thường được đưa ra là sử dụng một hệ điều hành thời gian thực. Lúc đó, các nhà lập trình có thể tập trung vào việc phát triển các chức năng của thiết bị chứ không cần quan tâm đến các dịch vụ của hệ điều hành nữa.

5. Vi nhân (Microkernel) và nhân ngoại (Exokernel)

  • Vi nhân (Microkernet)

Vi nhân (Microkernet) là một bước tiếp cận gần hơn tới khái niệm hệ điều hành thời gian thực. Lúc này, nhân hệ điều hành thực hiện việc cấp phát bộ nhớ và chuyển CPU cho các luồng thực thi.

Còn các tiến trình người dùng sử dụng các chức năng chính như hệ thống file, giao diện mạng lưới,…

Kiến trúc này thường được áp dụng trong các hệ thống mà việc chuyển đổi và giao tiếp giữa các tác vụ là nhanh.

 Vi nhân (Microkernet)

  • Nhân ngoại (Exokernel)

Nhân ngoại (Exokernel) là tiến hành 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.

Phần cứng và toàn bộ phần mềm trong hệ thống luôn đáp ứng và có thể được mở rộng bởi các ứng dụng.

Nhân ngoại (Exokernel)

6. Nhân khối (Monolithic kernels)

Nhân khối đầy đủ với các khả năng phức tạp được chuyển đổi để phù hợp với môi trường nhúng. Giúp các nhà lập trình có được một môi trường giống với hệ điều hành trong các máy để bàn như Microsoft Windows, Linux,…

Tuy nhiên, nhân khối đòi hỏi đáng kể các tài nguyên phàn cứng làm tăng chi phí cho hệ thống. Mặc dù ch phí phần cứng tăng nhưng các loại hệ thống nhúng này đang phát triển rất mạnh. Bởi vì:

  • Hệ thống có cổng kết nối đến các chip nhúng thông dụng.
  • Cho phép sử dụng lại các đoạn mã sẵn như các trình điều khiển thiết bị, web servers, firewalls,…
  • Hệ thống có thể phát triển với một tập nhiều loại đặc tính, chức năng. Sau khi phân phối sản phẩm, hệ thống có thể được cấu hình để loại bỏ một số chức năng không cần thiết.
  • Có chế độ người dùng để dễ dàng chạy các ứng dụng và gỡ rối, quy trình được thực hiện dễ dàng hơn, lập trình có tính linh động.

Một số nhân khối thông dụng hiện nay là Embedded Linux và Windows CE, đặc biệt là trong các thiết bị nhúng mạnh như Wireless router hoặc hệ thống định vị GPS.

Nhân khối (Monolithic kernels)

>>> Xem thêm: Hệ thống nhúng là gì? ứng dụng trong thực tế