1. Khái niệm về hệ thống nhúng
Hệ thống nhúng là một hệ thống được tích hợp cả phần cứng và phần mềm phục vụ cho các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hóa điều khiển, quan trắc và truyền thông.
Hệ thống này đòi hỏi độ ổn định và tự động hóa cao. Do sử dụng cho các nhiệm vụ chuyên biệt và được sản xuất với số lượng lớn nên chúng được thiết kế một cách tối ưu nhằm giảm thiểu kích thước cũng như giá thành sản xuất. Độ phức tạp là khác nhau theo yêu cầu của công việc mà chúng đảm nhận, hệ thống nhúng có thể rất đơn giản với một vi điều khiển hoặc rất phức tạp với nhiều đơn vị, các thiết bị ngoại vi và mạng lưới được nằm gọn trong một lớp vỏ máy lớn.
2. Các đặc điểm của hệ thống nhúng
* Hệ thống nhúng là một hệ thống máy tính.
Hệ thống nhúng thường không phải là một khối riêng biệt mà là một hệ thống phức tạp nằm trong thiết bị mà nó điều khiển.
Hệ thống nhúng thường không phải là một khối riêng biệt mà là một hệ thống phức tạp nằm trong thiết bị mà nó điều khiển.
* Có tài nguyên giới hạn
Các hệ thống nhúng bị giới hạn nhiều hơn về phần cứng và chức năng phần mềm so với máy tính cá nhân. Giới hạn phần cứng có thể bao gồm giới hạn về khả năng xử lý, tiêu thụ điện năng, bộ nhớ, chức năng phần cứng,… Còn giới hạn phần mềm thường liên quan đến việc hỗ trợ ít ứng dụng, ứng dụng bị thu gọn tính năng, không có hệ điều hành hoặc hệ điều hành có nhiều hạn chế. Tuy nhiên, ngày nay, những giới hạn này đã được khắc phục đáng kể bằng các hệ thống nhúng được thiết kế phức tạp và đầy đủ tính năng hơn. Phần mềm của hệ thống nhúng được lưu trữ trên các bộ nhớ ROM, Flash và được gọi là Firmware.
Các hệ thống nhúng bị giới hạn nhiều hơn về phần cứng và chức năng phần mềm so với máy tính cá nhân. Giới hạn phần cứng có thể bao gồm giới hạn về khả năng xử lý, tiêu thụ điện năng, bộ nhớ, chức năng phần cứng,… Còn giới hạn phần mềm thường liên quan đến việc hỗ trợ ít ứng dụng, ứng dụng bị thu gọn tính năng, không có hệ điều hành hoặc hệ điều hành có nhiều hạn chế. Tuy nhiên, ngày nay, những giới hạn này đã được khắc phục đáng kể bằng các hệ thống nhúng được thiết kế phức tạp và đầy đủ tính năng hơn. Phần mềm của hệ thống nhúng được lưu trữ trên các bộ nhớ ROM, Flash và được gọi là Firmware.
* Chuyên dụng
Hệ thống nhúng được thiết kế để thực hiện một chức năng chuyên biệt nào đó. Đây là điểm khác biệt so với các hệ thống máy tính khác như máy tính cá nhân hoặc các siêu máy tính có thể thực hiện nhiều chức năng khác nhau với những phép tính phức tạp. Chuyên dụng giúp nâng cao tính dễ sử dụng và tiết kiệm tài nguyên.
Hệ thống nhúng được thiết kế để thực hiện một chức năng chuyên biệt nào đó. Đây là điểm khác biệt so với các hệ thống máy tính khác như máy tính cá nhân hoặc các siêu máy tính có thể thực hiện nhiều chức năng khác nhau với những phép tính phức tạp. Chuyên dụng giúp nâng cao tính dễ sử dụng và tiết kiệm tài nguyên.
* Tương tác với thế giới thực
- Cảm nhận môi trường: cảm biến nhiệt độ, độ ẩm, ánh sáng, trọng lượng…, cảm nhận bằng tín hiệu điện (máy dò nhiễu điện từ)
- Tác động trở lại môi trường (hú còi báo động khi phát hiện khói trong tòa nhà…)
- Tốc độ tương tác phải đáp ứng thời gian thực (hệ thống còi báo hỏa, hệ thống chống trộm trên ô tô,…)
- Có thể có hoặc không có giao diện giao tiếp với người dùng như máy tính cá nhân. Với những hệ thống đơn giản, thiết bị nhúng sử dụng LCD nhỏ, Joystick, LED, nút bấm, chỉ thị chữ hoặc số và thường đi kèm với một menu đơn giản. Hiện nay chúng ta cũng có thể kết nối đến hệ thống nhúng thông qua giao diện Web, việc này cho phép giảm thiểu chi phí cho màn hình nhưng vẫn cung cấp khả năng hiển thị và nhập liệu thuận tiện thuận tiện thông qua mạng và máy tính khác.
* Yêu cầu chất lượng, ổn định và độ tin cậy cao
Nhiều loại thiết bị nhúng có những yêu cầu rất cao về chất lượng, tính ổn định và độ tin cậy. Lỗi của hệ thống nhúng có thể gây ra tai nạn khủng khiếp: Hệ thống điều khiển máy bay, tên lửa, hệ thống điều khiển động cơ ô tô…Lỗi trên hệ thống nhúng có thể không sửa được (vd: vệ tinh nhân tạo), nếu sửa được thì chi phí cũng rất cao (thu hồi sản phẩm hoặc thiết kế lại toàn bộ…) Vì vậy việc phát triển hệ thống nhúng yêu cầu quy trình kiểm tra – kiểm thử rất cẩn thận.
Thông thường với những hệ thống yêu cầu độ ACTIVE cao thì việc trang bị 1 hệ thống dự phòng, backup là điều chắc chắn.
Nhiều loại thiết bị nhúng có những yêu cầu rất cao về chất lượng, tính ổn định và độ tin cậy. Lỗi của hệ thống nhúng có thể gây ra tai nạn khủng khiếp: Hệ thống điều khiển máy bay, tên lửa, hệ thống điều khiển động cơ ô tô…Lỗi trên hệ thống nhúng có thể không sửa được (vd: vệ tinh nhân tạo), nếu sửa được thì chi phí cũng rất cao (thu hồi sản phẩm hoặc thiết kế lại toàn bộ…) Vì vậy việc phát triển hệ thống nhúng yêu cầu quy trình kiểm tra – kiểm thử rất cẩn thận.
Thông thường với những hệ thống yêu cầu độ ACTIVE cao thì việc trang bị 1 hệ thống dự phòng, backup là điều chắc chắn.
* Một số ví dụ điển hình về hệ thống nhúng
- Các hệ thống dẫn đường trong không lưu, hệ thống định vị toàn cầu, vệ tinh.
- Các thiết bị gia dụng: tủ lạnh, lò vi sóng, lò nướng,…
- Các thiết bị kết nối mạng: router, hub, gateway,…
- Các thiết bị văn phòng: máy photocopy, máy fax, máy in, máy scan,…
- Các thiết bị y tế: máy thẩm thấu, máy điều hòa nhịp tim,…
- Các máy trả lời tự động
- Dây chuyền sản xuất tự động trong công nghiệp, robots.
3. Hệ thống nhúng “lai”
Các thiết bị PDA, Smartphone, Netbook, … cũng có một số đặc điểm tương tự với hệ thống nhúng như hệ điều hành hoặc vi xử lý điều khiển nhưng các thiết bị này không thật sự là hệ thống nhúng, bởi vì chúng là các thiết bị đa dụng, kết nối đến nhiều thiết bị ngoại vi và tương tác với thế giới thực không chặt chẽ.
4. So sánh với PC (Personal Computer)
Hệ thống nhúng | Máy tính cá nhân |
Chuyên dụng | Đa dụng |
Tài nguyên hạn chế | Nhiều tài nguyên |
Kích thước nhỏ gọn | Kích thước lớn |
Ứng dụng ở nhiều nơi | Không gian hoạt động hạn chế |
Một người có thể quản lý nhiều hệ thống | Mỗi người dùng một máy |
5. Kiến trúc hệ thống nhúng
Mỗi hệ thống nhúng đều có một kiến trúc thổng thể như sau:
* Hardware
Vi xử lý, bộ nhớ, tụ điện, điện trở, mạch tích hợp, bảng mạch in, connector, …. Tất nhiên, đây là thành phần bắt buột phải có cho tất cả các hệ thống nhúng.
Nói thêm về bộ vi xử lý trong Hệ thống nhúng:
- Vi xử lý
Bộ xử lý được thiết kế riêng, chỉ bao gồm phần xử lý. Có thể thay đổi thêm bớt các thành phần ngoại vi một cách linh hoạt. - Vi điều khiển
Được tích hợp các thành phần ngoại vi trên chip để giảm kích thước hệ thống. - SoC (System on Chip)
Một vi mạch tích hợp cao, hỗ trợ đa nhân xử lý và nhiều giao tiếp trên 1 chip. Giúp tăng tốc thời gian thiết kế hệ thống.
Sử dụng như một mạch tích hợp cho ứng dụng cụ thể (ASIC) hoặc mạch logic khả trình (FPGA)
* Phần mềm hệ thống
- Không bắt buộc phải có.
- Device driver: UART, Ethernet, ADC…
- Hệ điều hành nhúng: eCos, ucLinux, VxWorks, Monta Vista Linux, BIOS, QNX…
- Quản lý bộ nhớ, quản lý tiến trình, quản lý chia sẽ tài nguyên
- Có thể tái sử dụng trên một hệ thống nhúng khác
* Phần mềm ứng dụng
- Không bắt buộc phải có.
- Quyết định hành vi (chức năng) của một hệ thống nhúng.
- Khó tái sử dụng trên một hệ thống nhúng khác.
6. Thiết kế hệ thống nhúng
Việc thiết kế hệ thống nhúng khá phức tạp và đòi hỏi người kỹ sư thiết kế phải có nhiều kinh nghiệm. Hầu hết các mô hình được sử dụng trong việc thiết kế hệ thống nhúng đều dựa trên một hoặc sự kết hợp nhiều mô hình trong các các mô hình phát triển sau:
* Mô hình big-bang
Không hề có một kế hoạch cụ thể trước và trong suốt quá trình phát triển hệ thống
* Mô hình code-and-fix
Là một mô hình khá đơn giản, chỉ thích hợp cho các chương trình nhỏ (không đòi hỏi việc bảo trì), không thích hợp với các hệ thống lớn, bao gồm 2 bước:
- Viết code
- Fix các vấn đề phát sinh
* Mô hình waterfall
Trong mô hình này, quá trình phát triển hệ thống được xây dựng theo từng bước, các kết quả của một bước sẽ được sử dụng cho bước kế tiếp.
* Mô hình spiral
Quá trình phát triển hệ thống được chia thành nhiều giai đoạn. Dựa trên sự phản hồi từ các giai đoạn, kết hợp trở lại vào quá trình để lên kế hoạch cho việc thực hiện giai đoạn tiếp theo.
(Tham khảo Sectic, Wikipedia)