1. Trang chủ
  2. » Cao đẳng - Đại học

Bài giảng hệ thống nhúng

277 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 277
Dung lượng 9,57 MB

Cấu trúc

  • CHƯƠNG 1 GIỚI THIỆU CHUNG VỀ HỆ THỐNG NHÚNG (10)
    • 1.1 Khái niệm Hệ thống nhúng (Embedded system) (10)
    • 1.2 Lịch sử phát triển của hệ thống nhúng (11)
    • 1.3 Các đặc điểm hệ thống nhúng (11)
      • 1.3.1 Giao diện (12)
      • 1.3.2 Kiến trúc CPU (12)
    • 1.4 Kiến trúc điển hình của hệ thống nhúng (14)
    • 1.5 Phân loại các hệ thống nhúng (18)
    • 1.6 Phạm vi ứng dụng của hệ thống nhúng (18)
    • 1.7 Các yêu cầu về kĩ năng trong thiết kế hệ thống nhúng (18)
      • 1.7.1 Quản lý, tích hợp, thiết kế hệ thống (21)
      • 1.7.2 Thiết kế, phát triển phần mềm ứng dụng (22)
      • 1.7.3 Thiết kế firmware (22)
      • 1.7.4 Thiết kế mạch, PCB (23)
      • 1.7.5 Thiết kế vi điện tử: Linh kiện, IP, IC, phụ kiện (23)
  • CHƯƠNG 2: CÁC THÀNH PHẦN HỆ THỐNG (26)
    • 2.1 Các thành phần phần cứng (26)
      • 2.1.1 Bộ xử lý nhúng (26)
      • 2.1.2 Bộ nhớ (35)
      • 2.1.3 Bảng mạch Vào/Ra (37)
      • 2.1.5 Hệ thống Bus (46)
    • 2.2 Các thành phần phần mềm của hệ thống (56)
      • 2.2.1. Trình điều khiển thiết bị (56)
      • 2.2.2. Hệ điều hành thời gian thực (58)
      • 2.2.3. Middleware (59)
      • 2.2.4 Phần mềm ứng dụng (62)
  • CHƯƠNG 3 HỆ ĐIỀU HÀNH THỜI GIAN THỰC DÙNG CHO CÁC HỆ THỐNG NHÚNG (66)
    • 3.1 Yêu cầu chung cho các hệ điều hành thời gian thực (66)
    • 3.2 Các chức năng chính của phần lõi trong hệ điều hành thời gian thực (67)
      • 3.2.1. Kernel (67)
      • 3.2.2 Tác vụ và Multi-tasking (68)
      • 3.3.1 FreeRTOS (76)
      • 3.3.2 Windows CE (88)
      • 3.3.3 Hệ điều hành Embedded Linux (90)
      • 3.3.4 Hệ điều hành uCLinux (91)
  • CHƯƠNG 4: THIẾT KẾ VÀ CÀI ĐẶT CÁC HỆ THỐNG NHÚNG (93)
    • 4.1 Thiết kế hệ thống (93)
      • 4.1.1 Xác định yêu cầu (93)
      • 4.1.2 Đặc tả (95)
      • 4.1.3 Phân hoạch phần cứng - phần mềm (98)
      • 4.1.4 Thiết kế hệ thống (109)
    • 4.2 Cài đặt và thử nghiệm hệ thống nhúng (129)
  • CHƯƠNG 5: PHÁT TRIỂN HỆ THỐNG NHÚNG DỰA TRÊN HỆ VI XỬ LÝ NHÚNG (134)
    • 5.1 Giới thiệu chung (134)
    • 5.2 Kiến trúc của hệ vi xử lý nhúng ARM (134)
    • 5.3 Giới thiệu về dòng vi xử lý ARM Cortex và ARM Cortex M3 (149)
    • 5.4 Thiết lập hệ điều hành nhúng trên nền ARM (241)
  • PHỤ LỤC (248)
  • TÀI LIỆU THAM KHẢO (277)

Nội dung

GIỚI THIỆU CHUNG VỀ HỆ THỐNG NHÚNG

Khái niệm Hệ thống nhúng (Embedded system)

Hệ thống nhúng (Embedded system) là một hệ thống tự trị được tích hợp vào môi trường hoặc hệ thống mẹ, bao gồm cả phần cứng và phần mềm Chúng phục vụ cho các bài toán chuyên dụng trong nhiều lĩnh vực như điện tử, viễn thông, công nghệ thông tin, tự động hoá điều khiển, và quan trắc truyền tin Đặc điểm nổi bật của hệ thống nhúng là khả năng hoạt động ổn định và tính năng tự động hoá cao.

Hệ thống nhúng được thiết kế để thực hiện các chức năng chuyên biệt, khác với máy tính đa chức năng như máy tính cá nhân Chúng thường chỉ thực hiện một hoặc một vài nhiệm vụ nhất định, đi kèm với yêu cầu cụ thể và sử dụng phần cứng chuyên dụng không có trong máy tính thông thường Nhờ vào việc tối ưu hóa cho các nhiệm vụ này, các nhà thiết kế có thể giảm kích thước và chi phí sản xuất, dẫn đến việc sản xuất hàng loạt với số lượng lớn Hệ thống nhúng rất đa dạng, từ thiết bị cầm tay nhỏ gọn như đồng hồ kỹ thuật số và máy chơi nhạc MP3, đến các sản phẩm lớn như đèn giao thông và hệ thống kiểm soát nhà máy Độ phức tạp của hệ thống nhúng có thể từ rất đơn giản với một vi điều khiển đến rất phức tạp với nhiều đơn vị, thiết bị ngoại vi và mạng lưới trong một lớp vỏ máy lớn.

Các thiết bị PDA và máy tính cầm tay có một số đặc điểm tương đồng với hệ thống nhúng, như hệ điều hành và vi xử lý Tuy nhiên, chúng không phải là hệ thống nhúng thực sự vì là thiết bị đa năng, cho phép sử dụng nhiều ứng dụng và kết nối với nhiều thiết bị ngoại vi.

Hệ thống nhúng được định nghĩa là một hệ thống thực hiện các chức năng đặc biệt nhờ vào vi xử lý, và điều quan trọng là không tồn tại hệ thống nhúng nào chỉ có phần mềm mà không có phần cứng đi kèm.

Lịch sử phát triển của hệ thống nhúng

Hệ thống nhúng đầu tiên, Apollo Guidance Computer, được phát triển bởi Charles Stark Draper tại MIT Năm 1961, máy hướng dẫn Autonetics D-17 trở thành hệ thống nhúng sản xuất hàng loạt đầu tiên, sử dụng bóng bán dẫn và đĩa cứng để lưu trữ Khi Minuteman II ra mắt vào năm 1996, D-17 đã được thay thế bằng máy tính mới sử dụng mạch tích hợp Thiết kế của máy tính Minuteman cho phép lập trình lại thuật toán, tăng độ chính xác cho tên lửa và giảm trọng lượng cáp điện cùng đầu nối.

