HỆ THỐNG NHÚNG (Embedded System)
- epcbtech
- 15 thg 2, 2022
- 13 phút đọc
Hệ thống nhúng là sự kết hợp của phần cứng và phần mềm máy tính được thiết kế cho một chức năng cụ thể. Hệ thống nhúng cũng có thể hoạt động trong một hệ thống lớn hơn. Các hệ thống có thể được lập trình hoặc có một chức năng cố định. Các máy móc công nghiệp, điện tử tiêu dùng, thiết bị nông nghiệp và công nghiệp chế biến, ô tô, thiết bị y tế, máy ảnh, đồng hồ kỹ thuật số, thiết bị gia dụng, máy bay, máy bán hàng tự động và đồ chơi, cũng như thiết bị di động, là nơi mà một hệ thống nhúng có thể được tích hợp bên trong các thiết bị, máy móc đó.
Các hệ thống nhúng có thể xem như là hệ thống máy tính, ban đầu chúng có thể không hỗ trợ các giao diện người dùng (được viết tắt là UI - User Interface) mà chỉ được thiết kế để thực hiện một tác vụ duy nhất. Các hệ thống nhúng này đã được nâng cấp và phát triển để có thể hỗ trợ các giao diện đồ họa người dùng phức tạp (GUI - Graphical User Interface). Một ví dụ cụ thể là như trong các thiết bị di động hiện nay, các giao diện người dùng có thể bao gồm các nút nhấn, đèn LED và cảm biến màn hình cảm ứng. Không chỉ dừng lại ở đó, một số hệ thống khác cũng sử dụng giao diện người dùng để điều khiển từ xa.
MarketsandMarkets - Một công ty nghiên cứu giữa doanh nghiệp với doanh nghiệp (B2B - Business to business), dự đoán rằng thị trường các hệ thống, sản phẩm, thiết bị hay linh kiện nhúng sẽ đạt giá trị 116,2 tỷ USD vào năm 2025. Trong đó, các nhà sản xuất chip cho hệ thống nhúng bao gồm nhiều công ty công nghệ nổi tiếng như Apple, IBM, Intel và Texas Instruments . Sự tăng trưởng được dự kiến một phần là do quá trình tiếp tục đầu tư vào trí tuệ nhân tạo (AI - Artificial Intelligence), điện toán di động và nhu cầu về chip được thiết kế để xử lý cấp cao hơn.
Ví dụ về hệ thống nhúng
Hệ thống nhúng được sử dụng vào hàng loạt các công nghệ của nhiều ngành công nghiệp. Dưới đây là một số ví dụ bao gồm:
Công nghệ ô tô (Automobiles): Những chiếc ô tô hiện đại thường bao gồm nhiều máy tính (đôi khi lên tới số lượng hàng trăm cái), hoặc các hệ thống nhúng. Chúng được thiết kế để thực hiện những nhiệm vụ khác nhau bên trong một chiếc xe. Một số hệ thống này thực hiện các chức năng tiện ích cơ bản và những hệ thống khác cung cấp các chức năng giải trí hoặc hướng đến người dùng. Một số hệ thống nhúng trong xe tiêu dùng bao gồm kiểm soát hành trình, cảm biến dự phòng, kiểm soát hệ thống treo, hệ thống định vị và hệ thống túi khí.
Điện thoại di động (Mobile phones): Chúng bao gồm nhiều hệ thống nhúng, gồm cả phần cứng lẫn phần mềm, giao diện đồ họa người dùng, hệ điều hành (OS - Operating System), máy ảnh, micrô và các module I/O (đầu vào/đầu ra - Input / Output) USB (Universal Serial Bus).
Máy móc công nghiệp (Industrial machines): Các máy công nghiệp thường có các hệ thống nhúng bên trong, kết hợp nhiều cảm biến để đem tới sự tự động hóa cho các máy móc đó. Nhờ vậy chúng có thể thực hiện các chức năng giám sát và điều khiển cụ thể.
Thiết bị y tế (Medical equipment): Các thiết bị y tế cũng cần phải rất gần gũi và dễ sử dụng với người dùng và bệnh nhân để sức khỏe con người không bị đe dọa bởi những lỗi máy móc khó có thể phòng tránh được. Điều này có nghĩa là chúng thường sẽ bao gồm một hệ điều hành và giao diện đồ họa phức tạp hơn được thiết kế cho một giao diện người dùng thích hợp.
Hệ thống nhúng hoạt động như thế nào?
Hệ thống nhúng luôn hoạt động như một phần của một thiết bị hoàn chỉnh, đây chính xác là ý nghĩa của thuật ngữ nhúng. Chúng là những máy tính nhỏ giá rẻ, tiêu thụ điện năng thấp, được nhúng vào các hệ thống cơ khí hoặc các hệ thống điện tử khác. Nói chung, chúng bao gồm một bộ xử lý, bộ cấp nguồn, bộ nhớ và các cổng giao tiếp. Hệ thống nhúng sử dụng các cổng giao tiếp để truyền dữ liệu giữa bộ xử lý và các thiết bị ngoại vi, thường là các hệ thống nhúng khác thông qua việc sử dụng một giao thức truyền thông. Bộ xử lý sẽ xử lý dữ liệu này với sự trợ giúp của phần mềm tối thiểu được lưu trữ trên bộ nhớ. Phần mềm này thường rất cụ thể cho chức năng mà hệ thống nhúng phục vụ.
Bộ xử lý có thể là bộ vi xử lý (Microprocessor) hoặc vi điều khiển (Microcontroller ). Bộ vi điều khiển chỉ đơn giản là bộ vi xử lý có giao diện ngoại vi và bộ nhớ tích hợp đi kèm. Bộ vi xử lý sử dụng các mạch tích hợp riêng biệt cho bộ nhớ và thiết bị ngoại vi thay vì đưa chúng vào chip. Cả hai đều có thể được sử dụng, nhưng bộ vi xử lý thường yêu cầu nhiều mạch hỗ trợ hơn trong khi bộ vi điều khiển vì ít được tích hợp vào bộ vi xử lý hơn. Thuật ngữ hệ thống trên chip (SoC - System On Chip) thường được sử dụng. SoC bao gồm nhiều bộ xử lý và giao diện trên một con chip. Chúng thường được sử dụng cho các hệ thống nhúng khối lượng lớn. Một số loại SoC ví dụ là mạch tích hợp dành riêng cho ứng dụng (ASIC - Application Specific Integrated Circuit) và mảng cổng lập trình trường (FPGA - Field Programmable Gate Array).
Thông thường, các hệ thống nhúng được sử dụng trong môi trường hoạt động thời gian thực và sử dụng hệ điều hành thời gian thực (RTOS - Real-time Operating System) để giao tiếp với phần cứng. Các phương pháp tiếp cận thời gian thực gần như phù hợp ở các cấp độ cao hơn về khả năng của chip, được xác định bởi các nhà thiết kế, những người ngày càng quyết định các hệ thống nói chung là đủ nhanh và các tác vụ có thể chịu được những thay đổi nhỏ trong phản ứng. Trong những trường hợp này, các phiên bản rút gọn của hệ điều hành Linux thường được triển khai, mặc dù các hệ điều hành khác đã được giảm bớt để chạy trên các hệ thống nhúng, bao gồm Embedded Java và Windows IoT (trước đây là Windows Embedded).
Đặc điểm của hệ thống nhúng
Đặc điểm chính của các hệ thống nhúng là chúng đảm nhận nhiệm vụ, chức năng riêng biệt. Ngoài ra, các hệ thống nhúng còn bao gồm các đặc điểm sau:
Về cơ bản, một hệ thống nhúng bao gồm phần cứng (Hardware), phần mềm (Software) và firmware.
Các hệ thống nhúng có thể được nhúng vào một hệ thống lớn hơn để thực hiện một chức năng cụ thể vì chúng được xây dựng cho các nhiệm vụ chuyên biệt trong một hệ thống lớn.
Chúng dựa trên bộ vi xử lý hoặc bộ vi điều khiển. Cả hai đều là các mạch tích hợp có khả năng tính toán việc cung cấp năng lượng phù hợp cho hệ thống.
Thường được sử dụng để cảm nhận và tính toán thời gian thực trong các thiết bị IoT (Internet of Things).
Tùy vào độ phức tạp và chức năng, điều này ảnh hưởng đến phần mềm, firmware và phần cứng mà chúng được sử dụng để thiết kế và vận hành.
Chúng thường được yêu cầu cao về việc hoạt động trong một giới hạn thời gian để giữ cho hệ thống lớn hơn hoạt động bình thường.
Cấu trúc của một hệ thống nhúng
Các hệ thống nhúng có thể khác nhau về độ phức tạp nhưng nhìn chung, bao gồm ba yếu tố chính:
Phần cứng (Hardware): Dựa trên bộ vi xử lý hay vi điều khiển. Bộ vi xử lý rất giống với bộ vi điều khiển và thường dùng để chỉ CPU (Central Processing Unit) được tích hợp với các thành phần tính toán cơ bản khác như bộ nhớ (Memory) và bộ xử lý tín hiệu kỹ thuật số (DSP - Digital Signal Processor). Về phần bộ vi điều khiển gồm các thành phần vi xử lý được tích hợp bên trong một con chip.
Phần mềm (Software) và firmware: Phần mềm cho các hệ thống nhúng có thể khác nhau về độ phức tạp và giải thuật. Tuy nhiên, các bộ vi điều khiển dành cho công nghiệp và các hệ thống IoT nhúng thường chạy phần mềm rất đơn giản, yêu cầu ít bộ nhớ.
Hệ điều hành thời gian thực (Real-time operating system): Hệ điều hành thời gian thực không phải lúc nào cũng có trong các hệ thống nhúng, đặc biệt là các hệ thống quy mô nhỏ hơn. Các hệ điều hành thời gian thực (RTOS - Real-time Operating System) xác định cách thức hoạt động của hệ thống bằng cách giám sát phần mềm và thiết lập các quy tắc chuyển đổi ngữ cảnh (Context Switching) trong quá trình thực thi chương trình.
Về phần cứng, một hệ thống nhúng cơ bản sẽ bao gồm các yếu tố sau:
Cảm biến (Sensor): Chuyển đổi dữ liệu cảm nhận được từ dạng vật lý thành tín hiệu điện.
Bộ chuyển đổi tương tự sang kỹ thuật số (Analog to Digital): Thay đổi tín hiệu điện tương tự thành tín hiệu kỹ thuật số.
Bộ vi xử lý (Microprocessor): Xử lý tín hiệu kỹ thuật số và lưu trữ dữ liệu trong bộ nhớ.
Bộ chuyển đổi kỹ thuật số sang tương tự (Digital to Analog): Thay đổi dữ liệu kỹ thuật số từ bộ xử lý thành dữ liệu tương tự.
Bộ truyền động (Actuators): So sánh đầu ra thực tế với đầu ra được lưu trong bộ nhớ và lựa chọn chúng.
Cảm biến đọc đầu vào từ bên ngoài, bộ chuyển đổi sẽ làm cho đầu vào trở thành tín hiệu điện để bộ xử lý đọc được và bộ xử lý sẽ biến thông tin đó thành đầu ra hữu ích cho hệ thống nhúng.
Phân loại các hệ thống nhúng
Có một số loại hệ thống nhúng về cơ bản là giống nhau nhưng lại khác nhau về yêu cầu chức năng của chúng.
Hệ thống nhúng di động (Mobile embedded systems) là các hệ thống có kích thước nhỏ được thiết kế dành cho các thiết bị di động như máy ảnh kỹ thuật số, điện thoại di động.
Hệ thống nhúng kết nối mạng lưới (Networked embedded systems) được kết nối với một mạng để cung cấp đầu ra cho các hệ thống khác. Ví dụ bao gồm hệ thống an ninh gia đình và hệ thống điểm bán hàng (POS).
Hệ thống nhúng độc lập (Standalone embedded systems) là một hệ thống nhúng không phụ thuộc vào hệ thống máy chủ. Giống như bất kỳ hệ thống nhúng nào, chúng thực hiện một nhiệm vụ chuyên biệt. Tuy nhiên, chúng không nhất thiết phải thuộc về một hệ thống chủ, không giống như các hệ thống nhúng khác. Máy tính hoặc máy nghe nhạc MP3 là một ví dụ.
Hệ thống nhúng thời gian thực (Real-time embedded systems) cung cấp đầu ra cần thiết trong một khoảng thời gian xác định. Chúng thường được sử dụng trong các lĩnh vực y tế, công nghiệp và quân sự vì chúng đảm nhận trách nhiệm cho các nhiệm vụ quan trọng, nghiêm ngặt về thời gian. Hệ thống kiểm soát giao thông là một ví dụ.
Ngoài ra, hệ thống nhúng cũng có thể được phân loại theo yêu cầu hiệu suất của chúng:
Các hệ thống nhúng quy mô nhỏ (Small-scale embedded systems) thường sử dụng không quá một bộ vi điều khiển 8-bit.
Các hệ thống nhúng quy mô trung bình (Medium-scale embedded systems) sử dụng một bộ vi điều khiển lớn hơn (16-32 bit) và thường liên kết các bộ vi điều khiển với nhau.
Các hệ thống nhúng quy mô phức tạp (Sophisticated-scale embedded systems) thường sử dụng một số thuật toán dẫn đến sự phức tạp của phần mềm và phần cứng và có thể yêu cầu phần mềm phức tạp hơn, bộ xử lý có thể cấu hình và mảng logic có thể lập trình được.
Một số kiến trúc phần mềm hệ thống nhúng phổ biến, chúng trở nên cần thiết khi các hệ thống nhúng phát triển và phức tạp hơn về quy mô. Bao gồm:
Các vòng điều khiển đơn giản (Simple control loops) gọi các chương trình con, chương trình này quản lý một phần cụ thể của phần cứng hoặc lập trình nhúng.
Hệ thống điều khiển ngắt (Interrupt controlled systems) bao gồm hai vòng lặp là vòng lặp chính và vòng lặp thứ cấp. Sự gián đoạn trong các vòng lặp sẽ kích hoạt các tác vụ.
Đa nhiệm tác vụ (Cooperative multitasking) thực chất là một vòng điều khiển đơn giản nằm trong một giao diện lập trình ứng dụng (API - Application Programming Interface).
Đa nhiệm ưu tiên hoặc đa luồng (Preemptive multitasking or multithreading) thường được sử dụng với RTOS và có các chiến lược đồng bộ hóa và chuyển đổi tác vụ.
VLSI - Very large-scale integration, là một thuật ngữ mô tả mức độ phức tạp của một mạch tích hợp (IC - Integrated Circuit). VLSI là quá trình nhúng hàng trăm nghìn bóng bán dẫn vào một con chip, trong khi các vi mạch LSI (Large-scale integration) chứa hàng nghìn bóng bán dẫn, MSI (Medium-scale integration) chứa hàng trăm bóng bán dẫn và SSI (Small-scale Integration) chứa hàng chục bóng bán dẫn. ULSI (Ultra Large Scale Integration) đề cập đến việc đặt hàng triệu bóng bán dẫn trên một con chip.
Các mạch VLSI là đặc điểm chung của các hệ thống nhúng. Nhiều IC trong hệ thống nhúng là VLSI và việc sử dụng từ viết tắt VLSI phần lớn không được ưa chuộng.
Gỡ lỗi (Debugging) trong hệ thống nhúng
Hệ thống nhúng là một vùng mà tách biệt với hệ điều hành và môi trường phát triển của các máy tính người dùng (PC - Personal Computer). Thông thường, các nhà phát triển làm việc với môi trường máy tính để bàn có các hệ thống có thể chạy cả mã đang được phát triển và các ứng dụng gỡ lỗi riêng biệt phục vụ cho việc giám sát mã của các lập trình viên.
Một số ngôn ngữ lập trình chạy trên vi điều khiển đủ hiệu quả để phục vụ cho quá trình gỡ lỗi trực tiếp trên chip. Ngoài ra, các bộ xử lý thường có bộ gỡ lỗi CPU có thể được kiểm soát. Do đó, việc kiểm soát quá trình thực thi chương trình thông qua chuẩn JTAG hoặc cổng gỡ lỗi trở nên dễ dàng và thuận tiện hơn.
Tuy nhiên trong nhiều trường hợp, các lập trình viên cần các công cụ để kết nối một hệ thống gỡ lỗi riêng biệt với hệ thống nhúng thông qua một cổng nối tiếp hoặc cổng khác. Trong trường hợp này, người lập trình có thể thấy mã nguồn trên màn hình của máy tính, giống như trường hợp gỡ lỗi phần mềm trên máy tính để bàn. Một cách tiếp cận riêng biệt khác thường được sử dụng là chạy phần mềm trên PC mô phỏng chip vật lý trong phần mềm. Về cơ bản, điều này làm cho hiệu suất gỡ lỗi của phần mềm như thể nó đang chạy trên một chip vật lý thực tế.
Nói tóm lại, các hệ thống nhúng đã nhận được nhiều sự quan tâm hơn về việc kiểm tra và gỡ lỗi bởi vì một số lượng lớn các thiết bị sử dụng đề chứa các hệ thống nhúng được thiết kế để sử dụng, đặc biệt là trong các tình huống mà an toàn và độ tin cậy là ưu tiên hàng đầu.
Lịch sử của các hệ thống nhúng
Hệ thống nhúng có từ những năm 1960. Charles Stark Draper đã phát triển một mạch tích hợp vào năm 1961 để giảm kích thước và trọng lượng của hệ thống máy tính điều khiển tàu Apollo (AGC - Apollo Guidance Computer), hệ thống kỹ thuật số được cài đặt trên module lệnh Apollo và module Mặt trăng. Máy tính đầu tiên sử dụng vi mạch, nó đã giúp các phi hành gia thu thập dữ liệu chuyến bay theo thời gian thực.
Năm 1965, Autonetics, hiện là một bộ phận của Boeing, đã phát triển D-17B, máy tính được sử dụng trong hệ thống dẫn đường tên lửa Minuteman I. Nó được công nhận rộng rãi là hệ thống nhúng được sản xuất hàng loạt đầu tiên. Khi Minuteman II đi vào sản xuất năm 1966, D-17B được thay thế bằng hệ thống dẫn đường tên lửa NS-17, được biết đến với việc sử dụng khối lượng lớn các vi mạch tích hợp. Năm 1968, hệ thống nhúng đầu tiên cho một chiếc xe được phát hành, Volkswagen 1600 đã sử dụng một bộ vi xử lý để điều khiển hệ thống phun xăng điện tử.
Vào cuối những năm 1960 và đầu những năm 1970, giá của các mạch tích hợp giảm xuống và việc sử dụng tăng lên. Bộ vi điều khiển đầu tiên được Texas Instruments phát triển vào năm 1971. Dòng TMS1000, được bán trên thị trường vào năm 1974, chứa bộ xử lý 4 bit, bộ nhớ chỉ đọc (ROM) và bộ nhớ truy cập ngẫu nhiên (RAM), và nó có giá khoảng 2 đô la. từng đơn đặt hàng số lượng lớn.
Ngoài ra, vào năm 1971, Intel đã phát hành thứ được công nhận rộng rãi là bộ xử lý thương mại đầu tiên, 4004. Bộ vi xử lý 4 bit được thiết kế để sử dụng trong máy tính và thiết bị điện tử nhỏ, mặc dù nó yêu cầu bộ nhớ vĩnh cửu và chip hỗ trợ. Intel 8008 8-bit, phát hành năm 1972, có bộ nhớ 16 KB. Tiếp theo là Intel 8080 vào năm 1974 với bộ nhớ 64 KB. Người kế nhiệm của 8080, sê-ri x86, được phát hành vào năm 1978 và phần lớn vẫn được sử dụng cho đến ngày nay.
Năm 1987, hệ điều hành nhúng đầu tiên, VxWorks thời gian thực, được phát hành bởi Wind River, tiếp theo là Windows Embedded CE của Microsoft vào năm 1996. Đến cuối những năm 1990, các sản phẩm Linux nhúng đầu tiên bắt đầu xuất hiện. Ngày nay, Linux được sử dụng trong hầu hết các thiết bị nhúng.
Xu hướng hệ thống nhúng
Hệ thống nhúng ngày càng trở nên phức tạp hơn và ngày càng nhiều hệ thống trong số chúng hiện có thể thay thế việc ra quyết định của con người hoặc cung cấp các khả năng vượt quá những gì con người có thể cung cấp. Ví dụ như một số hệ thống hàng không, bao gồm cả những hệ thống được sử dụng trong máy bay không người lái, có thể tích hợp dữ liệu cảm biến và hoạt động dựa trên thông tin đó nhanh hơn con người có thể.
Hệ thống nhúng dự kiến sẽ tiếp tục phát triển nhanh chóng, phần lớn được thúc đẩy bởi IoT. Việc mở rộng các ứng dụng IoT, chẳng hạn như thiết bị đeo, máy bay không người lái, nhà thông minh, tòa nhà thông minh, giám sát video, máy in 3D và giao thông thông minh, dự kiến sẽ thúc đẩy tăng trưởng hệ thống nhúng.
Kommentarer