Hệ thống nhúng – Wikipedia

Một hệ thống nhúng trên thẻ cắm với bộ xử lý, bộ nhớ, nguồn điện và giao diện bên ngoài

Hệ thống nhúng là bộ điều khiển được lập trình và điều khiển bởi một thiết bị thực hệ điều hành thời gian (RTOS) với chức năng chuyên dụng trong một hệ thống cơ hoặc điện lớn hơn, thường có các ràng buộc về điện toán thời gian thực. [1][2] Đó là được nhúng như một phần của một thiết bị hoàn chỉnh thường bao gồm cả phần cứng và cơ khí các bộ phận. Các hệ thống nhúng điều khiển nhiều thiết bị được sử dụng phổ biến hiện nay. [3] Chín mươi tám phần trăm của tất cả các bộ vi xử lý được sản xuất để phục vụ như một thành phần hệ thống nhúng. [4]

Ví dụ về các đặc tính của máy tính nhúng thông thường khi so sánh với các đối tác có mục đích chung là tiêu thụ điện năng thấp , kích thước nhỏ, phạm vi hoạt động chắc chắn và chi phí cho mỗi đơn vị thấp. Điều này có giá của các tài nguyên xử lý hạn chế, khiến chúng khó lập trình và tương tác hơn đáng kể. Tuy nhiên, bằng cách xây dựng các cơ chế thông minh trên phần cứng, tận dụng các cảm biến hiện có có thể và sự tồn tại của một mạng các đơn vị nhúng, người ta có thể quản lý tối ưu các tài nguyên có sẵn ở cấp độ đơn vị và mạng cũng như cung cấp các chức năng tăng cường, vượt xa Những thứ có sẵn. [5] Ví dụ, các kỹ thuật thông minh có thể được thiết kế để quản lý mức tiêu thụ năng lượng của các hệ thống nhúng. [6]

Các hệ thống nhúng hiện đại thường dựa trên bộ vi điều khiển (ví dụ: CPU có bộ nhớ tích hợp hoặc giao diện ngoại vi), [7] nhưng bộ vi xử lý thông thường (sử dụng chip ngoài cho bộ nhớ và mạch giao diện ngoại vi) cũng rất phổ biến, đặc biệt là trong các hệ thống phức tạp hơn. Trong cả hai trường hợp, (các) bộ xử lý được sử dụng có thể là các loại từ mục đích chung đến những chuyên ngành trong một số tính toán nhất định hoặc thậm chí được thiết kế tùy chỉnh cho ứng dụng trong tay. Một lớp tiêu chuẩn chung của bộ xử lý chuyên dụng là bộ xử lý tín hiệu số (DSP).

Vì hệ thống nhúng được dành riêng cho các tác vụ cụ thể, các kỹ sư thiết kế có thể tối ưu hóa nó để giảm kích thước và giá thành của sản phẩm và tăng độ tin cậy và hiệu suất. Một số hệ thống nhúng được sản xuất hàng loạt, được hưởng lợi từ quy mô kinh tế.

Các hệ thống nhúng bao gồm từ các thiết bị cầm tay như đồng hồ kỹ thuật số và máy nghe nhạc MP3, đến các cài đặt cố định lớn như đèn giao thông, bộ điều khiển nhà máy và các hệ thống phức tạp như xe hybrid, MRI và hệ thống điện tử hàng không. Độ phức tạp thay đổi từ thấp, với một chip vi điều khiển duy nhất, đến rất cao với nhiều đơn vị, thiết bị ngoại vi và mạng được gắn bên trong khung hoặc vỏ lớn.

Lịch sử [ chỉnh sửa ]

Một trong những hệ thống nhúng hiện đại đầu tiên có thể nhận biết được là Máy tính Hướng dẫn Apollo,

cần trích dẫn ] phát triển ca. Năm 1965 bởi Charles Stark Draper tại Phòng thí nghiệm thiết bị MIT. Khi bắt đầu dự án, máy tính hướng dẫn Apollo được coi là mặt hàng rủi ro nhất trong dự án Apollo khi nó sử dụng các mạch tích hợp nguyên khối mới được phát triển để giảm kích thước và trọng lượng. Một hệ thống nhúng được sản xuất hàng loạt ban đầu là máy tính dẫn đường Autonetic D-17 cho tên lửa Minuteman, được phát hành vào năm 1961. Khi Minuteman II đi vào sản xuất vào năm 1966, D-17 đã được thay thế bằng một máy tính mới cao cấp đầu tiên khối lượng sử dụng của các mạch tích hợp.

Kể từ những ứng dụng đầu tiên vào những năm 1960, các hệ thống nhúng đã giảm giá và đã có sự gia tăng mạnh mẽ về sức mạnh xử lý và chức năng. Ví dụ, một bộ vi xử lý ban đầu, Intel 4004 (phát hành năm 1971), được thiết kế cho máy tính và các hệ thống nhỏ khác nhưng vẫn cần bộ nhớ ngoài và chip hỗ trợ. Năm 1978 Hiệp hội các nhà sản xuất kỹ thuật quốc gia đã phát hành một "tiêu chuẩn" cho các bộ vi điều khiển có thể lập trình, bao gồm hầu hết mọi bộ điều khiển dựa trên máy tính, chẳng hạn như máy tính bảng đơn, bộ điều khiển số và bộ điều khiển dựa trên sự kiện.

Khi chi phí của bộ vi xử lý và vi điều khiển giảm, việc thay thế các thành phần tương tự dựa trên núm đắt tiền như chiết áp và tụ điện thay đổi bằng nút lên / xuống được đọc bởi bộ vi xử lý ngay cả trong các sản phẩm tiêu dùng là điều khả thi. Đến đầu những năm 1980, các thành phần hệ thống bộ nhớ, đầu vào và đầu ra đã được tích hợp vào cùng một chip với bộ xử lý tạo thành một vi điều khiển. Vi điều khiển tìm các ứng dụng trong đó một máy tính đa năng sẽ quá tốn kém.

Một bộ vi điều khiển có chi phí tương đối thấp có thể được lập trình để thực hiện vai trò tương tự như một số lượng lớn các thành phần riêng biệt. Mặc dù trong bối cảnh này, một hệ thống nhúng thường phức tạp hơn một giải pháp truyền thống, hầu hết sự phức tạp được chứa trong chính vi điều khiển. Rất ít thành phần bổ sung có thể cần thiết và hầu hết nỗ lực thiết kế là trong phần mềm. Nguyên mẫu và thử nghiệm phần mềm có thể nhanh hơn so với thiết kế và xây dựng một mạch mới không sử dụng bộ xử lý nhúng.

Các ứng dụng [ chỉnh sửa ]

Tiểu hội máy tính nhúng cho máy bỏ phiếu điện tử Accupoll [8]

Các hệ thống nhúng thường được tìm thấy trong công nghiệp, người tiêu dùng , ứng dụng ô tô, y tế, thương mại và quân sự.

Các hệ thống viễn thông sử dụng nhiều hệ thống nhúng từ các thiết bị chuyển mạch điện thoại cho mạng đến điện thoại di động ở người dùng cuối. Mạng máy tính sử dụng bộ định tuyến chuyên dụng và cầu nối mạng để định tuyến dữ liệu.

Thiết bị điện tử tiêu dùng bao gồm máy nghe nhạc MP3, điện thoại di động, máy chơi game video, máy ảnh kỹ thuật số, máy thu GPS và máy in. Các thiết bị gia dụng, như lò vi sóng, máy giặt và máy rửa chén, bao gồm các hệ thống nhúng để cung cấp tính linh hoạt, hiệu quả và tính năng. Các hệ thống HVAC tiên tiến sử dụng máy điều nhiệt nối mạng để kiểm soát nhiệt độ chính xác và hiệu quả hơn có thể thay đổi theo thời gian trong ngày và mùa. Tự động hóa gia đình sử dụng mạng có dây và không dây có thể được sử dụng để kiểm soát ánh sáng, khí hậu, an ninh, âm thanh / hình ảnh, giám sát, v.v., tất cả đều sử dụng các thiết bị nhúng để cảm biến và điều khiển.

Các hệ thống vận chuyển từ chuyến bay đến ô tô ngày càng sử dụng các hệ thống nhúng. Máy bay mới chứa hệ thống điện tử hàng không tiên tiến như hệ thống dẫn đường quán tính và máy thu GPS cũng có các yêu cầu an toàn đáng kể. Động cơ điện khác nhau – động cơ DC không chổi than, động cơ cảm ứng và động cơ DC – sử dụng bộ điều khiển động cơ điện / điện tử. Ô tô, xe điện và xe hybrid ngày càng sử dụng các hệ thống nhúng để tối đa hóa hiệu quả và giảm ô nhiễm. Các hệ thống an toàn ô tô khác bao gồm hệ thống chống bó cứng phanh (ABS), Kiểm soát ổn định điện tử (ESC / ESP), kiểm soát lực kéo (TCS) và hệ dẫn động bốn bánh tự động.

Thiết bị y tế sử dụng các hệ thống nhúng để theo dõi các dấu hiệu quan trọng, ống nghe điện tử để khuếch đại âm thanh và hình ảnh y tế khác nhau (PET, SPECT, CT và MRI) để kiểm tra bên trong không xâm lấn. Các hệ thống nhúng trong thiết bị y tế thường được cung cấp bởi máy tính công nghiệp. [9]

Hệ thống nhúng được sử dụng trong vận chuyển, an toàn cháy nổ, an toàn và an ninh, ứng dụng y tế và các hệ thống quan trọng trong cuộc sống, vì các hệ thống này có thể cách ly với hack và do đó, đáng tin cậy hơn, trừ khi được kết nối với mạng có dây hoặc không dây thông qua di động 3G trên chip hoặc các phương pháp khác cho mục đích giám sát và kiểm soát IoT. [ cần trích dẫn ] an toàn cháy nổ, các hệ thống có thể được thiết kế để có khả năng xử lý nhiệt độ cao hơn và tiếp tục hoạt động. Khi đối phó với bảo mật, các hệ thống nhúng có thể tự cung cấp và có thể xử lý các hệ thống điện và truyền thông bị cắt.

Một lớp thiết bị không dây thu nhỏ mới gọi là mote là các cảm biến không dây được nối mạng. Mạng cảm biến không dây, WSN, sử dụng thu nhỏ có thể thực hiện được nhờ thiết kế vi mạch tiên tiến để kết hợp các hệ thống con không dây đầy đủ với các cảm biến tinh vi, cho phép mọi người và các công ty đo lường vô số điều trong thế giới vật lý và hành động dựa trên thông tin này thông qua các hệ thống giám sát và kiểm soát CNTT . Những thiết bị này hoàn toàn khép kín và thường sẽ hết nguồn pin trong nhiều năm trước khi cần phải thay hoặc sạc pin.

Các mô-đun Wi-Fi nhúng cung cấp một phương tiện đơn giản cho phép không dây cho phép mọi thiết bị giao tiếp qua cổng nối tiếp.

Đặc điểm [ chỉnh sửa ]

Hệ thống nhúng được thiết kế để thực hiện một số tác vụ cụ thể, thay vì là máy tính đa năng cho nhiều tác vụ. Một số cũng có các hạn chế hiệu suất thời gian thực phải được đáp ứng, vì các lý do như an toàn và khả năng sử dụng; những người khác có thể có yêu cầu hiệu năng thấp hoặc không có, cho phép phần cứng hệ thống được đơn giản hóa để giảm chi phí.

Các hệ thống nhúng không phải lúc nào cũng là thiết bị độc lập. Nhiều hệ thống nhúng bao gồm các bộ phận nhỏ trong một thiết bị lớn hơn phục vụ mục đích chung hơn. Ví dụ, Gibson Robot Guitar có một hệ thống nhúng để điều chỉnh dây, nhưng mục đích chung của Robot Guitar dĩ nhiên là để phát nhạc. [10] Tương tự, một hệ thống nhúng trong ô tô cung cấp một chức năng cụ thể như một hệ thống con của chính chiếc xe.

e-con Systems eSOM270 & eSOM300 Computer on Modules

Các hướng dẫn chương trình được viết cho các hệ thống nhúng được gọi là phần sụn và được lưu trữ trong bộ nhớ chỉ đọc hoặc chip nhớ flash. Chúng chạy với tài nguyên phần cứng máy tính hạn chế: bộ nhớ nhỏ, bàn phím hoặc màn hình nhỏ hoặc không tồn tại.

Giao diện người dùng [ chỉnh sửa ]

Các hệ thống nhúng bao gồm từ không có giao diện người dùng, trong các hệ thống chỉ dành cho một tác vụ, đến giao diện người dùng đồ họa phức tạp giống với hệ điều hành máy tính để bàn hiện đại . Các thiết bị nhúng đơn giản sử dụng các nút, đèn LED, LCD đồ họa hoặc ký tự (ví dụ LCD HD44780) với hệ thống menu đơn giản.

Các thiết bị tinh vi hơn sử dụng màn hình đồ họa với các nút cảm ứng hoặc cạnh màn hình mang lại sự linh hoạt trong khi giảm thiểu không gian sử dụng: ý nghĩa của các nút có thể thay đổi với màn hình và lựa chọn liên quan đến hành vi tự nhiên là chỉ vào những gì mong muốn. Các hệ thống cầm tay thường có màn hình với "nút điều khiển" cho thiết bị trỏ.

Một số hệ thống cung cấp giao diện người dùng từ xa với sự trợ giúp của kết nối nối tiếp (ví dụ: RS-232, USB, I²C, v.v.) hoặc kết nối mạng (ví dụ: Ethernet). Cách tiếp cận này mang lại một số lợi thế: mở rộng khả năng của hệ thống nhúng, tránh chi phí hiển thị, đơn giản hóa BSP và cho phép một người xây dựng giao diện người dùng phong phú trên PC. Một ví dụ điển hình cho điều này là sự kết hợp của một máy chủ web nhúng đang chạy trên một thiết bị nhúng (như camera IP) hoặc bộ định tuyến mạng. Giao diện người dùng được hiển thị trong trình duyệt web trên PC được kết nối với thiết bị, do đó không cần cài đặt phần mềm.

Bộ xử lý trong các hệ thống nhúng [ chỉnh sửa ]

Bộ xử lý nhúng có thể được chia thành hai loại lớn. Bộ vi xử lý thông thường (μP) sử dụng các mạch tích hợp riêng cho bộ nhớ và các thiết bị ngoại vi. Vi điều khiển (C) có các thiết bị ngoại vi trên chip, do đó giảm tiêu thụ điện năng, kích thước và chi phí. Trái ngược với thị trường máy tính cá nhân, nhiều kiến ​​trúc CPU cơ bản khác nhau được sử dụng do phần mềm được phát triển tùy chỉnh cho một ứng dụng và không phải là sản phẩm hàng hóa được cài đặt bởi người dùng cuối. Cả Von Neumann cũng như các mức độ khác nhau của kiến ​​trúc Harvard đều được sử dụng. RISC cũng như các bộ xử lý không phải RISC được tìm thấy. Độ dài từ thay đổi từ 4 bit đến 64 bit và hơn thế nữa, mặc dù điển hình nhất vẫn là 8/16 bit. Hầu hết các kiến ​​trúc đều có một số lượng lớn các biến thể và hình dạng khác nhau, nhiều trong số đó cũng được sản xuất bởi một số công ty khác nhau.

Nhiều bộ vi điều khiển đã được phát triển để sử dụng cho các hệ thống nhúng. Bộ vi xử lý đa năng cũng được sử dụng trong các hệ thống nhúng, nhưng nhìn chung, đòi hỏi nhiều mạch hỗ trợ hơn so với vi điều khiển.

Bo mạch máy tính làm sẵn [ chỉnh sửa ]

PC / 104 và PC / 104 + là những ví dụ về tiêu chuẩn cho bo mạch máy tính làm sẵn dành cho nhỏ , các hệ thống nhúng và gồ ghề khối lượng thấp, chủ yếu dựa trên x86. Chúng thường nhỏ về mặt vật lý so với PC tiêu chuẩn, mặc dù vẫn khá lớn so với hầu hết các hệ thống nhúng đơn giản (8/16 bit). Họ thường sử dụng DOS, Linux, NetBSD hoặc một hệ điều hành thời gian thực nhúng như MicroC / OS-II, QNX hoặc VxWorks. Đôi khi các bảng này sử dụng bộ xử lý không x86.

Trong một số ứng dụng nhất định, trong đó kích thước nhỏ hoặc hiệu suất năng lượng không phải là mối quan tâm chính, các thành phần được sử dụng có thể tương thích với các ứng dụng được sử dụng trong máy tính cá nhân x86 cho mục đích chung. Các bảng như phạm vi VIA EPIA giúp thu hẹp khoảng cách bằng cách tương thích với PC nhưng tích hợp cao, nhỏ hơn về mặt vật lý hoặc có các thuộc tính khác khiến chúng trở nên hấp dẫn đối với các kỹ sư nhúng. Ưu điểm của phương pháp này là các thành phần hàng hóa chi phí thấp có thể được sử dụng cùng với các công cụ phát triển phần mềm tương tự được sử dụng để phát triển phần mềm nói chung. Các hệ thống được xây dựng theo cách này vẫn được coi là nhúng vì chúng được tích hợp vào các thiết bị lớn hơn và hoàn thành một vai trò duy nhất. Ví dụ về các thiết bị có thể áp dụng phương pháp này là ATM và máy arcade, có chứa mã cụ thể cho ứng dụng.

Tuy nhiên, hầu hết các bo mạch hệ thống nhúng được tạo sẵn không tập trung vào PC và không sử dụng các bus ISA hoặc PCI. Khi có bộ xử lý hệ thống trên chip, có thể có ít lợi ích khi có một bus chuẩn được kết nối các thành phần riêng biệt và môi trường cho cả công cụ phần cứng và phần mềm có thể rất khác nhau.

Một phong cách thiết kế phổ biến sử dụng mô-đun hệ thống nhỏ, có thể là kích thước của danh thiếp, chứa các chip BGA mật độ cao như bộ xử lý và hệ thống ngoại vi dựa trên chip ARM, bộ nhớ flash ngoài để lưu trữ và DRAM cho bộ nhớ thời gian chạy. Nhà cung cấp mô-đun thường sẽ cung cấp phần mềm khởi động và đảm bảo có một lựa chọn các hệ điều hành, thường bao gồm Linux và một số lựa chọn thời gian thực. Các mô-đun này có thể được sản xuất với khối lượng lớn, bởi các tổ chức quen thuộc với các vấn đề thử nghiệm chuyên ngành của họ và kết hợp với các bo mạch chính tùy chỉnh âm lượng thấp hơn nhiều với các thiết bị ngoại vi dành riêng cho ứng dụng.

Việc triển khai các hệ thống nhúng đã tiến bộ để có thể dễ dàng thực hiện với các bảng đã được tạo dựa trên các nền tảng được chấp nhận trên toàn thế giới. Những nền tảng này bao gồm, nhưng không giới hạn ở Arduino và Raspberry Pi.

Các giải pháp ASIC và FPGA [ chỉnh sửa ]

Một mảng chung cho các hệ thống nhúng có khối lượng rất lớn là hệ thống trên chip (SoC) chứa một hệ thống hoàn chỉnh gồm nhiều hệ thống bộ xử lý, số nhân, bộ nhớ cache và giao diện trên một con chip. SoC có thể được thực hiện như một mạch tích hợp dành riêng cho ứng dụng (ASIC) hoặc sử dụng một mảng cổng lập trình trường (FPGA).

Thiết bị ngoại vi [ chỉnh sửa ]

Cận cảnh chip SMSC LAN91C110 (SMSC 91x), chip Ethernet nhúng

Các hệ thống nhúng nói chuyện với thế giới bên ngoài thông qua các thiết bị ngoại vi, nhu la:

  • Giao diện giao tiếp nối tiếp (SCI): RS-232, RS-422, RS-485, v.v …
  • Giao diện giao tiếp nối tiếp đồng bộ: I2C, SPI, SSC và ESSI (Giao diện nối tiếp đồng bộ nâng cao)
  • Xe buýt (USB)
  • Thẻ đa phương tiện (thẻ SD, Flash nhỏ gọn, v.v.)
  • Mạng: Ethernet, LonWorks, v.v.
  • Fieldbuses: CAN-Bus, LIN-Bus, PROFIBUS, v.v [19659063] Bộ hẹn giờ: PLL (s), Bộ thu / So sánh và Bộ xử lý thời gian
  • IO rời rạc: còn gọi là Đầu vào / Đầu ra Mục đích chung (GPIO)
  • Tương tự sang số / Kỹ thuật số sang Tương tự (ADC / DAC)
  • Gỡ lỗi: Các cổng JTAG, ISP, ICSP, BDM, BITP và DB9.

Công cụ [ chỉnh sửa ]

Cũng như các phần mềm khác, các nhà thiết kế hệ thống nhúng sử dụng trình biên dịch, trình biên dịch và trình gỡ lỗi phát triển phần mềm hệ thống nhúng. Tuy nhiên, họ cũng có thể sử dụng một số công cụ cụ thể hơn:

  • Trong trình gỡ lỗi hoặc trình giả lập mạch (xem phần tiếp theo).
  • Tiện ích để thêm tổng kiểm tra hoặc CRC vào chương trình, do đó hệ thống nhúng có thể kiểm tra xem chương trình có hợp lệ hay không.
  • Đối với các hệ thống sử dụng xử lý tín hiệu số, Các nhà phát triển có thể sử dụng bàn làm việc toán học để mô phỏng toán học.
  • Các công cụ mô phỏng và mô phỏng mức hệ thống giúp các nhà thiết kế xây dựng các mô hình mô phỏng của một hệ thống với các thành phần phần cứng như bộ xử lý, bộ nhớ, DMA, giao diện, bus và dòng chảy hành vi phần mềm như một trạng thái sơ đồ hoặc sơ đồ dòng sử dụng các khối thư viện cấu hình. Mô phỏng được tiến hành để chọn đúng các thành phần bằng cách thực hiện công suất so với đánh đổi hiệu suất, phân tích độ tin cậy và phân tích nút cổ chai. Các báo cáo điển hình giúp nhà thiết kế đưa ra quyết định kiến ​​trúc bao gồm độ trễ ứng dụng, thông lượng thiết bị, sử dụng thiết bị, mức tiêu thụ năng lượng của toàn hệ thống cũng như mức tiêu thụ năng lượng ở cấp thiết bị.
  • Công cụ phát triển dựa trên mô hình tạo và mô phỏng luồng dữ liệu đồ họa và Biểu đồ trạng thái UML của các thành phần như bộ lọc kỹ thuật số, bộ điều khiển động cơ, giải mã giao thức truyền thông và các tác vụ đa tốc độ.
  • Trình biên dịch và trình liên kết tùy chỉnh có thể được sử dụng để tối ưu hóa phần cứng chuyên dụng.
  • công cụ thiết kế, hoặc thêm các cải tiến cho một ngôn ngữ hiện có như Forth hoặc Basic.
  • Một cách khác là thêm một hệ điều hành thời gian thực hoặc hệ điều hành nhúng
  • Các công cụ tạo mã và tạo mã thường dựa trên các máy trạng thái

Các công cụ phần mềm có thể đến từ nhiều nguồn:

  • Các công ty phần mềm chuyên về thị trường nhúng
  • Được chuyển từ các công cụ phát triển phần mềm GNU
  • Đôi khi, các công cụ phát triển cho máy tính cá nhân có thể được sử dụng nếu bộ xử lý nhúng gần với bộ xử lý PC thông thường [19659084] Khi sự phức tạp của các hệ thống nhúng phát triển, các công cụ và hệ điều hành cấp cao hơn đang di chuyển vào máy móc, nơi nó có ý nghĩa. Ví dụ, điện thoại di động, trợ lý kỹ thuật số cá nhân và các máy tính tiêu dùng khác thường cần phần mềm quan trọng được mua hoặc cung cấp bởi một người không phải là nhà sản xuất thiết bị điện tử. Trong các hệ thống này, cần có môi trường lập trình mở như Linux, NetBSD, OSGi hoặc Java nhúng để nhà cung cấp phần mềm bên thứ ba có thể bán cho thị trường lớn.

    Các hệ thống nhúng thường được tìm thấy trong các ứng dụng tiêu dùng, nấu ăn, công nghiệp, ô tô, y tế. Một số ví dụ về hệ thống nhúng là máy nghe nhạc MP3, điện thoại di động, máy chơi game video, máy ảnh kỹ thuật số, đầu DVD và GPS. Các thiết bị gia dụng, như lò vi sóng, máy giặt và máy rửa chén, bao gồm các hệ thống nhúng để mang lại sự linh hoạt và hiệu quả.

    Gỡ lỗi [ chỉnh sửa ]

    Gỡ lỗi nhúng có thể được thực hiện ở các cấp độ khác nhau, tùy thuộc vào các phương tiện có sẵn. Các số liệu khác nhau đặc trưng cho các hình thức gỡ lỗi nhúng khác nhau là: nó có làm chậm ứng dụng chính không, hệ thống hoặc ứng dụng gỡ lỗi gần với hệ thống hoặc ứng dụng thực tế như thế nào, các trình kích hoạt có thể được đặt để gỡ lỗi (ví dụ: kiểm tra bộ nhớ khi đạt đến giá trị bộ đếm chương trình cụ thể) và những gì có thể được kiểm tra trong quá trình gỡ lỗi (chẳng hạn như, chỉ bộ nhớ, hoặc bộ nhớ và các thanh ghi, v.v.).

    Từ đơn giản nhất đến tinh vi nhất, chúng có thể được nhóm lại thành các lĩnh vực sau:

    • Gỡ lỗi cư trú tương tác, sử dụng lớp vỏ đơn giản được cung cấp bởi hệ điều hành nhúng (ví dụ Forth và Basic)
    • Gỡ lỗi bên ngoài bằng cách sử dụng ghi nhật ký hoặc đầu ra cổng nối tiếp để theo dõi hoạt động bằng cách sử dụng màn hình trong flash hoặc sử dụng máy chủ gỡ lỗi như Remedy Debugger thậm chí hoạt động cho các hệ thống đa lõi không đồng nhất.
    • Trình gỡ lỗi trong mạch (ICD), một thiết bị phần cứng kết nối với bộ vi xử lý thông qua giao diện JTAG hoặc Nexus. [11] Điều này cho phép điều khiển hoạt động của bộ vi xử lý. bên ngoài, nhưng thường bị hạn chế ở khả năng gỡ lỗi cụ thể trong bộ xử lý.
    • Trình mô phỏng trong mạch (ICE) thay thế bộ vi xử lý bằng một mô phỏng tương đương, cung cấp toàn quyền kiểm soát tất cả các khía cạnh của bộ vi xử lý.
    • Trình giả lập hoàn chỉnh cung cấp một mô phỏng của tất cả các khía cạnh của phần cứng, cho phép tất cả các phần mềm được kiểm soát và sửa đổi, và cho phép gỡ lỗi trên một PC bình thường. Nhược điểm là chi phí và hoạt động chậm, trong một số trường hợp chậm hơn tới 100 lần so với hệ thống cuối cùng.
    • Đối với các thiết kế SoC, cách tiếp cận điển hình là xác minh và gỡ lỗi thiết kế trên bo mạch nguyên mẫu. Các công cụ như Certus [12] được sử dụng để chèn các đầu dò trong FPGA RTL để tạo ra các tín hiệu để quan sát. Cái này được sử dụng để gỡ lỗi các tương tác phần cứng, phần sụn và phần mềm trên nhiều đồ họa có khả năng tương tự như bộ phân tích logic.
    • Trình gỡ lỗi chỉ có phần mềm có lợi ích là chúng không cần sửa đổi phần cứng mà phải kiểm soát cẩn thận những gì chúng ghi theo thứ tự để tiết kiệm thời gian và không gian lưu trữ. [13]

    Trừ khi bị hạn chế gỡ lỗi bên ngoài, lập trình viên thường có thể tải và chạy phần mềm thông qua các công cụ, xem mã chạy trong bộ xử lý và khởi động hoặc dừng nó hoạt động. Khung nhìn của mã có thể là mã nguồn HLL, mã lắp ráp hoặc hỗn hợp của cả hai.

    Bởi vì một hệ thống nhúng thường bao gồm nhiều yếu tố khác nhau, chiến lược gỡ lỗi có thể khác nhau. Ví dụ, gỡ lỗi một hệ thống nhúng trung tâm phần mềm (và vi xử lý-) khác với gỡ lỗi một hệ thống nhúng trong đó hầu hết quá trình xử lý được thực hiện bởi các thiết bị ngoại vi (DSP, FPGA và đồng xử lý). Ngày càng có nhiều hệ thống nhúng sử dụng nhiều hơn một lõi xử lý. Một vấn đề phổ biến với sự phát triển đa lõi là sự đồng bộ hóa thực thi phần mềm. Trong trường hợp này, thiết kế hệ thống nhúng có thể muốn kiểm tra lưu lượng dữ liệu trên các khung giữa các lõi của bộ xử lý, yêu cầu gỡ lỗi ở mức rất thấp, ở cấp tín hiệu / bus, với bộ phân tích logic, chẳng hạn.

    Truy tìm [ chỉnh sửa ]

    Hệ điều hành thời gian thực (RTOS) thường hỗ trợ theo dõi các sự kiện của hệ điều hành. Một khung nhìn đồ họa được trình bày bởi một công cụ máy chủ, dựa trên bản ghi hành vi hệ thống. Ghi theo dõi có thể được thực hiện trong phần mềm, bằng RTOS hoặc bằng phần cứng theo dõi đặc biệt. Truy tìm RTOS cho phép các nhà phát triển hiểu các vấn đề về thời gian và hiệu suất của hệ thống phần mềm và hiểu rõ về các hành vi hệ thống cấp cao. Các công cụ thương mại như RTXC Quadros hoặc IAR Systems tồn tại.

    Độ tin cậy [ chỉnh sửa ]

    Các hệ thống nhúng thường nằm trong các máy dự kiến ​​sẽ chạy liên tục trong nhiều năm mà không gặp lỗi và trong một số trường hợp tự phục hồi nếu xảy ra lỗi. Do đó, phần mềm thường được phát triển và kiểm tra cẩn thận hơn so với máy tính cá nhân và các bộ phận chuyển động cơ học không đáng tin cậy như ổ đĩa, công tắc hoặc nút được tránh.

    Các vấn đề về độ tin cậy cụ thể có thể bao gồm:

    • Hệ thống không thể tắt một cách an toàn để sửa chữa, hoặc quá khó để sửa chữa. Các ví dụ bao gồm hệ thống không gian, cáp dưới biển, đèn hiệu điều hướng, hệ thống lỗ khoan và ô tô.
    • Hệ thống phải được duy trì hoạt động vì lý do an toàn. "Chế độ khập khiễng" là ít chấp nhận được. Thông thường các bản sao lưu được lựa chọn bởi một nhà điều hành. Ví dụ bao gồm điều hướng máy bay, hệ thống điều khiển lò phản ứng, điều khiển nhà máy hóa chất an toàn, tín hiệu tàu hỏa.
    • Hệ thống sẽ mất một khoản tiền lớn khi tắt: Công tắc điện thoại, điều khiển nhà máy, điều khiển cầu và thang máy, chuyển tiền và làm thị trường , bán hàng và dịch vụ tự động.

    Một loạt các kỹ thuật được sử dụng, đôi khi kết hợp lại, để phục hồi từ các lỗi. Cả hai lỗi phần mềm như rò rỉ bộ nhớ và cả lỗi mềm trong phần cứng:

    • Đồng hồ bấm giờ theo dõi đặt lại máy tính trừ khi phần mềm định kỳ thông báo cho các hệ thống con của cơ quan giám sát với các phụ tùng dự phòng có thể được chuyển sang "chế độ khập khiễng" cung cấp chức năng một phần
    • Thiết kế với kiến ​​trúc Cơ sở tính toán tin cậy (TCB) [19659118] đảm bảo môi trường hệ thống an toàn và đáng tin cậy cao
    • Một trình ảo hóa được thiết kế cho các hệ thống nhúng, có thể cung cấp đóng gói an toàn cho bất kỳ thành phần hệ thống con nào, do đó, một thành phần phần mềm bị xâm phạm không thể can thiệp vào các hệ thống con khác hoặc phần mềm hệ thống cấp đặc quyền [19659120]. Việc đóng gói này giữ cho các lỗi không lan truyền từ hệ thống con này sang hệ thống con khác, cải thiện độ tin cậy. Điều này cũng có thể cho phép một hệ thống con tự động tắt và khởi động lại khi phát hiện lỗi.
    • Lập trình phần mềm miễn nhiễm

    Âm lượng cao so với âm lượng thấp [ chỉnh sửa ]

    Đối với các hệ thống âm lượng cao chẳng hạn như máy nghe nhạc cầm tay hoặc điện thoại di động, giảm thiểu chi phí thường được xem xét thiết kế chính. Các kỹ sư thường chọn phần cứng chỉ đơn giản là đủ tốt để thực hiện các chức năng cần thiết.

    Đối với các hệ thống nhúng khối lượng thấp hoặc nguyên mẫu, máy tính có mục đích chung có thể được điều chỉnh bằng cách giới hạn các chương trình hoặc bằng cách thay thế hệ điều hành bằng hệ điều hành thời gian thực.

    Kiến trúc phần mềm nhúng [ chỉnh sửa ]

    Có một số loại kiến ​​trúc phần mềm khác nhau được sử dụng phổ biến.

    Vòng điều khiển đơn giản [ chỉnh sửa ]

    Trong thiết kế này, phần mềm chỉ đơn giản là có một vòng lặp. Vòng lặp gọi các chương trình con, mỗi chương trình quản lý một phần của phần cứng hoặc phần mềm. Do đó nó được gọi là vòng điều khiển đơn giản hoặc vòng điều khiển.

    Hệ thống điều khiển ngắt [ chỉnh sửa ]

    Một số hệ thống nhúng chủ yếu được điều khiển bởi các ngắt. Điều này có nghĩa là các tác vụ được thực hiện bởi hệ thống được kích hoạt bởi các loại sự kiện khác nhau; một ngắt có thể được tạo ra, ví dụ, bởi một bộ định thời theo tần số được xác định trước hoặc bởi bộ điều khiển cổng nối tiếp nhận một byte.

    Những loại hệ thống này được sử dụng nếu trình xử lý sự kiện cần độ trễ thấp và trình xử lý sự kiện ngắn và đơn giản. Thông thường, các loại hệ thống này cũng chạy một tác vụ đơn giản trong một vòng lặp chính, nhưng tác vụ này không nhạy cảm lắm với sự chậm trễ không mong muốn.

    Đôi khi trình xử lý ngắt sẽ thêm các tác vụ dài hơn vào cấu trúc hàng đợi. Sau đó, sau khi xử lý ngắt kết thúc, các tác vụ này được thực hiện bởi vòng lặp chính. Phương pháp này đưa hệ thống gần với một hạt nhân đa nhiệm với các quy trình riêng biệt.

    Đa nhiệm hợp tác [ chỉnh sửa ]

    Một hệ thống đa nhiệm không từ chối rất giống với sơ đồ vòng điều khiển đơn giản, ngoại trừ việc vòng lặp được ẩn trong API. [1] Một loạt các nhiệm vụ và mỗi nhiệm vụ có môi trường riêng để chạy Run. Khi một nhiệm vụ không hoạt động, nó gọi một thói quen nhàn rỗi, thường được gọi là tạm dừng, tạm biệt, chờ đợi, tạm biệt, tạm thời, viết tắt không hoạt động ), v.v.

    Những ưu điểm và nhược điểm tương tự như vòng điều khiển, ngoại trừ việc thêm phần mềm mới dễ dàng hơn, chỉ bằng cách viết một tác vụ mới hoặc thêm vào hàng đợi.

    Đa nhiệm ưu tiên hoặc đa luồng [ chỉnh sửa ]

    Trong loại hệ thống này, một đoạn mã cấp thấp chuyển đổi giữa các tác vụ hoặc luồng dựa trên bộ hẹn giờ (được kết nối với một làm gián đoạn). Đây là mức độ mà hệ thống thường được coi là có nhân "hệ điều hành". Tùy thuộc vào bao nhiêu chức năng được yêu cầu, nó giới thiệu nhiều hay ít sự phức tạp của việc quản lý nhiều tác vụ chạy song song về mặt khái niệm.

    Vì bất kỳ mã nào cũng có khả năng làm hỏng dữ liệu của một tác vụ khác (ngoại trừ trong các hệ thống lớn hơn sử dụng MMU), các chương trình phải được thiết kế và kiểm tra cẩn thận và việc truy cập vào dữ liệu được chia sẻ phải được kiểm soát bởi một số chiến lược đồng bộ hóa, như hàng đợi tin nhắn, ngữ nghĩa hoặc sơ đồ đồng bộ hóa không chặn.

    Do những phức tạp này, thông thường các tổ chức sử dụng hệ điều hành thời gian thực (RTOS), cho phép các lập trình viên ứng dụng tập trung vào chức năng của thiết bị thay vì dịch vụ hệ điều hành, ít nhất là cho các hệ thống lớn; các hệ thống nhỏ hơn thường không đủ khả năng chi trả cho hệ thống thời gian thực chung chung do những hạn chế về kích thước bộ nhớ, hiệu suất hoặc thời lượng pin. Tuy nhiên, sự lựa chọn mà RTOS được yêu cầu mang lại các vấn đề riêng của nó, vì việc lựa chọn phải được thực hiện trước khi bắt đầu quá trình phát triển ứng dụng. Thời điểm này buộc các nhà phát triển phải chọn hệ điều hành nhúng cho thiết bị của họ dựa trên các yêu cầu hiện tại và do đó hạn chế các tùy chọn trong tương lai ở mức độ lớn. [16] Việc hạn chế các tùy chọn trong tương lai trở thành vấn đề khi tuổi thọ sản phẩm giảm. Ngoài ra, mức độ phức tạp liên tục tăng do các thiết bị được yêu cầu để quản lý các biến như nối tiếp, USB, TCP / IP, Bluetooth, Mạng LAN không dây, radio trung kế, nhiều kênh, dữ liệu và giọng nói, đồ họa nâng cao, nhiều trạng thái, nhiều luồng, nhiều luồng chờ trạng thái và như vậy. Những xu hướng này đang dẫn đến sự gia tăng của phần mềm trung gian nhúng bên cạnh một hệ điều hành thời gian thực.

    Microkernels và exokernels [ chỉnh sửa ]

    Một hạt nhân là một bước tiến hợp lý từ hệ điều hành thời gian thực. Cách sắp xếp thông thường là nhân hệ điều hành phân bổ bộ nhớ và chuyển CPU sang các luồng thực thi khác nhau. Các quy trình chế độ người dùng thực hiện các chức năng chính như hệ thống tệp, giao diện mạng, v.v.

    Nói chung, microkernels thành công khi chuyển đổi tác vụ và giao tiếp intertask nhanh và thất bại khi chúng chậm.

    Exokernels giao tiếp hiệu quả bằng các cuộc gọi chương trình con bình thường. Phần cứng và tất cả các phần mềm trong hệ thống có sẵn và có thể mở rộng bởi các lập trình viên ứng dụng.

    Hạt nhân nguyên khối [ chỉnh sửa ]

    Trong trường hợp này, một hạt nhân tương đối lớn với khả năng tinh vi được điều chỉnh cho phù hợp với môi trường nhúng. Điều này mang lại cho các lập trình viên một môi trường tương tự như một hệ điều hành máy tính để bàn như Linux hoặc Microsoft Windows, và do đó rất hiệu quả để phát triển; on the downside, it requires considerably more hardware resources, is often more expensive, and, because of the complexity of these kernels, can be less predictable and reliable.

    Common examples of embedded monolithic kernels are embedded Linux and Windows CE.

    Despite the increased cost in hardware, this type of embedded system is increasing in popularity, especially on the more powerful embedded devices such as wireless routers and GPS navigation systems. Here are some of the reasons:

    • Ports to common embedded chip sets are available.
    • They permit re-use of publicly available code for device drivers, web servers, firewalls, and other code.
    • Development systems can start out with broad feature-sets, and then the distribution can be configured to exclude unneeded functionality, and save the expense of the memory that it would consume.
    • Many engineers believe that running application code in user mode is more reliable and easier to debug, thus making the development process easier and the code more portable.[citation needed]
    • Features requiring faster response than can be guaranteed can often be placed in hardware.

    Additional software components[edit]

    In addition to the core operating system, many embedded systems have additional upper-layer software components. These components consist of networking protocol stacks like CAN, TCP/IP, FTP, HTTP, and HTTPS, and also included storage capabilities like FAT and flash memory management systems. If the embedded device has audio and video capabilities, then the appropriate drivers and codecs will be present in the system. In the case of the monolithic kernels, many of these software layers are included. In the RTOS category, the availability of the additional software components depends upon the commercial offering.

    See also[edit]

    1. ^ For more details of MicroVGA see this PDF.

    References[edit]

    1. ^ a b Michael Barr. "Embedded Systems Glossary". Neutrino Technical Library. Retrieved 2007-04-21.
    2. ^ Heath, Steve (2003). Embedded systems design. EDN series for design engineers (2 ed.). Newnes. tr. 2. ISBN 978-0-7506-5546-0. An embedded system is a microprocessor based system that is built to control a function or a range of functions.
    3. ^ Michael Barr; Anthony J. Massa (2006). "Giới thiệu". Programming embedded systems: with C and GNU development tools. O'Reilly. trang 1 Tiếng2. ISBN 978-0-596-00983-0.
    4. ^ Barr, Michael (1 August 2009). "Real men program in C". Embedded Systems Design. TechInsights (United Business Media). tr. 2. Retrieved 2009-12-23.
    5. ^ C.Alippi: Intelligence for Embedded Systems. Springer, 2014, 283pp, ISBN 978-3-319-05278-6.
    6. ^ S. Mittal, "A survey of techniques for improving energy efficiency in embedded computing systems", IJCAET, 6(4), 440–459, 2014.
    7. ^ Giovino, Bill. "Micro controller.com – Embedded Systems supersite".
    8. ^ Electronic Voting Machine Information Sheet Accupoll AVS 1000
    9. ^ Embedded Systems Dell OEM Solutions | Dell. Content.dell.com (2011-01-04). Retrieved on 2013-02-06.
    10. ^ Embedded.com – Under the Hood: Robot Guitar embeds autotuning By David Carey, TechOnline EE Times (04/22/08, 11:10:00 AM EDT)Embedded Systems Design – Embedded.com
    11. ^ Tancreti, Matthew; Hossain, Mohammad Sajjad; Bagchi, Saurabh; Raghunathan, Vijay (2011). "Aveksha: A Hardware-software Approach for Non-intrusive Tracing and Profiling of Wireless Embedded Systems". Proceedings of the 9th ACM Conference on Embedded Networked Sensor Systems. SenSys '11. New York, NY, USA: ACM: 288–301. doi:10.1145/2070942.2070972. ISBN 9781450307185.
    12. ^ "Tektronix Shakes Up Prototyping, Embedded Instrumentation Boosts Boards to Emulator Status". Electronic Engineering Journal. 2012-10-30. Retrieved 2012-10-30.
    13. ^ Tancreti, Matthew; Sundaram, Vinaitheerthan; Bagchi, Saurabh; Eugster, Patrick (2015). "TARDIS: Software-only System-level Record and Replay in Wireless Sensor Networks". Proceedings of the 14th International Conference on Information Processing in Sensor Networks. IPSN '15. New York, NY, USA: ACM: 286–297. doi:10.1145/2737095.2737096. ISBN 9781450334754.
    14. ^ Heiser, Gernot (December 2007). "Your System is secure? Prove it!" (PDF). ;login:. 2 (6): 35–8.
    15. ^ Moratelli, C; Johann, S; Neves, M; Hessel, F (2016). "Embedded virtualization for the design of secure IoT applications". 2016 International Symposium on Rapid System Prototyping (RSP). Retrieved 2 February 2018.
    16. ^ "Working across Multiple Embedded Platforms" (PDF). clarinox. Retrieved 2010-08-17.

    Further reading[edit]

    • John Catsoulis (May 2005). Designing Embedded Hardware, 2nd Edition. O'Reilly. ISBN 0-596-00755-8.
    • James M. Conrad; Alexander G. Dean (September 2011). Embedded Systems, An Introduction Using the Renesas RX62N Microcontroller. Micrium. ISBN 978-1935-7729-96.
    • Klaus Elk (August 2016). Embedded Software Development for the Internet Of Things, The Basics, The Technologies and Best Practices. ISBN 978-1534602533.

    External links[edit]