Từ những năm 1960, hệ thống nhúng đã trải qua sự phát triển mạnh mẽ về khả năng xử lý và giảm giá Intel 4004, bộ vi xử lý đầu tiên dành cho người tiêu dùng, được phát minh để phục vụ cho máy tính điện tử và các hệ thống nhỏ khác, mặc dù vẫn cần chip nhớ ngoài và các hỗ trợ khác.

1970, những bộ xử lý 8 bit đã được sản xuất, nhưng nhìn chung chúng vẫn cần đến những chip nhớ bên ngoài

Vào giữa thập niên 80, kỹ thuật mạch tích hợp phát triển mạnh mẽ, cho phép tích hợp nhiều thành phần vào một chip xử lý, dẫn đến sự ra đời của các bộ vi xử lý hay còn gọi là vi điều khiển Với giá thành thấp, vi điều khiển trở nên hấp dẫn cho việc xây dựng các hệ thống chuyên dụng, tạo ra một sự bùng nổ trong số lượng hệ thống nhúng trên thị trường và thu hút nhiều nhà đầu tư tham gia sản xuất trong lĩnh vực này.

Nhiều chip xử lý đặc biệt hiện nay cung cấp nhiều giao diện lập trình, thay thế cho phương pháp song song truyền thống trong việc kết nối vi xử lý Từ cuối những năm 80, hệ thống nhúng đã trở nên phổ biến trong hầu hết các thiết bị điện tử, và xu hướng này vẫn tiếp tục phát triển cho đến ngày nay.

Các đặc điểm hệ thống nhúng

Hệ thống nhúng thường có một số đặc điểm chung như sau:

Các hệ thống nhúng được phát triển nhằm thực hiện các nhiệm vụ chuyên biệt, không phải là các hệ thống máy tính đa chức năng Một số hệ thống yêu cầu tính năng hoạt động thời gian thực để đảm bảo an toàn và hiệu suất, trong khi những hệ thống khác có thể không cần ràng buộc chặt chẽ, cho phép đơn giản hóa phần cứng và giảm chi phí sản xuất.

• Một 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

Phần mềm cho hệ thống nhúng, gọi là firmware, được lưu trữ trong các chip bộ nhớ chỉ đọc hoặc bộ nhớ flash, không phải trên ổ đĩa Firmware thường hoạt động với tài nguyên phần cứng hạn chế, có thể không có bàn phím hoặc màn hình, hoặc nếu có thì kích thước nhỏ và bộ nhớ hạn chế Bài viết sẽ đi sâu vào các đặc điểm cụ thể của các thành phần trong hệ thống nhúng.

Các hệ thống nhúng có thể không có giao diện hoặc có giao diện giao tiếp với người dùng tương tự như hệ điều hành trên thiết bị để bàn Đối với các hệ thống đơn giản, thiết bị nhúng thường sử dụng nút bấm, đèn LED và hiển thị chữ cỡ nhỏ hoặc số, kèm theo một hệ thống menu đơn giản.

Trong các hệ thống phức tạp, màn hình đồ họa cảm ứng hoặc có nút bấm cho phép thực hiện các thao tác phức tạp mà không chiếm nhiều không gian Ý nghĩa của các nút bấm có thể thay đổi tùy theo màn hình và lựa chọn Hệ thống nhúng thường sử dụng màn hình với nút bấm joystick Sự phát triển của mạng toàn cầu đã mở ra cơ hội cho các nhà thiết kế hệ nhúng sử dụng giao diện web qua kết nối mạng, giúp tiết kiệm chi phí cho màn hình phức tạp nhưng vẫn đảm bảo khả năng hiển thị và nhập liệu khi cần thiết thông qua máy tính khác Điều này rất hữu ích cho các thiết bị điều khiển từ xa và cài đặt vĩnh viễn, như router, đã ứng dụng tiện ích này.

Các bộ xử lý trong hệ thống nhúng được chia thành hai loại chính: vi xử lý và vi điều khiển, trong đó vi điều khiển thường tích hợp các thiết bị ngoại vi trên chip để giảm kích thước hệ thống Nhiều kiến trúc CPU như ARM, MIPS, và PowerPC được sử dụng trong thiết kế hệ nhúng, khác với máy tính để bàn thường bị giới hạn ở một số kiến trúc nhất định Các hệ thống nhúng nhỏ gọn, thường hoạt động trong môi trường công nghiệp, thường chọn nền tảng PC/104 và PC/104++, và sử dụng các hệ điều hành như DOS, Linux, hoặc các hệ điều hành nhúng thời gian thực như QNX và VxWorks Đối với các hệ thống nhúng có kích thước lớn, cấu hình phổ biến là hệ thống on chip (SoC), tích hợp FPGA và các thành phần thiết kế bao gồm cả CPU.

Hệ thống nhúng giao tiếp với bên ngoài thông qua các 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 và ESSI

• Networks: Controller Area Network, LonWorks

• Bộ định thời: PLL(s), Capture/Compare và Time Processing Units

• Discrete IO: General Purpose Input/Output (GPIO)

Phần mềm hệ thống nhúng, giống như các sản phẩm phần mềm khác, được phát triển thông qua việc sử dụng trình biên dịch, chương trình dịch hợp ngữ và công cụ gỡ rối Ngoài ra, các nhà thiết kế hệ thống nhúng còn có thể tận dụng một số công cụ chuyên dụng để tối ưu hóa quy trình phát triển.

• Bộ gỡ rối mạch hoặc các chương trình mô phỏng (emulator)

• Tiện ích để thêm các giá trị checksum hoặc CRC vào chương trình, giúp hệ thống nhúng có thể kiểm tra tính hợp lệ của chương trình đó

Trong các hệ thống xử lý tín hiệu số, các nhà phát triển có thể tận dụng phần mềm workbench như MathCad hoặc Mathematica để thực hiện việc mô phỏng các phép toán một cách hiệu quả.

• Các trình biên dịch và trình liên kết (linker) chuyên dụng được sử dụng để tối ưu hóa một thiết bị phần cứng

Hệ thống nhúng có thể phát triển ngôn ngữ lập trình và công cụ thiết kế riêng hoặc cải tiến từ ngôn ngữ có sẵn.

Các công cụ phần mềm cho hệ thống nhúng có thể được phát triển bởi các công ty chuyên về lĩnh vực này hoặc chuyển đổi từ các công cụ phát triển phần mềm GNU Ngoài ra, các công cụ phát triển cho máy tính cá nhân cũng có thể được sử dụng nếu bộ xử lý của hệ thống nhúng tương tự như bộ xử lý của máy PC thông dụng, điều này giúp tăng cường độ tin cậy của hệ thống.

Các hệ thống nhúng thường được thiết kế để hoạt động liên tục trong nhiều năm mà không gặp lỗi, hoặc có khả năng khôi phục khi xảy ra sự cố Do đó, phần mềm cho hệ thống nhúng được phát triển và kiểm thử một cách tỉ mỉ hơn so với phần mềm máy tính cá nhân Hơn nữa, việc sử dụng các thiết bị không đáng tin cậy như ổ đĩa, công tắc hay nút bấm là hạn chế Khi xảy ra lỗi, hệ thống có thể khôi phục bằng các kỹ thuật như watchdog timer, trong đó nếu phần mềm không nhận tín hiệu từ watchdog định kỳ, hệ thống sẽ tự động khởi động lại.

Một số vấn đề cụ thể về độ tin cậy như:

Trong các hệ thống không gian, hệ thống dây cáp dưới đáy biển và đèn hiệu dẫn đường, việc ngừng hoạt động để sửa chữa một cách an toàn là không khả thi Do đó, giải pháp hiệu quả là chuyển sang sử dụng các hệ thống con dự trữ hoặc phần mềm có khả năng cung cấp một phần chức năng cần thiết.

Hệ thống cần hoạt động liên tục để đảm bảo an toàn, đặc biệt là trong các lĩnh vực như thiết bị dẫn đường máy bay và thiết bị kiểm soát an toàn trong các nhà máy hóa chất Giải pháp tối ưu cho vấn đề này là lựa chọn hệ thống dự phòng.

Nếu hệ thống ngừng hoạt động, nó sẽ gây ra tổn thất lớn về tài chính, đặc biệt là trong các dịch vụ buôn bán tự động, hệ thống chuyển tiền và hệ thống kiểm soát trong các nhà máy.

Kiến trúc điển hình của hệ thống nhúng

Kiến trúc hệ thống nhúng là một hình thức trừu tượng hóa, cho phép tổng quát hóa các thành phần của hệ thống mà không cần đi vào chi tiết về mã nguồn hay thiết kế mạch phần cứng.

Trong một hệ thống nhúng, các thành phần phần cứng và phần mềm ở mức kiến trúc được thể hiện qua các phần tử tương tác với nhau Những phần tử này đại diện cho phần cứng hoặc phần mềm, nhưng chi tiết đã được trừu tượng hóa, chỉ còn lại thông tin về mối quan hệ và hoạt động của chúng Các phần tử này có thể được tích hợp để tạo ra hệ thống hoạt động hiệu quả hơn.

Thông tin ở mức kiến trúc được trình bày dưới dạng cấu trúc, bao gồm tập hợp các phần tử, tính chất và thông tin về mối quan hệ giữa chúng Vì vậy, cấu trúc này phản ánh hình ảnh của phần cứng và phần mềm trong hệ thống tại thời điểm thiết kế hoặc khi hệ thống đang hoạt động.

Hệ thống thường có cấu trúc phức tạp, với kiến trúc là sự kết hợp của nhiều cấu trúc khác nhau Các cấu trúc trong kiến trúc này có mối quan hệ thừa kế qua lại, tạo nên sự liên kết chặt chẽ giữa chúng Một số kiểu cấu trúc tiêu biểu bao gồm:

Cấu trúc theo dạng module trong hệ thống nhúng bao gồm các thành phần chức năng khác nhau, như phần cứng và phần mềm cơ bản, cần thiết cho sự hoạt động của thiết bị Thông thường, cấu trúc này được tổ chức theo dạng lớp (layers) và bao gồm các phần mềm dịch vụ cho nhân (kernel services), giúp tối ưu hóa hiệu suất và tính linh hoạt của hệ thống.

Cấu trúc theo dạng thành phần và kết nối bao gồm sự kết hợp giữa các thành phần như phần cứng, phần mềm và CPU, cùng với các kết nối như bus phần cứng, bản tin phần mềm và các tiến trình trong hệ thống.

Mô hình hệ thống nhúng

Trên thực tế, có nhiều loại cấu trúc kiến trúc được áp dụng trong hệ thống nhúng Tuy nhiên, ở mức độ cơ bản nhất, mô hình của hệ thống nhúng thường được thể hiện theo hình thức cụ thể.

Hình 1 1: Mô hình chung hệ thống nhúng

Tất cả các hệ thống nhúng đều có cấu trúc tương tự, bao gồm ba lớp chính: phần cứng, phần mềm hệ thống và phần mềm ứng dụng Lớp phần cứng chứa các thành phần vật lý trên bo mạch nhúng, trong khi lớp phần mềm hệ thống và phần mềm ứng dụng bao gồm các phần mềm hoạt động trên hệ thống nhúng.

Một số 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 trong các hệ thống nhúng như sau:

Vòng lặp kiểm soát đơn giản

Theo thiết kế này, phần mềm được cấu trúc thành một vòng lặp đơn giản, trong đó vòng lặp này sẽ gọi đến các chương trình con Mỗi chương trình con đảm nhận việc quản lý một phần cụ thể của hệ thống phần cứng hoặc phần mềm.

Hệ thống ngắt điều khiển

Các hệ thống nhúng thường hoạt động dựa trên cơ chế ngắt, cho phép kích hoạt các tác vụ thông qua các sự kiện khác nhau Chẳng hạn, một ngắt có thể được tạo ra bởi bộ định thời sau một chu kỳ nhất định, hoặc khi cổng nối tiếp nhận được một byte dữ liệu.

Kiến trúc này thường được áp dụng trong các hệ thống có bộ quản lý sự kiện đơn giản, yêu cầu độ trễ thấp Hệ thống thực hiện các tác vụ đơn giản trong một vòng lặp chính, trong khi các tác vụ phức tạp hơn có thể được đưa vào cấu trúc hàng đợi trong bộ quản lý ngắt để xử lý sau Điều này khiến hệ thống hoạt động tương tự như kiểu nhân đa nhiệm với các tiến trình rời rạc, cụ thể là đa nhiệm tương tác.

Hệ thống đa nhiệm không ưu tiên tương tự như kỹ thuật vòng lặp kiểm soát đơn giản, nhưng được ẩn giấu qua giao diện lập trình API Các lập trình viên định nghĩa nhiều nhiệm vụ, mỗi nhiệm vụ hoạt động trong môi trường riêng và tạm dừng khi không cần thiết Ưu nhược điểm của kiến trúc này giống như vòng lặp kiểm soát đơn giản, nhưng việc thêm phần mềm mới dễ dàng hơn thông qua việc lập trình tác vụ mới hoặc thêm vào hàng đợi thông dịch Trong kiến trúc đa nhiệm ưu tiên, mã ở mức thấp thực hiện chuyển đổi giữa các tác vụ thông qua bộ định thời, đòi hỏi một hệ điều hành để quản lý phức tạp Do đó, giải pháp thường được áp dụng là sử dụng hệ điều hành thời gian thực, giúp lập trình viên tập trung vào phát triển chức năng thiết bị mà không phải lo lắng về dịch vụ hệ điều hành.

Vi nhân (Microkernel) và nhân ngoại (Exokernel)

Khái niệm vi nhân (microkernel) đại diện cho một phương pháp tiếp cận gần gũi với hệ điều hành thời gian thực, nơi mà nhân hệ điều hành đảm nhận việc cấp phát bộ nhớ và quản lý CPU cho các luồng thực thi Các tiến trình người dùng chủ yếu sử dụng các chức năng như hệ thống file và giao diện mạng Kiến trúc vi nhân thường được áp dụng trong các hệ thống yêu cầu tốc độ chuyển đổi và giao tiếp nhanh chóng giữa các tác vụ.

Nhân ngoại (exokernel) tối ưu hóa giao tiếp thông qua việc sử dụng các lời gọi chương trình con thông thường Hệ thống phần cứng và phần mềm luôn sẵn sàng đáp ứng và có khả năng mở rộng nhờ vào các ứng dụng.

Trong kiến trúc hệ thống nhúng, nhân đầy đủ với khả năng phức tạp được điều chỉnh để tương thích với môi trường, giúp lập trình viên phát triển dễ dàng hơn như trên các hệ điều hành máy tính để bàn như Linux hay Windows Tuy nhiên, điều này yêu cầu tài nguyên phần cứng đáng kể, làm tăng chi phí hệ thống Các loại nhân khối phổ biến bao gồm Embedded Linux và Windows CE Mặc dù chi phí phần cứng cao, hệ thống nhúng này đang phát triển mạnh mẽ, đặc biệt trong các thiết bị như router không dây và hệ thống định vị GPS.

• 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, …

Phân loại các hệ thống nhúng

Hiện nay có nhiều cách phân loại hệ thống nhúng khác nhau Tùy theo cách phân chia có thể phân loại các hệ thống nhúng như sau:

• Hệ thống phân phối và hệ thống không phân phối:

Các hệ thống không phân phối hoạt động độc lập, trong khi hệ thống phân phối kết nối các thiết bị như vi điều khiển nhúng, thiết bị mạng, máy tính nhúng và hệ thống cảm biến không dây Sự kết hợp này thường xuất hiện trong các thiết bị điều khiển ô tô và hàng không, cũng như trong các thiết bị giám sát môi trường và quản lý dây chuyền sản xuất tự động.

• Hệ thống dữ liệu và hệ thống điều khiển:

Các hệ thống dữ liệu được sử dụng để xử lý và cung cấp thông tin cần thiết theo yêu cầu, trong khi các hệ thống điều khiển có nhiệm vụ quản lý và điều phối các quy trình trong sản xuất hoặc các thiết bị.

Phạm vi ứng dụng của hệ thống nhúng

Ngày nay, hệ thống nhúng được ứng dụng rộng rãi ở khắp mọi nơi Hầu hết những thiết bị điện tử đều là các hệ thống nhúng

Một số ví dụ như sau:

• Các hệ thống điều khiển ô tô, tàu, máy bay

• Các hệ thống quân sự

• Các hệ thống giám sát, cảnh báo

• Các hệ thống cảm ứng

• Các thiết bị điện tử dân dụng

Theo ước tính, lượng phần mềm nhúng phát triển hàng năm gấp năm lần so với phần mềm thông thường Hơn nữa, phần lớn CPU sản xuất hiện nay phục vụ cho thị trường nhúng, trong khi chỉ một tỷ lệ nhỏ CPU được sử dụng trong các hệ thống máy tính.

Các yêu cầu về kĩ năng trong thiết kế hệ thống nhúng

Tổng quan về thiết kế các hệ nhúng

- Mô hình hoá hệ thống: Mô tả các khối chức năng với các đặc tính và thuật toán xử lý

- Chi tiết hoá các khối chức năng

- Phân bố chức năng cho phần cứng và mềm (HW-SW)

- Đồng bộ hoạt động của hệ thống

- Cài đặt các chức năng thiết kế vào phần cứng (hardware) và phần mềm (software) hoặc phần nhão (firm-ware)

Thiết kế cổ điển liên quan đến việc xác định trước các chức năng phần mềm (SW) và phần cứng (HW), sau đó tiến hành các bước thiết kế chi tiết một cách độc lập Hiện nay, hầu hết các hệ thống tự động hóa thiết kế (CAD) chủ yếu tập trung vào thiết kế phần cứng Tuy nhiên, các hệ thống nhúng hiện đại tích hợp nhiều công nghệ như vi xử lý, DSP, mạng và các chuẩn phối ghép, do đó yêu cầu thiết kế linh hoạt hơn cho cả phần HW và SW Để đạt được thiết kế tối ưu, quá trình thiết kế SW và HW cần phải phối hợp chặt chẽ và có khả năng điều chỉnh sau mỗi lần thử nghiệm chức năng hoạt động tổng hợp.

Thiết kế hệ thống nhúng yêu cầu kiến thức đa dạng về điện tử, xử lý tín hiệu, vi xử lý, thuật điều khiển và lập trình thời gian thực Mục tiêu chính của mỗi chương trình đào tạo là phát triển các kỹ năng cần thiết cho học viên, đảm bảo rằng sau khi hoàn thành khóa học, họ sẽ đạt được những kỹ năng đã đề ra Các kỹ năng này được xây dựng dựa trên tính chất và đặc trưng của nội dung đào tạo.

Trong thiết kế hệ thống nhúng, đào tạo liên quan đến việc phát triển các thiết bị điện tử thông minh, hay còn gọi là hệ thống nhúng, được điều khiển bởi các linh kiện bán dẫn như bộ vi xử lý, bộ vi điều khiển, FPGA và CPLD Để đảm bảo tính đồng nhất trong nội dung, chúng ta sẽ sử dụng thuật ngữ "hệ thống nhúng" để chỉ tất cả các thiết bị điện tử và hệ thống này.

Hình 1 2: Cấu trúc của thiết bị điện tử

Cấu trúc của một hệ thống nhúng về cơ bản được mô tả như trong hình 1, nó gồm các thành phần:

Phần mềm ứng dụng là những chương trình được phát triển nhằm thực hiện các tác vụ cụ thể, sử dụng tài nguyên từ phần cứng Ví dụ điển hình bao gồm phần mềm nghe nhạc trên máy MP3, ứng dụng trò chơi trên máy PS2, và bộ công cụ Microsoft Office trên máy tính cá nhân.

Phần mềm hệ thống, bao gồm các hệ điều hành như Windows, Linux, và Unix, cùng với các chương trình hỗ trợ như trình biên dịch, loader, linker và debugger, đóng vai trò quan trọng trong việc quản lý tài nguyên phần cứng ở mức thấp Nó cho phép các thành phần trong hệ thống tương tác hiệu quả, đồng thời cấp phát tài nguyên cần thiết cho các phần mềm ứng dụng.

Phần cứng là các thành phần vật lý cấu thành hệ thống, chủ yếu bao gồm các linh kiện vật lý Đối với một máy tính cá nhân (PC), phần cứng bao gồm bo mạch chủ, RAM, ổ cứng và nguồn cung cấp điện Bo mạch chủ được tạo thành từ các linh kiện bán dẫn cùng với các linh kiện thụ động như điện trở, tụ điện và cuộn cảm.

Từ cấu trúc trên của hệ thống nhúng, có thể phân chia việc thiết kế một hệ thống thành các mảng công việc như trong hình 2:

Hình 1 3: Các mảng công việc trong thiết kế hệ thống nhúng

Nó gồm các mảng khác nhau đó là:

- Quản lý, tích hợp và thiết kế hệ thống

- Thiết kế, phát triển phần mềm ứng dụng

- Thiết kế firmware (Device Driver, OS, Middleware)

- Thiết kế vi điện tử: linh kiện, IC, IP, Phụ kiện Đối với từng mảng công việc, đòi hỏi người thực hiện cần có các kĩ năng tương ứng

1.7.1 Quản lý, tích hợp, thiết kế hệ thống: Đây là một trong những mặt có vai trò quan trọng đối với sự thành công của một dự án thiết kết một hệ thống nhúng Nó bao gồm các công việc:

- Hoạch định các yêu cầu của hệ thống, từ đó xây dựng kết cấu chung của hệ thống

- Xác định các tài nguyên có sẵn bao gồm nhân lực và vật lực

- Lên kế hoạch các bước thực hiện

- Giám sát quá trình thực hiện Để đảm nhiệm được công việc này, yêu cầu các kĩ năng sinh viên cần có:

Có kiến thức vững vàng về quản lý dự án thiết kế và kiến trúc hệ thống là rất quan trọng Điều này bao gồm hiểu biết về các mô hình phân tích hệ thống và quy trình triển khai dự án thiết kế Bên cạnh đó, kiến thức về kiến trúc hệ thống nhúng cũng cần thiết, với cái nhìn tổng quan về các khía cạnh của hệ thống nhúng, bao gồm cả phần mềm và phần cứng.

- Có kĩ năng quản lý nhóm, đây là một yêu cầu quan trọng có tính chất quyết định

- Có khả năng sáng tạo, ứng dụng các phương thức quản lý tiên tiến nhằm đạt hiệu năng cao trong thiết kế hệ thống

Kỹ năng phân tách, tích hợp và kiểm tra hệ thống là rất quan trọng để đảm bảo hệ thống hoạt động ổn định Những kỹ năng này giúp đáp ứng các yêu cầu về hiệu năng, chi phí và tuổi thọ của hệ thống.

1.7.2 Thiết kế, phát triển phần mềm ứng dụng Đối với các hệ thống nhúng, điều quan trọng là ứng dụng thực tiễn của nó trong đời sống, quan trọng hơn, chức năng được quyết định bởi phần mềm ứng dụng được cài đặt trên hệ thống Vì vậy, các kĩ năng trong thiết kế, phát triển phần mềm ứng dụng là không thể thiếu đối với thiết kế hệ thống nhúng hiện nay Các kĩ năng yêu cầu gồm:

Để trở thành một lập trình viên thành công, bạn cần có kiến thức vững chắc về khoa học lập trình, bao gồm việc xây dựng cấu trúc dữ liệu và giải thuật, hiểu biết về cơ sở dữ liệu, cũng như các phương thức lập trình như lập trình hướng cấu trúc và lập trình hướng đối tượng Bên cạnh đó, kiến thức về đồ họa, đa phương tiện và xử lý tín hiệu cũng rất quan trọng.

Để thực thi các ứng dụng trên nhiều ngôn ngữ lập trình, người lập trình viên cần sở hữu kỹ năng vững vàng trong các ngôn ngữ như C/C++, VC++, Python, Java, VB, Delphi, ASP, PHP và JAVA.

- Có kiến thức lập trình trên các nền tảng khác nhau: PC, smartphone,

1.7.3 Thiết kế firmware Điều quan trọng của các ứng dụng hệ thống nhúng đó là tận dụng được các tài nguyên của hệ thống: CPU, memory, các ngoại vi, các giao diện Hầu hết quá trình xử lý bên trong của hệ thống là sự giao tiếp giữa các thành phần phần cứng bên trong Vì vậy đòi hỏi xây dựng firmware để quản lý các tài nguyên này một cách hữu hiệu, cung cấp các giao diện truy cập các tài nguyên này cho lớp cao hơn (lớp ứng dụng)

Nó gồm các lĩnh vực về thiết kế trình điều khiển thiết bị - Device Driver, thiết kế

OS – hệ điều hành, thiết kế phần mềm Middleware Để thực hiện được, yêu cầu các kĩ năng sinh viên cần có:

Hệ điều hành là phần mềm quản lý tài nguyên phần cứng và phần mềm trên máy tính, bao gồm các thành phần chính như nhân, trình điều khiển thiết bị và giao diện người dùng Hệ điều hành thời gian thực (RTOS) được thiết kế để xử lý các tác vụ trong thời gian thực, đảm bảo tính kịp thời và độ chính xác Các khái niệm quan trọng trong hệ điều hành bao gồm lập lịch (scheduling), quy trình (process), luồng (thread) và giao tiếp giữa các quy trình (inter-process communication), giúp tối ưu hóa hiệu suất và quản lý tài nguyên hiệu quả.

- Thành thạo các ngôn ngữ lập trình hệ thống như assembly, C/C++; các ngôn ngữ mô tả phần cứng như VHDL, Verilog

- Sử dụng thành thạo các công cụ phần mềm hỗ trợ lập trình firmware trình biên dịch, IDE,

Với xu hướng hiện nay, kiến thức về phần mềm mã nguồn mở và hệ điều hành mã nguồn mở mang lại lợi ích lớn trong phát triển phần mềm hệ thống nhúng Ngoài yếu tố giá thành, sinh viên sẽ nhận được sự hỗ trợ mạnh mẽ từ cộng đồng mã nguồn mở và tiếp cận các kỹ thuật lập trình tiên tiến Do đó, phát triển kỹ năng này là điều mà sinh viên cần chú trọng.

CÁC THÀNH PHẦN HỆ THỐNG

Các thành phần phần cứng

Bộ xử lý là thành phần chính trong hệ thống nhúng, đảm nhiệm việc xử lý lệnh và dữ liệu Một thiết bị điện tử thường có ít nhất một bộ xử lý chủ (Master Processor) và có thể bổ sung các bộ xử lý tớ (Slave Processors) để hỗ trợ Các bộ xử lý tớ được điều khiển bởi bộ xử lý chủ, tham gia thực hiện các chỉ lệnh hoặc quản lý bộ nhớ, bus và thiết bị vào ra Trong sơ đồ khối của board X86, Atlas STPC được coi là bộ xử lý chủ, trong khi bộ điều khiển I/O và bộ điều khiển ethernet đóng vai trò là các bộ xử lý tớ.

Hình 2 1: Bảng mạch Encore 400 của Ampro

Hệ thống nhúng chủ yếu được xây dựng xung quanh bộ xử lý chính, có thể là vi xử lý hoặc vi điều khiển Vi xử lý thường có ít bộ nhớ tích hợp và các thành phần vào ra (I/O), trong khi vi điều khiển lại sở hữu nhiều bộ nhớ hệ thống và các thành phần I/O phong phú hơn.

Các bộ xử lý nhúng được phân loại thành các nhóm dựa trên kiến trúc, với sự khác biệt chủ yếu là tập hợp các chỉ lệnh mã máy mà chúng có khả năng thực thi Những bộ xử lý có thể thực hiện cùng một tập lệnh sẽ được xem là thuộc kiến trúc tương tự nhau Dưới đây là bảng một số ví dụ về các bộ xử lý thực tế và kiến trúc tương ứng của chúng.

Bảng 2 1: Các bộ xử lý và kiến trúc thực tế

2.1.1.1 Các mô hình kiến trúc tập lệnh (ISA architecture models)

ISA (kiến trúc tập lệnh) xác định các thao tác mà lập trình viên có thể sử dụng để phát triển chương trình, bao gồm các toán hạng, lưu trữ, và các kiểu địa chỉ để truy xuất và xử lý toán hạng cũng như quản lý các ngắt Việc thực thi ISA đóng vai trò quan trọng trong việc xác định các đặc điểm của hệ thống nhúng, như hiệu suất, thời gian thiết kế, chức năng và chi phí.

Các thao tác trong bộ xử lý được hình thành từ một hoặc nhiều chỉ lệnh Mặc dù các bộ xử lý khác nhau có thể thực hiện các thao tác tương tự, chúng sử dụng các loại và số lượng chỉ lệnh khác nhau để hoàn thành nhiệm vụ.

Các thao tác trên dữ liệu bao gồm nhiều chức năng quan trọng như phép toán số học, chuyển dữ liệu giữa bộ nhớ và thanh ghi, thực hiện các rẽ nhánh có hoặc không có điều kiện, cùng với hoạt động truyền nhận dữ liệu và chuyển đổi phép toán.

Bộ vi xử lý 8051 sở hữu hơn 100 chỉ lệnh, bao gồm các phép toán toán học, truyền dữ liệu, phép toán logic, thao tác bit, rẽ nhánh và điều khiển Trong khi đó, MPC-823 có tập chỉ lệnh lớn hơn 8051 với nhiều kiểu hoạt động tương tự, bao gồm phép toán số nguyên, dấu chấm động, thao tác nạp, lưu trữ, cũng như các thao tác rẽ nhánh và điều khiển, đồng thời hỗ trợ các thao tác điều khiển bộ xử lý và đồng bộ bộ nhớ Các thao tác phổ biến trong một ISA được minh họa trong hình 2-2.

Hình 2 2: Các thao tác ISA đơn giản

2.1.1.2 Ứng dụng cụ thể của mô hình ISA Ứng dụng cụ thể của mô hình ISA xác định các bộ xử lý dành cho các ứng dụng nhúng cụ thể, ví dụ các bộ xử lý cho TV Một số ứng dụng cụ thể của mô hình ISA được thực hiện bởi các bộ xử lý nhúng, các mô hình phổ biến nhất là:

Mô hình điều khiển – Controller model

Các bộ điều khiển ISA được triển khai trong các bộ xử lý mà không cần thực hiện các thao tác dữ liệu phức tạp Chẳng hạn, các bộ xử lý âm thanh và video thường được sử dụng làm bộ xử lý phụ trong các bảng mạch TV, như minh họa trong Hình 2-3.

Mô hình đường dữ liệu – Datapath model

Mô hình datapath được sử dụng trong các bộ xử lý nhằm thực hiện nhiều phép toán cố định trên các bộ dữ liệu khác nhau, điển hình là trong bộ xử lý tín hiệu số (DSP), như thể hiện trong Hình 2-4.

Hình 2 4: Board ví dụ với điện thoại di động thực hiện kỹ thuật số ISA đường dữ liệu

Finite State Machine with Datapath (FSMD) Model

FSDM ISA là sự kết hợp giữa Datapath ISA và Controller ISA, giúp tối ưu hóa hiệu suất cho các bộ xử lý mà không cần thực hiện các thao tác dữ liệu phức tạp Nó cho phép lặp lại các phép toán cố định trên nhiều bộ dữ liệu khác nhau, mang lại sự hiệu quả và linh hoạt trong quá trình xử lý thông tin.

Ví dụ của FSMD thực hiện các ứng dụng cụ thể:

Mạch tích hợp ASICs thể hiện trên hình 2-5, các thiết bị logic khả trình (PLD), FPGA

Hình 2 5: Board ví dụ với máy quay kỹ thuật số FSMD ISA

Mô hình máy ảo Java (Java Virtual Machine: JVM)

ISA JVM dựa trên tiêu chuẩn của Java Virtual Machine và có thể được triển khai trong các hệ thống nhúng thông qua phần cứng.

Hình 2 6: Ví dụ thực hiện JVM ISA

2.1.1.3 Các mô hình ISA đa năng (General-Purpose ISA models)

Mô hình ISA đa mục đích thường được triển khai trong các bộ xử lý nhằm phục vụ cho nhiều hệ thống khác nhau, không chỉ giới hạn trong các hệ thống nhúng Các loại mô hình ISA đa mục đích phổ biến nhất trong bộ xử lý nhúng bao gồm:

