1.4.Kiến trúc của phần mềm hệ thống nhúng
Một số loại kiến trúc phần mềm thông dụng trong các hệ thống nhúng nhưsau:
KIT STM32F4 DISCOVERY 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.
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.
KIT STM32F4 DISCOVERY 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ủ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 đó.
BTL Môn Lập trình nhúng cơ bản 6
Trường đại học Công nghiệp Hà Nội Khoa Công nghệ thông tin
Loại kiến trúc này 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. Hệ thống này thường 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.
KIT STM32F4 DISCOVERY Đa nhiệm tương tác
Một hệ thống đa nhiệm không ưu tiên cũng gần giống với kỹ thuật vòng lặp
kiểm soát đơn giản ngoại 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 trong 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" …).
Ưu điểm và nhược điểm của loại kiến trúc này cũng giống với kiểm vòng lặp
kiểm soát đơn giản. Tuy nhiên, 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
(queue-interpreter).
1.4.4. Đa nhiệm ưu tiên
Ở loại kiến trúc này, hệ thống 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), semaphores … Vì những phức tạp nói trên nên một giải pháp
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
BTL Môn Lập trình nhúng cơ bản 7
Trường đại học Công nghiệp Hà Nội Khoa Công nghệ thông tin
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.
1.4.5. Vi nhân (Microkernel) và nhân ngoại (Exokernel
Khái niệm vi nhân (microkernel) 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,… Nói chung,
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.
Còn nhân ngoại (exokernel) 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.
1.4.6. Nhân khối (monolithic kernels)
Trong kiến trúc này, một nhân đầ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. Điều này 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ư
Linux hay Microsoft Windows và vì thế rất thuận lợi cho việc phát triển. Tuy
nhiên, nó lại đòi hỏi đáng kể các tài nguyên phần cứng làm tăng chi phí của hệ
thống. Một số loại nhân khối thông dụng là Embedded Linux và Windows CE.
Mặc dù chi phí phần cứng tăng lên nhưng loại hệ thống nhúng này đang tăng
trưởng rất mạnh, đặ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. Lý do của điều này là:
• Hệ thống này có cổng để kết nối đến các chip nhúng thông dụng.
• Hệ thống cho phép sử dụng lại các đoạn mã sẵn có phổ biến như các trình
điều khiển thiết bị, Web Servers, Firewalls, …
• Việc phát triển hệ thống có thể được tiến hành với một tập nhiều loại đặc
tính, chức năng còn sau đó lúc phân phối sản phẩm, hệ thống có thể được cấu
BTL Môn Lập trình nhúng cơ bản 8
Trường đại học Công nghiệp Hà Nội Khoa Công nghệ thông tin
hình để loại bỏ một số chức năng không cần thiết. Điều này giúp tiết kiệm được
những vùng nhớ mà các chức năng đó chiếm giữ.
• Hệ thống có chế độ người dùng để dễ dàng chạy các ứng dụng và gỡ rối.
Nhờ đó, qui trình phát triển được thực hiện dễ dàng hơn và việc lập trình có tính
linh động hơn.
• Có nhiều hệ thống nhúng thiếu các yêu cầu chặt chẽ về tính thời gian thực
của hệ thống quản lý. Còn một hệ thống như Embedded Linux có tốc độ đủ
nhanh để trả lời cho nhiều ứng dụng. Các chức năng cần đến sự phản ứng nhanh
cũng có thể được đặt vào phần cứng.
Nguồn: banlinhkien.vn
0 nhận xét:
Đăng nhận xét