Hệ thống nhúng Bách khoa toàn thư mở Wikipedia Hệ thống nhúng (tiếng Anh: Embedded system) thuật ngữ để hệ thống có khả tự trị nhúng vào môi trường hay hệ thống mẹ Hệ thống nhúng có vai trò đảm nhận phần công việc cụ thể hệ thống mẹ Hệ thống nhúng hệ thống phần cứng hệ thống phần mềm Bài đoạn cần wiki hóa theo quy cách định dạng văn phong Wikipedia Xin giúp phát triển cách liên kết đến mục từ thích hợp khác Mục lục [ẩn] • • Định nghĩa Embedded system Lịch sử • Các đặc điểm • o 3.1 Giao diện o 3.2 Kiến trúc CPU o 3.3 Thiết bị ngoại vi o 3.4 Công cụ phát triển o 3.5 Độ tin cậy Các kiến trúc phần mềm hệ thống nhúng o 4.1 Vòng lặp kiểm soát đơn giản o 4.2 Hệ thống ngắt điều khiển o 4.3 Đa nhiệm tương tác o 4.4 Đa nhiệm ưu tiên o 4.5 Vi nhân (Microkernel) nhân ngoại (Exokernel) o 4.6 Nhân khối (monolithic kernels) [sửa] Định nghĩa Embedded system Hệ thống nhúng (Embedded system) thuật ngữ để hệ thống có khả tự trị nhúng vào môi trường hay hệ thống mẹ Đó hệ thống tích hợp phần cứng phần mềm phục vụ toán chuyên dụng nhiều lĩnh vực công nghiệp, tự động hoá điều khiển, quan trắc truyền tin Đặc điểm hệ thống nhúng hoạt động ổn định có tính tự động hoá cao Hệ thống nhúng thường thiết kế để thực chức chuyên biệt Khác với máy tính đa chức năng, chẳng hạn máy tính cá nhân, hệ thống nhúng thực một vài chức định, thường kèm với yêu cầu cụ thể bao gồm số thiết bị máy móc phần cứng chuyên dụng mà ta không tìm thấy máy tính đa nói chung Vì hệ thống xây dựng cho số nhiệm vụ định nên nhà thiết kế tối ưu hóa nhằm giảm thiểu kích thước chi phí sản xuất Các hệ thống nhúng thường sản xuất hàng loạt với số lượng lớn Hệ thống nhúng đa dạng, phong phú chủng loại Đó thiết bị cầm tay nhỏ gọn đồng hồ kĩ thuật số máy chơi nhạc MP3, sản phẩm lớn đèn giao thông, kiểm soát nhà máy hệ thống kiểm soát máy lượng hạt nhân Xét độ phức tạp, hệ thống nhúng đơn giản với vi điều khiển phức tạp với nhiều đơn vị, thiết bị ngoại vi mạng lưới nằm gọn lớp vỏ máy lớn Các thiết bị PDA máy tính cầm tay có số đặc điểm tương tự với hệ thống nhúng hệ điều hành vi xử lý điều khiển chúng thiết bị hệ thống nhúng thật chúng thiết bị đa năng, cho phép sử dụng nhiều ứng dụng kết nối đến nhiều thiết bị ngoại vi [sửa] Lịch sử Hệ thống nhúng Apollo Guidance Computer (Máy tính Dẫn đường Apollo) phát triển Charles Stark Draper phòng thí nghiệm trường đại học MIT Hệ thống nhúng sản xuất hàng loạt máy hướng dẫn cho tên lửa quân vào năm 1961 Nó máy hướng dẫn Autonetics D-17, xây dựng sử dụng bóng bán dẫn đĩa cứng để trì nhớ Khi Minuteman II đưa vào sản xuất năm 1996, D-17 thay với máy tính sử dụng mạch tích hợp Tính thiết kế chủ yếu máy tính Minuteman đưa thuật toán lập trình lại sau để làm cho tên lửa xác hơn, máy tính kiểm tra tên lửa, giảm trọng lượng cáp điện đầu nối điện Từ ứng dụng vào năm 1960, hệ thống nhúng giảm giá phát triển mạnh mẽ khả xử lý Bộ vi xử lý hướng đến người tiêu dùng Intel 4004, phát minh phục vụ máy tính điện tử hệ thống nhỏ khác Tuy nhiên cần chip nhớ hỗ trợ khác Vào năm cuối 1970, xử lý bit sản xuất, nhìn chung chúng cần đến chip nhớ bên Vào thập niên 80, kỹ thuật mạch tích hợp đạt trình độ cao dẫn đến nhiều thành phần đưa vào chip xử lý Các vi xử lý gọi vi điều khiển chấp nhận rộng rãi Với giá thấp, vi điều khiển trở nên hấp dẫn để xây dựng hệ thống chuyên dụng Đã có bùng nổ số lượng hệ thống nhúng tất lĩnh vực thị trường số nhà đầu tư sản xuất theo hướng Ví dụ, nhiều chip xử lý đặc biệt xuất với nhiều giao diện lập trình kiểu song song truyền thống để kết nối vi xử lý Vào cuối năm 80, hệ thống nhúng trở nên phổ biến hầu hết thiết bị điện tử khuynh hướng tiếp tục Cho đến nay, khái niệm hệ thống nhúng nhiều người chấp nhận là: hệ thống thực số chức đặc biệt có sử dụng vi xử lý[cần dẫn nguồn] Không có hệ thống nhúng có phần mềm [sửa] Các đặc điểm Hệ thống nhúng thường có số đặc điểm chung sau: • Các hệ thống nhúng thiết kế để thực số nhiệm vụ chuyên dụng đóng vai trò hệ thống máy tính đa chức Một số hệ thống đòi hỏi ràng buộc tính hoạt động thời gian thực để đảm bảo độ an toàn tính ứng dụng; số hệ thống không đòi hỏi ràng buộc chặt chẽ, cho phép đơn giản hóa hệ thống phần cứng để giảm thiểu chi phí sản xuất • Một hệ thống nhúng thường khối riêng biệt mà hệ thống phức tạp nằm thiết bị mà điều khiển • Phần mềm viết cho hệ thống nhúng gọi firmware lưu trữ chip nhớ đọc (read-only memory) nhớ flash ổ đĩa Phần mềm thường chạy với số tài nguyên phần cứng hạn chế: bàn phím, hình có với kích thước nhỏ, nhớ hạn chế Sau đây, ta sâu, xem xét cụ thể đặc điểm thành phần hệ thống nhúng [sửa] Giao diện Các hệ thống nhúng giao diện (đối với hệ thống đơn nhiệm) có đầy đủ giao diện giao tiếp với người dùng tương tự hệ điều hành thiết bị để bàn Đối với hệ thống đơn giản, thiết bị nhúng sử dụng nút bấm, đèn LED hiển thị chữ cỡ nhỏ hiển thị số, thường kèm với hệ thống menu đơn giản Còn hệ thống phức tạp hơn, hình đồ họa, cảm ứng có nút bấm lề hình cho phép thực thao tác phức tạp mà tối thiểu hóa khoảng không gian cần sử dụng; ý nghĩa nút bấm thay đổi theo hình lựa chọn Các hệ thống nhúng thường có hình với nút bấm dạng cần điểu khiển (joystick button) Sự phát triển mạnh mẽ mạng toàn cầu mang đến cho nhà thiết kế hệ nhúng lựa chọn sử dụng giao diện web thông qua việc kết nối mạng Điều giúp tránh chi phí cho hình phức tạp đồng thời cung cấp khả hiển thị nhập liệu phức tạp cần đến, thông qua máy tính khác Điều hữu dụng thiết bị điều khiển từ xa, cài đặt vĩnh viễn Ví dụ, router thiết bị ứng dụng tiện ích [sửa] Kiến trúc CPU Các xử lý hệ thống nhúng chia thành hai loại: vi xử lý vi điều khiển Các vi điều khiển thường có thiết bị ngoại vi tích hợp chip nhằm giảm kích thước hệ thống Có nhiều loại kiến trúc CPU sử dụng thiết kế hệ nhúng ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R, Z80, Z8 … Điều trái ngược với loại máy tính để bàn, thường bị hạn chế với vài kiến trúc máy tính định Các hệ thống nhúng có kích thước nhỏ thiết kế để hoạt động môi trường công nghiệp thường lựa chọn PC/104 PC/104++ làm tảng Những hệ thống thường sử dụng DOS, Linux, NetBSD hệ điều hành nhúng thời gian thực QNX hay VxWorks Còn hệ thống nhúng có kích thước lớn thường sử dụng cấu hình thông dụng hệ thống on chip (System on a chip – SoC), bảng mạch tích hợp cho ứng dụng cụ thể (an application-specific integrated circuit – ASIC) Sau nhân CPU mua thêm vào phần thiết kế chip Một chiến lược tương tự sử dụng FPGA (fieldprogrammable gate array) lập trình cho với thành phần nguyên lý thiết kế bao gồm CPU [sửa] Thiết bị ngoại vi Hệ thống nhúng giao tiếp với bên thông qua thiết bị ngoại vi, ví dụ như: • Serial Communication Interfaces (SCI): RS-232, RS-422, RS-485 • Synchronous Serial Communication Interface: I2C, JTAG, SPI, SSC ESSI • Universal Serial Bus (USB) • Networks: Controller Area Network, LonWorks • Bộ định thời: PLL(s), Capture/Compare Time Processing Units • Discrete IO: General Purpose Input/Output (GPIO) [sửa] Công cụ phát triển Tương tự sản phẩm phần mềm khác, phần mềm hệ thống nhúng phát triển nhờ việc sử dụng trình biên dịch (compilers), chương trình dịch hợp ngữ (assembler) công cụ gỡ rối (debuggers) Tuy nhiên, nhà thiết kế hệ thống nhúng sử dụng số công cụ chuyên dụng như: • Bộ gỡ rối mạch chương trình mô (emulator) • Tiện ích để thêm giá trị checksum CRC vào chương trình, giúp hệ thống nhúng kiểm tra tính hợp lệ chương trình • Đối với hệ thống xử lý tín hiệu số, người phát triển hệ thống sử dụng phần mềm workbench MathCad Mathematica để mô phép toán • Các trình biên dịch trình liên kết (linker) chuyên dụng sử dụng để tối ưu hóa thiết bị phần cứng • Một hệ thống nhúng có ngôn ngữ lập trình công cụ thiết kế riêng sử dụng cải tiến từ ngôn ngữ có sẵn Các công cụ phần mềm tạo công ty phần mềm chuyên dụng hệ thống nhúng chuyển đổi từ công cụ phát triển phần mềm GNU Đôi khi, công cụ phát triển dành cho máy tính cá nhân sử dụng xử lý hệ thống nhúng gần giống với xử lý máy PC thông dụng [sửa] Độ tin cậy Các hệ thống nhúng thường nằm cỗ máy kỳ vọng chạy hàng năm trời liên tục mà không bị lỗi khôi phục hệ thống gặp lỗi Vì thế, phần mềm hệ thống nhúng phát triển kiểm thử cách cẩn thận phần mềm cho máy tính cá nhân Ngoài ra, thiết bị rời không đáng tin cậy ổ đĩa, công tắc nút bấm thường bị hạn chế sử dụng Việc khôi phục hệ thống gặp lỗi thực cách sử dụng kỹ thuật watchdog timer – phần mềm không đặn nhận tín hiệu watchdog định kì hệ thống bị khởi động lại Một số vấn đề cụ thể độ tin cậy như: • Hệ thống ngừng để sửa chữa cách an toàn, ví dụ hệ thống không gian, hệ thống dây cáp đáy biển, đèn hiệu dẫn đường,… Giải pháp đưa chuyển sang sử dụng hệ thống dự trữ phần mềm cung cấp phần chức • Hệ thống phải chạy liên tục tính an toàn, ví dụ thiết bị dẫn đường máy bay, thiết bị kiểm soát độ an toàn nhà máy hóa chất,… Giải pháp đưa lựa chọn backup hệ thống • Nếu hệ thống ngừng hoạt động gây tổn thất nhiều tiền ví dụ dịch vụ buôn bán tự động, hệ thống chuyển tiền, hệ thống kiểm soát nhà máy … [sửa] Các kiến trúc 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 hệ thống nhúng sau: [sửa] Vòng lặp kiểm soát đơn giản Theo thiết kế này, phần mềm tổ chức thành vòng lặp đơn giản Vòng lặp gọi đến chương trình con, chương trình quản lý phần hệ thống phần cứng phần mềm [sửa] Hệ thống ngắt điều khiển Các hệ thống nhúng thường điểu khiển ngắt Có nghĩa tác vụ hệ thống nhúng kích hoạt loại kiện khác Ví dụ, ngắt sinh định thời sau chu kỳ định nghĩa trước, kiện cổng nối tiếp nhận byte Loại kiến trúc thường sử dụng hệ thống có quản lý kiện đơn giản, ngắn gọn cần độ trễ thấp Hệ thống thường thực tác vụ đơn giản vòng lặp Đôi khi, tác vụ phức tạp thêm vào cấu trúc hàng đợi quản lý ngắt để 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 tiến trình rời rạc [sửa] Đa nhiệm tương tác Một hệ thống đa nhiệm không ưu tiên 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 giấu thông qua giao diện lập trình API Các nhà lập trình định nghĩa loạt nhiệm vụ, nhiệm vụ chạy môi trường riêng Khi không cần thực nhiệm vụ gọi đến tiến trình tạm nghỉ (bằng cách gọi “pause”, “wait”, “yeild” …) Ưu điểm nhược điểm loại kiến trúc giống với kiểm vòng lặp kiểm soát đơn giản Tuy nhiên, việc thêm phần mềm thực dễ dàng cách lập trình tác vụ thêm vào hàng đợi thông dịch (queue-interpreter) [sửa] Đa nhiệm ưu tiên Ở loại kiến trúc này, hệ thống thường có đoạn mã mức thấp thực việc chuyển đổi tác vụ khác thông qua định thời Đoạn mã thường nằm mức mà hệ thống coi có hệ điều hành gặp phải tất phức tạp việc quản lý đa nhiệm Bất kỳ tác vụ phá hủy liệu tác vụ khác cần phải tách biệt cách xác Việc truy cập tới liệu chia sẻ quản lý số kỹ thuật đồng hóa hàng đợi thông điệp (message queues), semaphores … Vì phức tạp nói nên giải pháp thường đưa sử dụng hệ điều hành thời gian thực Lúc đó, nhà lập trình tập trung vào việc phát triển chức thiết bị không cần quan tâm đến dịch vụ hệ điều hành [sửa] Vi nhân (Microkernel) nhân ngoại (Exokernel) Khái niệm vi nhân (microkernel) bước tiếp cận gầ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 việc cấp phát nhớ chuyển CPU cho luồng thực thi Còn tiến trình người dùng sử dụng chức hệ thống file, giao diện mạng lưới,… Nói chung, kiến trúc thường áp dụng hệ thống mà việc chuyển đổi giao tiếp tác vụ nhanh Còn nhân ngoại (exokernel) tiến hành giao tiếp hiệu cách sử dụng lời gọi chương trình thông thường Phần cứng toàn phần mềm hệ thống đáp ứng mở rộng ứng dụng [sửa] Nhân khối (monolithic kernels) Trong kiến trúc này, nhân đầy đủ với khả phức tạp chuyển đổi để phù hợp với môi trường nhúng Điều giúp nhà lập trình có môi trường giống với hệ điều hành máy để bàn Linux hay Microsoft Windows thuận lợi cho việc phát triển Tuy nhiên, lại đòi hỏi đáng kể tài nguyên phần cứng làm tăng chi phí hệ thống Một số loại nhân khối thông dụng Embedded Linux Windows CE Mặc dù chi phí phần cứng tăng lên loại hệ thống nhúng tăng trưởng mạnh, đặc biệt thiết bị nhúng mạnh Wireless router hệ thống định vị GPS Lý điều là: • Hệ thống có cổng để kết nối đến chip nhúng thông dụng • Hệ thống cho phép sử dụng lại đoạn mã sẵn có phổ biến trình điều khiển thiết bị, Web Servers, Firewalls, … • Việc phát triển hệ thống tiến hành với tập nhiều loại đặc tính, chức sau lúc phân phối sản phẩm, hệ thống cấu hình để loại bỏ số chức không cần thiết Điều giúp tiết kiệm vùng nhớ mà chức chiếm giữ • Hệ thống có chế độ người dùng để dễ dàng chạy ứng dụng gỡ rối Nhờ đó, qui trình phát triển thực dễ dàng việc lập trình có tính linh động • Có nhiều hệ thống nhúng thiếu yêu cầu chặt chẽ tính thời gian thực hệ thống quản lý Còn hệ thống Embedded Linux có tốc độ đủ nhanh để trả lời cho nhiều ứng dụng Các chức cần đến phản ứng nhanh đặt vào phần cứng ... Không có hệ thống nhúng có phần mềm [sửa] Các đặc điểm Hệ thống nhúng thường có số đặc điểm chung sau: • Các hệ thống nhúng thiết kế để thực số nhiệm vụ chuyên dụng đóng vai trò hệ thống máy... phần hệ thống nhúng [sửa] Giao diện Các hệ thống nhúng giao diện (đối với hệ thống đơn nhiệm) có đầy đủ giao diện giao tiếp với người dùng tương tự hệ điều hành thiết bị để bàn Đối với hệ thống. .. backup hệ thống • Nếu hệ thống ngừng hoạt động gây tổn thất nhiều tiền ví dụ dịch vụ buôn bán tự động, hệ thống chuyển tiền, hệ thống kiểm soát nhà máy … [sửa] Các kiến trúc phần mềm hệ thống nhúng