Mô hình tính toán với tập lệnh phức tạp (Complex Instruction Set

CISC ISA, hay kiến trúc tập lệnh phức tạp, đặc trưng bởi việc thực hiện nhiều lệnh để thực hiện các hoạt động phức tạp Các bộ xử lý nổi bật sử dụng CISC ISA bao gồm dòng sản phẩm intel x86 và Motorola/Freescale 68000.

Hình 2 7: Ví dụ thực hiện CISC ISA

Mô hình tính toán với tập lệnh rút gọn (Reduced Instruction Set Computing: RISC)

Hình 2 8: Ví dụ thực hiện RISC ISA

Trái ngược với CISC, RISC ISA thường định nghĩa:

- Một kiến trúc đơn giản và/hoặc hoạt động ít hơn gồm ít lệnh hơn

- Một kiến trúc giảm số chu kì hoạt động

- Các bộ xử lý RISC chỉ có một chu kì hoạt động trong khi CISC thường có nhiều chu kì

- ARM, PowerPC, SPARC, MIPS là một vài ví dụ về kiến trúc RISC cơ bản

Trong lĩnh vực tính toán đa năng, nhiều mẫu thiết kế bộ vi xử lý hiện nay thuộc loại chip CISC hoặc RISC chủ yếu do tính kế thừa Các bộ xử lý RISC đã trở nên phức tạp hơn, trong khi các bộ xử lý CISC đã cải thiện hiệu suất để cạnh tranh với chip RISC Sự phát triển này đã làm mờ ranh giới giữa kiến trúc RISC và CISC, dẫn đến việc những bộ xử lý này sở hữu cả hai thuộc tính, bất chấp định nghĩa truyền thống của chúng.

2.1.1.4 Các mô hình ISA song song mức lệnh (Instruction-Level Parallelism ISA Models)

Các thành phần phần mềm của hệ thống

2.2.1 Trình điều khiển thiết bị

Các ví dụ về bộ điều khiển cổng I/O

Hệ thống con I/O yêu cầu quản lý phần mềm với các thành phần tích hợp trong bộ xử lý chủ, như bộ điều khiển thụ động I/O Các bộ điều khiển I/O bao gồm một bộ trạng thái và các thanh ghi điều khiển, được thực thi bởi bộ điều khiển thiết bị đã được giới thiệu ở phần đầu chương.

• I/O Startup, là phần khởi động của nguồn cấp cho I/O hoặc khởi động lại

• I/O Shutdown, thiết lập I/O trở về trạng thái tắt nguồn của nó

• I/O Disable, cấp phát chương trình khác để ngăn chặn hoạt động của I/O

• I/O Enable, cấp phát chương trình khác để kích hoạt hoạt động của I/O

• I/O Acquire, cấp phát chương trình khác để khuếch đại truy cập đơn lẻ (chốt) tới I/O

• I/O Release, cấp phát chương trình khác để nghỉ (mở chốt) I/O

• I/O Read, cấp phát chương trình khác để đọc dữ liệu từ I/O

• I/O Write, cấp phát chương trình khác để viết dữ liệu lên I/O

• I/O Install, cấp phát chương trình khác để cài đặt hoạt động mới của I/O

• I/O Unistall, cấp phát chương trình khác để gỡ bỏ hoạt động của I/O đã được cài đặt

Các chương trình khởi động Ethernet và RS232 I/O cho PowerPC và ARM được trình bày qua ví dụ về hệ thống thiết bị khởi động I/O Những ví dụ này minh họa cách thức I/O hoạt động trong các cấu trúc liên hợp như PowerPC và ARM, đồng thời cung cấp hướng dẫn hữu ích cho việc phát triển hệ thống I/O trên các bộ xử lý phức tạp hoặc đơn giản hơn.

Ví dụ khởi tạo Driver RS-232:

Chuỗi giao thức I/O không đồng bộ RS-232, hay còn gọi là EIA-232, được thiết lập dựa trên tiêu chuẩn của hội công nghiệp điện tử Các tiêu chuẩn này xác nhận các thành phần chính của hệ thống RS-232 được triển khai trong phần cứng.

Firmware yêu cầu kích hoạt ánh xạ đặc trưng tới phiên thấp hơn của lớp liên kết dữ liệu vật lý Mặc dù các bộ phận phần cứng có thể được ánh xạ hoàn toàn tới lớp vật lý của mô hình OSI, nội dung này sẽ không được đề cập trong bài viết.

Bộ phận RS-232 được tích hợp sẵn trong bộ xử lý chủ được gọi là giao diện RS-

Giao thức RS-232 có khả năng được lập trình cho cả truyền dẫn đồng bộ và không đồng bộ Trong trường hợp truyền dẫn không đồng bộ, firmware (phần mềm) được thực thi trong bộ phận UART sẽ đảm nhiệm việc truyền dữ liệu theo thứ tự.

Dữ liệu truyền không đồng bộ qua RS-232 được tổ chức thành chuỗi bit và được gửi với tốc độ cố định Khung truy cập của UART tuân theo mẫu được minh họa trong Hình 2-36.

Hình 2 46: Sơ đồ khung RS-232

2.2.2 Hệ điều hành thời gian thực

Hệ điều hành thời gian thực là một hệ điều hành hỗ trợ cấu trúc của hệ thống thời gian thực

Trạng thái định thời của hệ điều hành (OS) cần được dự đoán trước để đảm bảo các ràng buộc thời gian thực cho từng dịch vụ Mỗi dịch vụ có mức độ dự đoán khác nhau; ví dụ, các lệnh gọi như “đưa cho tôi thời gian trong ngày” có ràng buộc rõ ràng, trong khi các lệnh gọi yêu cầu tài nguyên như “đưa cho tôi 4MB bộ nhớ độc lập” có thể có sự biến đổi lớn hơn Đặc biệt, danh sách các ràng buộc thời gian thực (RTOS) cần phải được xác định rõ ràng, điều mà tiêu chuẩn Java chưa chú ý đến, vì không có thứ tự thực hiện cụ thể cho các luồng Một vấn đề khác là thu gom dữ liệu rác, trong đó có nhiều nỗ lực trong Java nhằm cải thiện khả năng thu gom này.

Trong quá trình thực hiện lệnh ngắt, việc không gây trở ngại giữa các nhiệm vụ là rất quan trọng, đặc biệt trên hệ thống bộ vi xử lý đơn Để giảm thiểu sự chậm trễ không mong muốn trong việc xử lý các sự kiện quan trọng, các ngắt có thể được vô hiệu hóa trong thời gian ngắn Đối với hệ điều hành thời gian thực (RTOS) sử dụng hệ thống tập tin, việc lưu trữ các tập tin kề nhau trên đĩa là cần thiết để hạn chế sự di chuyển không dự đoán của đầu đĩa.

OS cần phải được quản lí thời gian và lịch trình các nhiệm vụ

Lịch trình được hiểu là quá trình ánh xạ các nhiệm vụ vào khoảng thời gian thực hiện, trong đó bao gồm cả việc xác định thời điểm bắt đầu Nó cũng yêu cầu phân biệt giữa bản gốc và các lỗi phát sinh Ví dụ, lịch trình có thể giúp xác định mức năng lượng của máy móc, từ đó chịu trách nhiệm cho việc mất nguồn.

Ngoài khả năng dự đoán, hệ điều hành thời gian thực (RTOS) cần hỗ trợ các ứng dụng với thời hạn tính bằng giây Mỗi RTOS bao gồm một hệ thống điều hành chính, là nguồn lực thiết yếu trong mọi hệ thống, bao gồm bộ xử lý, bộ nhớ và hệ thống đồng hồ Đồng thời, bộ phận này cũng đảm bảo bảo vệ các thiết bị máy, dù không nhất thiết phải có mặt vì lý do an toàn hoặc bảo mật.

Bộ phận chính đảm nhiệm các chức năng quan trọng như quản lý nhiệm vụ, đồng bộ hóa và truyền dữ liệu, quản lý thời gian, cũng như quản lý bộ nhớ.

Một số hệ điều hành thời gian thực (RTOS) được phát triển cho các ứng dụng chung, trong khi những hệ điều hành khác lại nhắm đến các lĩnh vực cụ thể Chẳng hạn, OSEK/VDX OS được thiết kế đặc biệt cho việc điều khiển tự động, nhờ đó nó có kích thước nhỏ gọn.

Nhiều RTOS cung cấp API chuẩn, nhưng cũng có những hệ điều hành sở hữu API độc quyền với các đặc điểm riêng Ví dụ, một số RTOS tương thích với POSIX RT mở rộng cho UNIX, OSEK/VDX OS, hoặc ITRON, một hệ điều hành phổ biến tại Nhật Bản Mỗi loại RTOS thường có API riêng, trong đó ITRON được nhắc đến như một RTOS hoàn chỉnh sử dụng liên kết cấu hình.

Middleware là phần mềm hệ thống quan trọng, không chỉ là thành phần chính của hệ điều hành hay các bộ điều khiển thiết bị, mà còn bao gồm các phần mềm ứng dụng Một số hệ điều hành có khả năng tích hợp middleware vào trong các bộ thực thi của chúng Trong các hệ thống nhúng, middleware thường được đặt bên trong các bộ điều khiển thiết bị hoặc ở lớp trên cùng của hệ điều hành, và đôi khi có thể được hợp nhất trực tiếp vào hệ điều hành.

Middleware là phần mềm trung gian giữa các ứng dụng và bộ phận điều khiển thiết bị, giúp kết nối và điều phối hoạt động của nhiều ứng dụng khác nhau Được sử dụng rộng rãi trên các thiết bị nhúng, middleware cung cấp một lớp cấu trúc chung nhằm đáp ứng yêu cầu về tính phức tạp, bảo mật, linh động, và khả năng tương thích giữa các ứng dụng Một trong những lợi ích chính của middleware là giảm thiểu sự phức tạp của ứng dụng thông qua cơ sở hạ tầng phần mềm trung tâm Khi giới thiệu về middleware hoặc một hệ thống, việc cung cấp cái nhìn tổng thể là rất quan trọng, vì nó ảnh hưởng đến khả năng mở rộng và hiệu năng của hệ thống Trong thời gian ngắn, middleware có tác động đến tất cả các lớp của hệ thống nhúng.

Hình 2 47: Middleware trong mô hình hệ nhúng

HỆ ĐIỀU HÀNH THỜI GIAN THỰC DÙNG CHO CÁC HỆ THỐNG NHÚNG

THIẾT KẾ VÀ CÀI ĐẶT CÁC HỆ THỐNG NHÚNG

PHÁT TRIỂN HỆ THỐNG NHÚNG DỰA TRÊN HỆ VI XỬ LÝ NHÚNG

Ngày đăng: 11/03/2022, 10:59

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Embedded Systems Architecture: A Comprehensive Guide for Engineers and Programmers, Tammy Noergaard, Newnes, 2005 Sách, tạp chí
Tiêu đề: Embedded Systems Architecture: A Comprehensive Guide for Engineers and Programmers
[2]. Embedded Systems Design, Steve Heath,,Second Edition, Newnes, 2002 Sách, tạp chí
Tiêu đề: Embedded Systems Design
[3]. Embedded Systems- Architecture, Programming and Design, Raj Kamal, McGraw Hill, 2003 Sách, tạp chí
Tiêu đề: Embedded Systems- Architecture, Programming and Design
[4]. Embedded Microprocessor system,2 nd ed., Stuart R. Ball, Newnes, 2001 Sách, tạp chí
Tiêu đề: Embedded Microprocessor system,2"nd" ed
[5]. Embedded Microcomputer Systems: Real Time Interfacing, 2nd Edition, ISBN 0534551629, Thomson 2006, by J. W. Valvano Sách, tạp chí
Tiêu đề: Embedded Microcomputer Systems: Real Time Interfacing
[6]. Embedded System Design: A unified Hardware/Software Introduction, Vahid/Givargis, John Wiley & Sons INC, 2002 Sách, tạp chí
Tiêu đề: Embedded System Design: A unified Hardware/Software Introduction
[7].Co-Synthesis of Hardware and Software for Digital Embedded Systems, G.D. Micheli, Illinois University at Urbana Champaign, 2000 Sách, tạp chí
Tiêu đề: Co-Synthesis of Hardware and Software for Digital Embedded Systems
[8].Co-Synthesis of Hardware and Software for Digital Embedded Systems, G.D. Micheli, Illinois University at Urbana Champaign, 2000 Sách, tạp chí
Tiêu đề: Co-Synthesis of Hardware and Software for Digital Embedded Systems
[9].Embedded Linux System design and development, TP. Raghavan , Amol Lad ,Sriram Neelakandan, Auerbach Publications, 2006 Sách, tạp chí
Tiêu đề: Embedded Linux System design and development
[10]. The Insider’s Guide To The Philips ARM®7 Based Microcontrollers, Hitek, 2008 Sách, tạp chí
Tiêu đề: The Insider’s Guide To The Philips ARM®7 Based Microcontrollers
[11]. Embedded Linux Primer: A Practical, Real-World Approach, Christopher Hallinan, Prentice Hall, 2006 Sách, tạp chí
Tiêu đề: Embedded Linux Primer: A Practical, Real-World Approach
[12]. Building Embedded Linux Systems, Karim Yaghmour, O’Reilly, 2003 Sách, tạp chí
Tiêu đề: Building Embedded Linux Systems
w