Bài giảng Hệ thống nhúng: Phần 1

78 15 0
Bài giảng Hệ thống nhúng: Phần 1

Đ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

Bài giảng Hệ thống nhúng: Phần 1 có nội dung trình bày giới thiệu về hệ thống nhúng; các yêu cầu về kĩ năng trong thiết kế hệ thống nhúng; các thành phần hệ thống; hệ điều hành thời gian thực dùng cho các hệ thống nhúng; 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;... Mời các bạn cùng tham khảo!

  HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG NGUYỄN NGỌC MINH NGUYỄN TRUNG HIẾU BÀI GIẢNG HỆ THỐNG NHÚNG HÀ NỘI – 12.2014     Mục lục Mục lục .3 CHƯƠNG 1- GIỚI THIỆU CHUNG VỀ HỆ THỐNG NHÚNG 1.1 Khái niệm Hệ thống nhúng (Embedded system) 1.2 Lịch sử phát triển hệ thống nhúng 1.3 Các đặc điểm hệ thống nhúng 1.3.1 Giao diện 1.3.2 Kiến trúc CPU Kiến trúc điển hình hệ thống nhúng .9 Phân loại hệ thống nhúng 12 1.4 Phạm vi ứng dụng hệ thống nhúng 12 1.5 Các yêu cầu kĩ thiết kế hệ thống nhúng 13 1.5.1 Quản lý, tích hợp, thiết kế hệ thống: .15 1.5.2 Thiết kế, phát triển phần mềm ứng dụng 16 1.5.3 Thiết kế firmware 16 1.5.4 Thiết kế mạch, PCB: 17 1.5.5 Thiết kế vi điện tử : linh kiện, IP, IC, phụ kiện 17 Câu hỏi ôn tập 19 CHƯƠNG 2: CÁC THÀNH PHẦN HỆ THỐNG 20 2.1 Các thành phần phần cứng 20 2.1.1 Bộ xử lý nhúng .20 2.1.2 Bộ nhớ 29 2.1.3 Bảng mạch Vào/Ra 31 2.1.5 Hệ thống Bus 40 2.2 Các thành phần phần mềm hệ thống: 50 2.2.1 Trình điều khiển thiết bị 50 2.2.2 Hệ điều hành thời gian thực 51 2.2.3 Middleware .52 2.2.4 Phần mềm ứng dụng 55 Câu hỏi ôn tập 57 CHƯƠNG - HỆ ĐIỀU HÀNH THỜI GIAN THỰC DÙNG CHO CÁC HỆ THỐNG NHÚNG 58 3.1 Yêu cầu chung cho hệ điều hành thời gian thực 58 3.2 Các chức phần lõi hệ điều hành thời gian thực 59 3.2.1 Kernel 59 3.2.2 Tác vụ đa nhiệm 60 3.3.3 Lập lịch thời gian thực (Real-time Scheduling) .62 3.3.4 Đồng 64 3.2.5 HAL (Hardware Abstraction Layer) 66 3.3 Giới thiệu hệ điều hành thời gian thực 66 3.3.1 FreeRTOS: .66 3.3.3 Hệ điều hành Embedded Linux: 76 3.3.4 Hệ điều hành uCLinux: 77 Câu hỏi ôn tập 78 CHƯƠNG 4: THIẾT KẾ VÀ CÀI ĐẶT CÁC HỆ THỐNG NHÚNG 79 4.1 Thiết kế hệ thống 79   4.1.1 Xác định yêu cầu 79 4.1.2 Đặc tả .80 4.1.3 Phân hoạch phần cứng - phần mềm 84 4.1.4 Thiết kế hệ thống .92 4.2 Cài đặt thử nghiệm hệ thống nhúng 109 Câu hỏi ôn tập 112 CHƯƠNG PHÁT TRIỂN HỆ THỐNG NHÚNG DỰA TRÊN VXL ARM .113 5.1 Giới thiệu chung 113 5.2 Kiến trúc hệ vi xử lý nhúng ARM 113 5.2.1 Lõi ARM 113 5.2.2 Thanh ghi chế độ hoạt động .114 5.2.3 Pipeline 116 5.2.4 Cấu trúc bus 117 5.2.5 Bản đồ nhớ: .119 5.2.6 Tập lệnh ARM .122 5.2.7 Tập lệnh Thumb .130 5.3 Thiết kế thành phần xử lý nhúng 130 5.3.1 Lập trình ghi 130 5.3.2 Thiết kế điều khiển I/O 131 5.3.3 Lập trình điều khiển định thời (Timer) đếm (Counter) 135 5.3.4 Đồng hồ thời gian thực 138 5.3.5 Bộ điều chế độ rộng xung 141 5.3.6 Điều khiển ngắt 143 5.3.7 Giao tiếp UART 144 5.3.8 Giao tiếp I2C 148 5.3.9 Giao tiếp SPI 151 5.3.10 Thiết kế điều kiển giao tiếp với thiết bị tương tự: ADC, DAC 154 5.3.11 Vịng khóa pha .158 5.4 Thiết lập hệ điều hành nhúng ARM 159 5.4.1 Firmware Bootloader 159 5.4.2 Hệ thống file (Filesystem) .161 5.4.3 Thiết lập nhân (kernel) 161 Tài liệu tham khảo 166   CHƯƠNG 1- GIỚI THIỆU CHUNG VỀ HỆ THỐNG NHÚNG 1.1 Khái niệm Hệ thống nhúng (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: điện tử, viễn thông, công nghệ thông tin, 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 hố 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 số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 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ý Khơng có hệ thống nhúng có phần mềm 1.2 Lịch sử phát triển hệ thống nhúng 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 tố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 1.3 Các đặc điểm hệ thống nhúng 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ụ chun dụng khơng phải đó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 tồ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ế: khơng có 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   1.3.1 Giao diện Các hệ thống nhúng khơng có 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 1.3.2 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 (field-programmable gate array) lập trình cho với thành phần nguyên lý thiết kế bao gồm CPU Thiết bị ngoại vi Hệ thống nhúng giao tiếp với bên ngồi 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) 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ụ chun 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 tố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 Độ 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 Ngồ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 tồ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 tồn, ví dụ thiết bị dẫn đường máy bay, thiết bị kiểm sốt độ an tồ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 … Kiến trúc điển hình hệ thống nhúng Kiến trúc hệ thống nhúng trừu tượng hóa thiết bị nhúng, điều có nghĩa tổng quát hóa hệ thống mà không rõ thông tin thực thi chi tiết hệ thống mã nguồn thiết kế mạch phần cứng Các thành phần phần cứng phần mềm mức kiến trúc hệ thống nhúng đại diện phần tử có tác động lẫn Các phần tử đại diện phần cứng phần mềm chi tiết trừu tượng hóa Do đó, có thơng tin mối quan hệ qua lại hoạt động chúng Các phần tử tích hợp bên thiết bị nhúng tồn bên hệ thống nhúng tương tác với phần tử bên Tóm lại, kiến trúc hệ thống nhúng bao gồm phần tử hệ thống nhúng, phần tử tương tác với hệ thống nhúng, tính chất phần tử riêng biệt mối quan hệ tương tác thành phần Các thông tin mức kiến trúc mô tả theo dạng cấu trúc Một cấu trúc bao gồm tập hợp phần tử, tính chất thơng tin mối quan hệ qua lại Do đó, cấu trúc hình ảnh phần cứng phần mềm hệ thống thời điểm thiết kế thời điểm chạy Do hệ thống thường có cấu trúc phức tạp, kiến trúc thường kết hợp nhiều cấu trúc khác Tất cấu trúc kiến trúc có mối quan hệ thừa kế qua lại với Một số kiểu cấu trúc sau:  Cấu trúc theo dạng module: Theo dạng này, phần tử thành phần có chức khác hệ thống (VD phần cứng phần mềm hệ thống hoạt động được) thiết bị nhúng Cấu trúc    thường trình bày theo dạng lớp (layers), theo phần mềm dịch vụ cho nhân (kernel services)… Cấu trúc theo dạng thành phần kết nối: Cấu trúc kết hợp thành phần (VD phần cứng, phần mềm, CPU, ) kết nối bus phần cứng, tin phần mềm, process hệ thống Mô hình hệ thống nhúng Trên thực tế, có nhiều cấu trúc kiến trúc sử dụng Tuy nhiên, mức cao nhất, mơ hình hệ thống nhúng thường trình bày hình sau: Hình 1-1 Mơ hình chung hệ thống nhúng Từ mơ hình trên, thấy tất hệ thống nhúng có chung tương tự mức cao Cụ thể, chúng có lớp ( phần cứng, phần mềm hệ thống phần mềm ứng dụng) Lớp phần cứng bao gồm thành phần vật lý bo mạch nhúng Lớp phần mềm hệ thống phần mềm ứng dụng bao gồm phần mềm hệ thống nhúng Một số kiến trúc phần mềm hệ thống nhúng: 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 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 Đ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 số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 10   Lập lịch theo chu kỳ: Nhiều tác vụ thường cần thức dậy theo chu kỳ thực thi cơng việc, sau đó, tác vụ quay lại trạng thái ngủ Đối với tác tụ này, việc lập lịch tính theo chu kỳ VD: Cứ đến thời điểm định, tác vụ phải kiểm tra số tính hệ thống Để thực thi, hệ điều hành nhúng thường có hàm trễ Delay(), tác vụ quản lý để thức dậy hoạt động khoảng thời gian trễ Một phương pháp khác khai báo cáo tác vụ có tính chất chu kỳ Trong trường hợp này, lập lịch đánh thức tác vụ thức dậy khoảng thời gian mà không phụ thuộc vào thời gian chạy tác vụ (VD 4s lại gọi tác vụ) Một tác vụ có tính chất chu kỳ gọi hàm tương tự WaitUntilNext(), hàm chặn tác vụ đến thời điểm chạy Lập lịch không theo chu kỳ: Khác với tác vụ có tính chu kỳ, số tác vụ chạy thời điểm ngẫu nhiên để phản ứng lại kiện xảy Sự kiện cơng tắc bật, cảm ứng đọc liệu Thường kiện kết nối với máy tính qua ngắt (interrupt) Các chương trình dịch vụ ngắt (ISR) thông tin việc xảy ngắt với tác vụ chịu trách nhiệm cho việc xử lý kiện Lập lịch chiếm quyền thực thi: Trong hệ thống thơng thường, có ngắt xảy ra, hệ thống gọi chương trình ISR để phục vụ cho ngắt Nếu có tác vụ với mức ưu tiên thấp chạy tác vụ có mức ưu tiên trạng thái khóa (block) để chờ kiện xảy ra, chương trình dịch vụ ngắt ISR chuyển tác vụ với mức ưu tiên cao chuyển sang trạng thái sẵn sàng (ready) Sau đó, lập lịch xác định tác vụ có mức ưu tiên cao trạng thái sẵn sàng chuyển lên trạng thái hoạt động (running) Như vậy, tác vụ với mức ưu tiên thấp bị chiếm quyền thực thi Các hệ thống cho phép chiếm quyền thực thi cung cấp cho ta hệ thống với thời gian phản ứng dễ dàng đoán kiện với mức độ ưu tiên cao xử lý sớm Đây điều hệ thống thời gian thực, đảm bảo thời gian tối đa để xử lý kiện Trong trường hợp hệ thống khơng chiếm quyền thực thi, khơng có đảm bảo thời gian trước tác vụ chạy thoát 3.3.4 Đồng Trong hệ thống, tác vụ độc lập với Tuy nhiên, chức hệ thống cho công việc yêu cầu tác vụ phải có liên hệ, phối hợp Việc đồng tác vụ hệ điều hành thời gian thực thực tập hợp dịch vụ truyền thông tác vụ Một số chế thông tin đồng hóa thường dùng sau  Semaphore: sử dụng cho việc đồng khóa tài nguyên 64    Cờ kiện (Event Flag): Dùng để thể hay nhiều kiện xảy Cờ kiện cho phép đồng khóa trường hợp có nhiều kiện kết hợp  Hòm thư (mailbox), hàng đợi (queue) hay đường ống (pipe): Các chế dùng để chuyển liệu tác vụ với Ngồi ra, thực tế sử dụng số chế khác Semaphore: Về mặt chức năng, semaphore hoạt động giống chìa khóa cho việc truy cập tài nguyên Tác vụ vào giữ chìa khóa có quyền sử dụng tài ngun hệ thống VD: Trong trường hợp có tác vụ truy cập máy in Nếu khơng có chế đồng tác vụ, máy in in liệu mà nhận Khi tin bị trộn lẫn Trên thực tế, để sử dụng tài nguyên hệ thống, tác vụ cần u cầu chìa khóa (semaphore) cách gọi tới dịch vụ thích hợp Nếu chìa khóa trạng thái sẵn sàng (có nghĩa tài nguyên không sử dụng tác vụ nào), tác vụ phép sử dụng tài ngun, đồng thời chìa khóa giữ lại Sau sử dụng xong, tác vụ phải trả lại chìa khóa (semaphore) để tác vụ khác sử dụng tài nguyên hệ thống Ngược lại, tài nguyên sử dụng tác vụ khác, tác vụ bị khóa semaphore trả lại Trong trường hợp lúc có nhiều tác vụ yêu cầu semaphore tài nguyên hệ thống sử dụng tất tác vụ bị khóa lại Các tác vụ bị khóa xếp hàng theo thứ tự mặt ưu tiên hay mặt thời gian theo yêu cầu semaphore Hộp thư (mailbox): Không tạo tin hiệu cho kiện, tác vụ thường xuyên cần chia sẻ liệu Việc chia sẻ thực bừng chế hộp thư (mailbox) Một tác vụ (là người gửi) gửi tin (message) tới hộp thư tác vụ khác (người nhận) chờ tin hịm thư Nếu khơng có tin hộp thư tác vụ nhận chờ hộp thư, tác vụ bị khóa đến tin đưa tới Hình 3-4 Sơ đồ hộp thư Hàng đợi (queue) hay đường ống (pipe): Hàng đợi thường hộp thư có khả chứa nhiều thư lúc Khi tạo hàng đợi, cần xác định kích thước hàng, số tin hàng đợi lưu Trong hàng đợi ngồi lệnh gửi chờ hộp thư, hàng đợi cần có dịch vụ để chuyển tin có ưu tiên cao lên đầu hàng xóa tin hàng 65   Trong chế đường ống, việc xếp liệu lại khác chút Đối với hộp thư hàng đợi, việc dịch chuyển liệu thực theo khối (bản tin) Còn chế đường ống, luồng liệu (byte stream) liên tục nối hai tác vụ Một tác vụ đọc đường ống, tác vụ khác ghi lên đường ống 3.2.5 HAL (Hardware Abstraction Layer) Để việc triển khai hệ điều hành thời gian thực phần cứng khác dễ dàng hơn, cần có việc đặt giao diện chuẩn cho việc lập trình Khi lập trình viên chuyển sang tảng (platform) mới, giao diện lập trình giữ nguyên phần cứng phía thay đổi VD: Hai tảng khác có đếm khác Mỗi đếm cần phiên mã để khởi tạo thiết lập cấu hình thiết bị Nếu sử dụng HAL, giao diện lập trình khơng thay đổi mặc dùng phần cứng phần mềm thay đổi HAL lớp phần mềm cung cấp tập hợp giao diện lập trình xác định, che cấu trúc phần cứng HAL thực thi cách ảo hóa nên tảng phần cứng, làm cho trình điều khiển chuyển phần cứng khác Phần mềm HAL giao tiếp với thiết bị ngoại vi chuyên biệt gọi trình điều khiển thiết bị (device driver) Một trình điều khiển thiết bị cung cấp giao diện lập trình ứng dụng chuẩn (API) để đọc ghi tới thiết bị ngoại vi Trên thực tế, phát triển bo mạch nhúng, hãng thường cung cấp gói phần mềm phát triển kèm theo (BSP) Các gói phần mềm cho việc phát triển tương đương với HAL HAL thường hỗ trợ thành phần phần cứng sau:  CPU, cache, MMU  Thiết lập đồ nhớ  Hỗ trợ xử lý ngắt trường hợp đặc biệt  Truy cập nhớ trực tiếp (DMA)  Các đếm (Timers)  Console hệ thống  Quản lý giao diện bus  Quản lý nguồn 3.3 Giới thiệu hệ điều hành thời gian thực 3.3.1 FreeRTOS: FreeRTOS hệ điều hành thời gian thực miễn phí Hệ điều hành Richard Barry công bố rộng rãi từ năm 2003, đến nay, hệ điều hành phát triển mạnh mẽ cộng đồng mạng mã nguồn mở ủng hộ FreeRTOS có tính khả chuyển, mã nguồn mở, lõi tải miễn phí dùng cho ứng dụng thương mại Nó phù hợp với hệ nhúng thời gian thực nhỏ Hầu hết code viết ngôn ngữ C nên có tính phù hợp cao với nhiều khác 66   Ưu điểm dung lượng nhỏ chạy phần cứng mà nhiều hệ điều hành khác không chạy Có thể port cho nhiều kiến trúc vi điều khiển công cụ phát triển khác FreeRTOS cấp giấy phép chỉnh sửa GPL (General Public License) sử dụng ứng dụng thương mại với giấy phép Ngồi liên quan đến FreeRTOS có OpenRTOS SafeRTOS OpenRTOS thương mại FreeRTOS không liên quan đến GPL SafeRTOS dựa FreeRTOS phân tích, chứng minh tài liệu kiểm tra nghiêm ngặt với chuẩn IEC61508 Và chuẩn IEC61508 SIL3 tạo phát triển độc lập để hoàn thiện tài liệu cho SafeRTOS So sánh FreeRTOS OpenRTOS: FreeRTOS Miễn phí Có Có thể sử dụng ứng dụng thương mại? Có Miễn phí ứng dụng thương mại? Có Phải đưa mã nguồn code ứng dụng? Không Phải đưa thay đổi mã nguồn lõi? Có Phải đưa vào báo cáo sử dụng FreeRTOS? Có, đường dẫn Phải cung cấp mã FreeRTOS cho người sử dụng? Có Có thể nhận hỗ trợ thương mại? Không Bảng 3.1: So sánh FreeRTOS OpenRTOS OpenRTOS Khơng Có Có Khơng Khơng Khơng Khơng Có Các đặc điểm FreeRTOS:  Lõi FreeRTOS hỗ trợ preemptive, cooperative kết hợp kiểu lập lịch  SafeRTOS sản phẩm dẫn xuất, cung cấp mã nguồn riêng mức độ cao  Được thiết kế nhỏ, đơn giản dễ sử dụng  Cấu trúc mã nguồn linh động viết ngôn ngữ C  Hỗ trợ task co-routine  Có lựa chọn nhận biết tràn ngăn xếp  Không giới hạn số task tạo ra, phụ thuộc vào tài nguyên hệ thống  Không giới hạn số mức ưu tiên sử dụng  Không giới hạn số task mức ưu tiên  Hỗ trợ truyền thông đồng tác vụ tác vụ ngắt thông qua nhiều chiến lược khác 67    Các cơng cụ phát triển miễn phí, port cho Cortex-M3, ARM7, PIC, MSP430, H8/S, AMD, AVR, x86 8051  Miễn phí mã nguồn phần mềm nhúng  Miễn phí ứng dụng thương mại  Tiền cấu hình cho ứng dụng thử nghiệm, từ dễ dàng tìm hiểu phát triển Các dịng vi điều khiển thử nghiệm với FreeRTOS:  Vi điều khiển ST STM32 Cortex-M3  ARM Cortex-M3 dựa vi điều khiển sử dụng ARM Keil (RVDS), IAR, Rowley công cụ GCC  Atmel AVR32 AT32UC3A: vi điều khiển flash sử dụng GCC IAR  Các vi điện tử ST: STR71x (ARM7), STR75x( ARM7), STR9 (ARM9) (STR711F, STR712F, … )  LPC2106, LPC2124 LPC2129 (ARM7) Gồm mã nguồn cho I2C driver  H8S2329 (Hitachi H8/S) với EDK2329 demo  Atmel AT91SAM7 family (AT91SAM7X256, AT91SAM7X128, AT91SAM7S32, AT91SAM7S64, AT91SAM7S128, AT91SAM7S256) Bao gồm mã nguồn USB driver cho IAR Kickstart, uIP lwIP nhúng vào Ethernet TCP/IP  AT91FR40008 với Embest ATEB40X demo  MSP430 với demo cho LCD driver MSPGCC and Rowley CrossWorks hỗ trợ  HCS12 (MC9S12C32 loại nhớ nhỏ MC9S12DP256B kiểu bank nhớ)  Fujitsu MB91460 series (32bit) and MB96340 series (16FX 16bit) sử dụng trình dịch Softune Euroscope debugger  Cygnal 8051 / 8052  Microchip PICMicro PIC18 (8 bit), PIC24 (16bit MCU) dsPIC (16bit DSC) PIC32 (32bit)  Atmel AVR (MegaAVR) với STK500 demo  Vi điều khiển RDC8822 với demo cho Flashlite 186 SBC 68    PC (chạy FreeDOS DOS khác)  ColdFire  Zilog Z80  Xilinx Microblaze chạy Virtex4 FPGA  Xilinx PowerPC (PPC405) chạy Virtex4 FPGA Ngoài trình dịch hỗ trợ cho thử nghiệm FreeRTOS vi điều khiển : Rowley CrossWorks, Keil, CodeWarrior, IAR, GNU GCC (nhiều loại), MPLAB, SDCC, Open Watcom, Paradigm Borland Cấu trúc thư mục file FreeRTOS: Hình 3-5 Sơ đồ cấu trúc thư mục FreeRTOS Các download FreeRTOS www.freertos.org bao gồm mã nguồn cho port vi xử lý ứng dụng demo Cấu trúc thư mục đơn giản, nhân FreeRTOS bao gồm files(hay file với tính co-routines – dạng rút gọn task thường dùng cho hệ thống với nhớ giới hạn) Từ thư mục gốc, download FreeRTOS gồm thư mục : FreeRTOS ¦ +-Demo ¦ +-Source Chứa ứng dụng thử nghiệm Chứa mã nguồn nhân Phần lớn nhân freeRTOS (cụ thể mã nguồn lập lịch phân bổ - scheduler ) chứa file chung với kiến trúc vi xử lý tasks.c, queue.c list.c (hoặc thêm file croutine.c thực thi chức co-routines)trong thư mục Source 69   Mỗi kiến trúc vi xử lý yêu cầu phần mã nhân nhỏ cho riêng kiến trúc Mã riêng cho kiến trúc nằm thư mục /Source/Portable FreeRTOS ¦ +-Demo Chứa ứng dụng thử nghiệm ¦ ¦ ¦ +-Common Các file ứng dụng chung cho tất port ¦ ¦ ¦ +-ARM7_AtmelSAM7S64_IAR Ứng dụng mẫu cho AtmelSAM7S64 tool IAR ¦ ¦ ¦ +-ARM7_AT91SAM7X256_Eclipse Ứng dụng mẫu cho AT91SAM7X256, tool Eclipsse ¦ ¦ ¦ +- ¦ +-Source Chứa file mã nguồn lập lịch (sheduler) ¦ ¦ file mã nguồn lập lịch chung cho tất port ¦ (4 với chức co-routines) +-include Các file header ¦ +-portable Lớp port cho vi xử lý khác ¦ +-MemMang Bộ cấp phát nhớ mẫu ¦ +-GCC Lớp port cho vi xử lý sử dụng tool GCC compiler ¦ +-RVDS Lớp port cho vi xử lý sử dụng tool RVDS ¦ + file header thư mục /Source/Include chứa khai báo tham số, định nghĩa kiểu liệu khai báo prototype API FreeRTOS :  FreeRTOS.h : chứa khai báo file header định nghĩa yêu cầu cho vi xử lý sử dụng kiểm tra marco cần thiết phải viết cho riêng vi xử lý định nghĩa chưa Các marco phải định nghĩa FreeRTOSConfig.h thư mục demo port  Task.h : chứa khai báo hàm marco liên quan đến thủ tục tạo, xóa, thiết lập chỉnh sửa tham số task(stack, trạng thái(running, ready, block), mức ưu tiên, ), tác vụ liên quan đến scheduler  List.h : chứa khai báo hàm marco xây dựng cấu trúc danh sách để scheduler dùng để quản lý task  Croutine.h: chứa khai báo hàm marco xây dựng co-routine  Portables.h : chứa khai báo header phù hợp với port cho phép tạo tính linh động cấu hình port Ngồi số header chứa khai báo API hỗ trợ thuật toán cho phép truyền thông task queues.h, semphr.h a) FreeRTOS.h: 70   Gồm phần:   Chứa khai báo file header viết riêng cho port: /* Chứa định nghĩa */ #include "projdefs.h" /* Chứa định nghĩa tham số cấu hình */ /* cho scheduler */ #include "FreeRTOSConfig.h" /* chứa định nghĩa cho port */ #include "portable.h" Kiểm tra khai báo cần thiết tham số cấu hình marco, thiết lập giá trị mặc định với tham số chưa thiết lập giá trị cụ thể /*kiểm tra cấu hình cho sách sử dụng scheduler */ #ifndef configUSE_PREEMPTION #error Missing definition: configUSE_PREEMPTION should be defined in FreeRTOSConfig.h as either or See the Configuration section of the FreeRTOS API documentation for details #endif /*kiểm tra cấu hình sử dụng co-routine hay khơng*/ #ifndef configUSE_CO_ROUTINES #error Missing definition: configUSE_CO_ROUTINES should be defined in FreeRTOSConfig.h as either or See the Configuration section of the FreeRTOS API documentation for details #endif /*kiểm tra cấu hình tham số cho semaphores thiết lập*/ /*giá trị mặc định cần thiết*/ #ifndef configUSE_COUNTING_SEMAPHORES #define configUSE_COUNTING_SEMAPHORES #endif b) Task.h: Gồm khai báo API liên quan đến task, chia theo chức năng: Các API liên quan đến tạo xóa task: Gồm task thực nhiệm vụ quan trọng tạo xóa task  API tạo task : xTaskCreate()  API xóa task: vTaskDelete() 71   Khai báo đầy đủ xTaskCreate() là: portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const char * const pcName, unsigned short usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask ); API tạo task thêm vào danh sách task sẵn sàng thực thi Task tạo có quyền truy cập toàn toàn đồ nhớ vi xử lý Đối với hệ thống mà có thêm hỗ trợ MPU, tạo task với tham số ràng buộc MPU thơng qua API xTaskCreateRestricted() Thực chất khai báo xTaskCreate() marco gọi đến thủ tục xTaskGenericCreate() tasks.c Đây hàm cho phép tạo task với nhiều tùy chọn hơn, phù hợp với cấu hình khác hệ thống, cụ thể trường hợp này, tạo task cấu hình khơng sử dụng khối MPU /*định nghĩa API xTaskCreate()*/ #define xTaskCreate( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask ) xTaskGenericCreate( ( pvTaskCode ), (pcName ), ( usStackDepth ), ( pvParameters ),( uxPriority ), (pxCreatedTask ),( NULL ),( NULL )) Các API điều khiển task: tạo hàm điều khiển API cụ thể nhiệm vụ sau:  Gây trễ task với điều kiện khác nhau: vTaskDelay() vTaskDelayUntil() vTaskDelay() dùng để tạo trễ khoảng thời gian tương đối thời điểm gọi API này, vTaskDelayUntil() tạo trễ khoảng thời gian xác định  Các tác vụ liên quan đến ức ưu tiên: xTaskPriorityGet() vTaskPrioritySet() Hai API làm nhiệm vụ xác định mức ưu tiên có đặt mức ưu tiên cho task  Các API liên quan đến trạng thái task chặn, khôi phục task: vTaskSuspend() nhằm để chặn task vTaskResume() gọi sau task bị dừng muốn quay trạng thái sẵn sàng Muốn gọi hàm vTaskResume() từ ngắt sử dụng xTaskResumeFromISR() CácAPI tiện ích cho task: chứa API cung cấp tiện ích hệ thống cho task như:  xTaskGetTicksCount: trả lại giá trị tick đếm từ vTaskStartScheduler bị hủy bỏ  uxTaskGetNumberOfTasks(void): trả lại số lượng task mà kernel quản lý Hàm bao gồm task sẵn sàng, bị khóa bị treo Task bị delete mà chưa giải phóng idle tính vào 72    vTaskList(): hàm khơng cho phép ngắt khoảng thời gian làm việc Nó khơng tạo để chạy ứng dụng bình thường giúp cho việc debug  vTaskStartTrace(): đánh dấu việc bắt đầu hoạt động kernel Việc đánh dấu chia để nhận task chạy vào lúc Đánh dấu file lưu trữ dạng nhị phân Sử dụng tiện ích độc lập DOS gọi convtrce.exe để chuyển chúng sang kiểu text file dạng mà xem vẽ  ulTaskEndTrace(): Dừng đánh dấu kernel hoạt động, trả lại số byte mà viết vào đệm đánh dấu  Các API điều khiển nhân: gồm API cung cấp giao diện scheduler như:  vTaskStartScheduler() : khởi động scheduler, cụ thể kích hoạt hoạt động freeRTOS  vTaskEndScheduler() : chấm dứt hoạt động scheduler  taskDISABLE_INTERRUPTS()/taskENABLE_INTERRUPTS() ngắt  taskENTER_CRITICAL()/taskEXIT_CRITICAL() : báo hiệu đoạn mã quan trọng cần có xử lý phù hợp  :cấm/cho phép Các API liên quan đến MPU: gồm API mà ứng dụng khối MPU cấu hình port có hỗ trợ MPU:  xTaskCreateRestricted() : tạo task với ràng buộc quyền truy cập đến tài nguyên nhớ vi xử lý Nó xTaskCreate(), Macro tham chiếu đến xTaskGenericCreate() nhiên có thêm tham số MPU #define xTaskCreateRestricted( x, pxCreatedTask ) xTaskGenericCreate( ((x)->pvTaskCode), ((x)->pcName), ((x)>usStackDepth), ((x)->pvParameters), ((x)->uxPriority), (pxCreatedTask), ((x)->puxStackBuffer), ((x)->xRegions) )  vTaskAllocateMPURegions() :thay đổi cấp phát lại vùng nhớ ràng buộc task tạo xTaskCreateRestricted()  c) List.h: File chứa khai báo hàm marco liên quan đến thủ tục tạo, xóa, thiết lập chỉnh sửa tham số task FreeRTOS xây dựng cấu trúc danh sách task, task phần tử có cấu trúc: /*khai báo kiểu phần tử danh sách*/ struct xLIST_ITEM { 73   /*kết hợp với mức ưu tiên dùng xếp danh sách */ portTickType xItemValue; /*Con trỏ đến phần tử trước dach sách */ volatile struct xLIST_ITEM * pxNext; /* Con trỏ đến phần tử sau dach sách */ volatile struct xLIST_ITEM * pxPrevious; /*con trỏ đến task, cụ thể Task Control Block(TCB)*/ void * pvOwner; /*con trỏ đến danh sách mà nằm đó*/ void * pvContainer; }; /*Định nghĩa danh sách*/ typedef struct xLIST { /*kích thước danh sách*/ volatile unsigned portBASE_TYPE uxNumberOfItems; /*pxIndex: dùng để đến phần tử thời danh sách*/ volatile xListItem * pxIndex; /*đánh dấu kết thúc danh sách*/ volatile xMiniListItem xListEnd; } xList; Đi kèm cấu trúc danh sách sử dụng scheduler API thao tác phần tử danh sách danh sách:  Khởi tạo danh sách : vListInitialise()  Đặt đối tượng sở hữu phần tử danh sách  Đặt giá trị phần tử danh sách Trong hầu hết trường hợp giá trị dùng để xếp danh sách theo thứ tự định  Để lấy giá trị phần tử danh sách Giá trị biểu thị gì, ví dụ mức ưu tiên tác vụ thời gian mà task bị khố  Xác định xem danh sách cịn chứa phần tử khơng, có giá trị true danh sách rỗng  Kiểm tra số phần tử danh sách  Xác định phần tử danh sách  Tìm chương trình chủ phần tử danh sách  Kiểm tra xem phần tử có nằm danh sách không  Thêm phần tử vào danh sách  Loại bỏ phần tử từ danh sách 74   Ví dụ: /*API xác định độ dài danh sách*/ #define listCURRENT_LIST_LENGTH( pxList ) >uxNumberOfItems ) ( ( pxList )- /*API khởi tạo danh sách*/ void vListInitialise( xList *pxList ); d) Croutine.h: Chứa khai báo hàm marco xây dựng co-routine Trong Croutine, cần ý số API quan trọng tương ứng với thao tác task khai báo task.h:  xCoroutineCreate() : tạo co-routine đưa vào danh sách corountine sẵn sàng chạy  crDELAY() : trễ co-routine() chu kì thời gian xác định  crSTART()/crEND() : khởi chạy/kết thúc co-routine  Ví dụ cấu trúc chung co-routine: void vACoRoutine( xCoRoutineHandle portBASE_TYPE uxIndex ) { // Khai báo biết static long ulAVariable; // bắt đầu co-routine; crSTART( xHandle ); xHandle, unsigned for( ;; ) { // câu lệnh co-routine } // kết thúc co-routine crEND(); } e) Portables.h: Khai báo file header tương ứng với port sử dụng File header đưa vào tương ứng với marco port sử dụng: /*kiểm tra có phải port cho avr, tool gcc*/ #ifdef GCC_MEGA_AVR #include " /portable/GCC/ATMega323/portmacro.h" #endif /*kiểm tra có phải port cho avr, tool IAR*/ 75   #ifdef IAR_MEGA_AVR #include " /portable/IAR/ATMega323/portmacro.h" #endif /*kiểm tra có phải port cho PIC24, tool MPLAB*/ #ifdef MPLAB_PIC24_PORT #include " \ \Source\portable\MPLAB\PIC24_dsPIC\portmacro.h" #endif Thêm nữa, file bao gồm khai báo thủ tục quản lý nhớ port: /* * Map to the memory management routines required for the port */ void *pvPortMalloc( size_t xSize ) PRIVILEGED_FUNCTION; void vPortFree( void *pv ) PRIVILEGED_FUNCTION; void vPortInitialiseBlocks( void ) PRIVILEGED_FUNCTION; size_t xPortGetFreeHeapSize( void ) PRIVILEGED_FUNCTION; Thêm vào file nhân cần quan tâm file FreeRTOSConfig.h portmacro.h Trong FreeRTOSConfig.h chứa tham số cấu hình phù hợp với port cụ thể portmacro.h chứa API riêng port cấu hình timer, thủ tục lưu khôi phục context 3.3.3 Hệ điều hành Embedded Linux: Thực chất hệ điều hành embedded Linux phiên hệ điều hành Linux dùng hệ thống nhúng mobile phone, PDA, set-top box, thiết bị điện tử gia dụng, thiết bị mạng, thiết bị điều khiển, Theo thống kê có, Linux sử dụng khoảng 18% kỹ sư nhúng Không giống phiên dành cho desktop server Linux, phiên embedded Linux thiết kế cho thiết bị với tài nguyên giới hạn Bởi hạn chế giá thành kích thước, thiết bị nhúng thường có RAM nhớ thứ cấp so với desktop, thường sử dụng nhớ flash thay ổ đĩa cứng Bởi thiết bị nhúng thực chức chuyên dụng nên nhà phát triển tối ưu phiên nhúng Linux cho cấu hình phần cứng hệ thống nhúng Những tối ưu giúp giảm thiểu ứng dụng phần mềm trình điều khiển thiết bị, cho phép thay đổi nhân Linux để trở thành hệ điều hành thời gian thực Thiết kế Linux phân biệt mã phụ thuộc xử lý cần thay đổi cho kiến trúc mã khả chuyển đơn giản việc biên dịch lại Vì vậy, Linux khả chuyển cho nhiều kiến trúc vi xử lý khác như: - Motorola 68k biến thể - Alpha - Power PC 76   - ARM SPARC MIPS AVR32 Blackfin Việc sử dụng Linux thiết bị nhúng có ưu điểm quyền miễn phí, nhân ổn định, hỗ trợ lớn từ công đồng mã nguồn mở, nhà phát triển tự thay đổi phân phối mã nguồn Tuy nhiên nhược điểm yêu cầu nhớ tương đối lớn cho nhân hệ thống file gốc, phức tạp việc truy nhập nhớ chế độ nhân chế độ người sử dụng tảng trình điều khiển thiết bị phức tạp Các đặc điểm quan trọng Linux gồm: - Đa nhiệm : lập lịch phân bổ Linux sử dụng thuật toán lập lịch preemptive tiến trình với mức ưu tiên cao ưu tiên tiến trình CPU thực xảy kiện không đồng - Đa người sử dụng : Linux phát triển từ Unix hệ thống chia sẻ theo thời gian cho phép nhiều người sử dụng chia sẻ chung máy tính Vì có nhiều chức hỗ trợ việc bảo vệ liệu tính riêng tư - Đa xử lý: Linux cung cấp hỗ trợ mở rộng cho đa xử lý đối xứng SMP(Symmetric Multi-Processing) - Bộ nhớ bảo vệ: Mỗi tiến trình Linux hoạt động khơng gian nhớ riêng khơng cho phép truy cập trực tiếp đến khơng gian nhớ tiến trình khác Điều tránh trỏ lỗi tiến trình gây phá hoại khơng gian nhớ tiến trình khác Các truy cập sai bẩy phần cứng bảo vệ nhớ xử lý tiến trình bị ngắt với cảnh báo tương ứng - Hệ thống file phân cấp Hiện nay, với yêu cầu giảm thiểu thời gian phát triển, embedded Linux xu hướng phát triển mạnh mẽ giới nhúng 3.3.4 Hệ điều hành uCLinux: uClinux hay micro-controller Linux phiên Linux thiết kế cho vi xử lý mà khơng có khối quản lý nhớ MMU(Memory Management Unit) Việc khơng có MMU đặc điểm chung vi xử lý giá thành thấp uCLinux giải pháp mã nguồn mở miễn phí quyền, mục đích nhằm tương thích với Linux Dự án uCLinux bắt đầu năm 1997 với mục đích cho phiên nhân Linux 2.0 dành cho vi điều khiển giá thành thấp Jeff Dionne, Kenneth Albanowski nhóm nhà phát triển khác đề xuất trình họ thảo luận việc nhúng Linux điều khiển mạng khơng có MMU nhằm giải tốn truyền thơng hệ thống truyền thông Phiên uCLinux phân bổ với xử lý Motorola 68000, dựa vi xử lý MC68328 triển khai điều khiển SCADA Ngày nay, uCLinux port cho nhiều dòng vi điều khiển ColdFire, Axis ETRAX, ARM, Atari 68k, 77   Câu hỏi ôn tập Hệ điều hành thời gian thực gì? Nhiệm vụ hệ điều hành thời gian thực? Các đặc điểm hệ điều hành thời gian thực Vẽ sơ đồ vị trí hệ điều hành thời gian thực model hệ thống nhúng Liệt kê số hệ điều hành thời gian thực Kernel gì? Liệt kê mơ tả tính kernel Các model hệ điều hành bao gồm model nào? Sự khác biệt process tác vụ? 10 Sự khác biệt chiếm quyền không chiếm quyền 11 Các trạng thái tác vụ bao gồm trạng thái nào? 12 Việc đồng thực nào? 13 Liệt kê hàm FreeRTOS mô tả chức hàm? 78 ... CHƯƠNG 1- GIỚI THIỆU CHUNG VỀ HỆ THỐNG NHÚNG 1. 1 Khái niệm Hệ thống nhúng (Embedded system) 1. 2 Lịch sử phát triển hệ thống nhúng 1. 3 Các đặc điểm hệ thống nhúng 1. 3 .1 Giao... hệ thống phần mềm ứng dụng) Lớp phần cứng bao gồm thành phần vật lý bo mạch nhúng Lớp phần mềm hệ thống phần mềm ứng dụng bao gồm phần mềm hệ thống nhúng Một số kiến trúc phần mềm hệ thống nhúng:. .. thường sử dụng hệ thống nhúng Để phát triển hệ thống nhúng, cần kỹ nào? 19   CHƯƠNG 2: CÁC THÀNH PHẦN HỆ THỐNG 2 .1 Các thành phần phần cứng 2 .1. 1 Bộ xử lý nhúng Bộ xử lý đơn vị chức hệ thống nhúng,

Ngày đăng: 02/03/2022, 08:41

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan