Nó hoạt động cùng với UIA để cung cấp khả nănghiển thị về hiệu suất và hành vi thời gian thực của phần mềm chạy trên các thiết bị lõiđơn và đa lõi nhúng của TI.1.2.3.. • XDCtools đôi khi
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CƠ KHÍ
***
BÁO CÁO BÀI TẬP LỚN HỆ THỐNG THỜI GIAN THỰC
ĐỀ TÀI: TÌM HIỂU HỆ ĐIỀU HÀNH TI-RTOS
Nhóm: Hướng nội Part-time Lớp: L01
Giáo viên hướng dẫn: TS Ngô Hà Quang Thịnh
Thành phố Hồ Chí Minh - 09/2022
Trang 2DANH SÁCH THÀNH VIÊN
việc (%)
Trang 3MỤC LỤC
DANH MỤC HÌNH ẢNH 3
CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH TI-RTOS 4
1.1 TI-RTOS là gì? 4
1.2 Các thành phần của TI-RTOS 4
1.2.1 SYS/BIOS 4
1.2.2 UIA: TI-RTOS Instrumentation 5
1.2.3 NDK: TI-RTOS Networking 6
1.2.4 TI-RTOS Network Services 6
1.2.5 TI-RTOS Drivers and Board Initialization 6
1.2.6 XDCtools 6
1.3 SYS/BIOS Kernel Services 7
1.3.1 Threading Services 8
1.3.2 Synchronization Modules (Inter Processor Communication Services) 11
1.4 Tại sao phải sử dụng TI-RTOS? 13
CHƯƠNG 2: ƯU ĐIỂM VÀ NHƯỢC ĐIỂM 15
2.1 Ưu điểm 15
2.2 Nhược điểm 17
2.3 So sánh 18
CHƯƠNG 3: ỨNG DỤNG CỦA TI-RTOS 23
3.1 Máy bán nước tự động 23
3.1.1 Một máy bán nước tự động cần phải có những gì? 23
3.1.2 Cách tiếp cận thông thường 24
3.1.3 Cách tiếp cận ứng dụng hệ thống thời gian thực 25
3.1.4 Phân tích ưu điểm khi tiếp cận ứng dụng hệ thống thời gian thực 26
3.2 Phanh ABS 27
3.2.1 Tổng quan về hệ thống phanh ABS 27
3.2.2 Cấu tạo của hệ thống phanh ABS 28
3.2.3 Nguyên lí hoạt động 33
3.3 Hệ thống kiểm soát độ cao cho UAV 33
Trang 4TÀI LIỆU THAM KHẢO 40
DANH MỤC HÌNH ẢNH Hình 1: Kernel Services 8
Hình 2: Threading Services 9
Hình 3: Counting Semaphore 12
Hình 4: Queue 13
Hình 5: Download miễn phí tại trang chủ của TI 15
Hình 6: RTOS Components 15
Hình 7: TI-RTOS Device's Drivers 16
Hình 8: Thời gian thành lập và phát triển của TI-RTOS và FreeRTOS 17
Hình 9: Máy bán nước tự động 23
Hình 10: Sử dụng máy bán nước tự động 23
Hình 11: Phá vỡ máy bán nước tự động 24
Hình 12: Sơ đồ cách tiếp cận thông thường 24
Hình 13: Sơ đồ cách tiếp cận kết hợp RTOS 26
Hình 14: Cấu tạo hệ thống phanh ABS 28
Hình 15: Cảm biến gia tốc 29
Hình 16: Các trạng thái của cảm biến gia tốc 30
Hình 17: Cảm biến kiểu bán dẫn 31
Hình 18: Bộ chấp hành hệ thống phanh ABS 31
Hình 19: Bộ điều khiển ECU 32
Hình 20: Oakland University quadrotor with the avionics block 34
Hình 21: Common quadrotor avionics block 35
Hình 22: The Quadrotor avionics block with RTOS approach 36
Hình 23: Control system diagram 38
Trang 5CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH TI-RTOS 1.1 TI-RTOS là gì?
TI-RTOS là một hệ sinh thái công cụ nhúng có thể mở rộng cho các thiết bị của TI
Nó được mở rộng từ RTOS Kernel (SYS / BIOS) thành một RTOS hoàn chỉnh cung cấpgiải pháp bao gồm các thành phần middleware bổ sung và các driver cho các thiết bị Quacung cấp các thành phần phần mềm hệ thống thiết yếu đã được kiểm tra trước và đượctích hợp sẵn, TI-RTOS cho phép tập trung vào việc phân biệt ứng dụng của mình
Những thành phần của TI-RTOS:
• TI-RTOS Kernel (SYS/BIOS)
• TI-RTOS Instrumentation (UIA)
• TI-RTOS Networking (NDK)
• TI-RTOS Network Services
• MSPWare, Mware, TivaWare, CC26xxWare, CC26xxWare, and the CC3200SDK's driverlib
• XDCtools
1.2 Các thành phần của TI-RTOS
1.2.1 SYS/BIOS
TI-RTOS là một hệ sinh thái nhúng có thể mở rộng cho các thiết bị của TI Nó được
mở rộng từ một kernel đa nhiệm thời gian thực (SYS/BIOS) để trở thành một giải phápRTOS hoàn chỉnh bao gồm những thành phần middleware được thêm vào và các drivercủa thiết bị
SYS / BIOS cung cấp các lợi ích sau:
• Tất cả các đối tượng SYS / BIOS có thể được cấu hình tĩnh hoặc động
• Để giảm thiểu kích thước bộ nhớ, các API được mô-đun hóa để chỉ những APIđược sử dụng bởi chương trình cần được ràng buộc vào chương trình thực thi
Trang 6Ngoài ra, các đối tượng được cấu hình tĩnh để giảm kích thước mã bằng cáchloại bỏ nhu cầu bao gồm các cuộc gọi tạo đối tượng.
• Kiểm tra lỗi và gỡ lỗi thiết bị có thể định cấu hình và có thể được xóa hoàntoàn khỏi phiên bản mã sản xuất để tối đa hóa hiệu suất và giảm thiểu kíchthước bộ nhớ
• Hầu hết tất cả các lệnh gọi hệ thống đều cung cấp hiệu suất xác định để chophép các ứng dụng đáp ứng thời gian thực một cách đáng tin cậy
• Để cải thiện hiệu suất, dữ liệu thiết bị đo (chẳng hạn như dữ liệu log) đượcđịnh dạng trên máy chủ
• Mô hình phân luồng cung cấp các loại luồng cho nhiều trường hợp khác nhau.Hardware interrupt, software interrupt, task, idle đều được hỗ trợ Chúng ta cóthể kiểm soát các ưu tiên và các đặc điểm chặn của các luồng thông qua sự lựachọn của bạn về các loại luồng
• Các cấu trúc hỗ trợ giao tiếp và đồng bộ hóa giữa các luồng được cung cấp.Này bao gồm semaphore, mailbox, event, gate và message có độ dài thay đổi
• Dịch vụ quản lý bộ nhớ động cung cấp cả phân bổ khối có kích thước thay đổi
1.2.2 UIA: TI-RTOS Instrumentation
The Unified Instrumentation Architecture (Kiến trúc thiết bị đo đạc hợp nhất) (UIA)cung cấp nội dung đích hỗ trợ việc tạo và thu thập dữ liệu thiết bị đo đạc
Bộ công cụ Phân tích Hệ thống (System Analyzer), là một phần của CCS, cung cấpmột cách nhất quán và di động cho phần mềm thiết bị Nó bao gồm các chế độ xem cóthể được mở từ công cụ > Trình phân tích và công cụ RTOS > trình phân tích hệ thốngtrong CCS Nó cho phép phần mềm được sử dụng lại với nhiều loại thiết bị silicon, ứng
Trang 7dụng phần mềm và bối cảnh sản phẩm Nó hoạt động cùng với UIA để cung cấp khả nănghiển thị về hiệu suất và hành vi thời gian thực của phần mềm chạy trên các thiết bị lõiđơn và đa lõi nhúng của TI.
1.2.3 NDK: TI-RTOS Networking
Bộ công cụ phát triển mạng (Network Developer's Kit) (NDK) là một ngăn xếpmạng hoạt động trên SYS/BIOS, là nền tảng để phát triển và hiển thị các ứng dụng hỗ trợmạng trên TI Processor, hiện chỉ giới hạn ở dòng TMS320C6000 và ARM Ngăn xếpNDK đóng vai trò như một nền tảng tạo mẫu nhanh để phát triển và đóng gói các ứngdụng xử lý mạng và gói Nó có thể được sử dụng để thêm kết nối mạng vào các ứng dụnghiện có để liên lạc, cấu hình và kiểm soát Sử dụng các thành phần được cung cấp trongNDK, các nhà phát triển có thể nhanh chóng chuyển từ phát triển các concept sang cáctriển khai ứng dụng
1.2.4 TI-RTOS Network Services
Thành phần Dịch vụ Mạng cung cấp các giao thức mạng lớp ứng dụng, chẳng hạnnhư Máy khách HTTP và Máy khách SNTP Chúng được thiết kế cho bộ xử lý nhúng TI
1.2.5 TI-RTOS Drivers and Board Initialization
TI-RTOS cung cấp trình điều khiển (driver) cho các dòng thiết bị mà gói * Waređược TI-RTOS hỗ trợ Các gói * Ware này bao gồm TivaWare, MSPWare, MWare,CC26xxWare và CC3200SDK Driverlib
Các thư viện *Ware được phân phối với TI-RTOS đã được giảm kích thước để chỉbao gồm các phần cần thiết của thư viện
1.2.6 XDCtools
XDCtools là một thành phần phần mềm riêng biệt được cung cấp bởi TexasInstruments cung cấp các công cụ cơ bản cần thiết để định cấu hình và xây dựng SYS /BIOS, NDK và UIA
Trang 8• XDCtools cung cấp Trình chỉnh sửa cấu hình XGCONF và ngôn ngữ kịch bảnđược sử dụng trong các tệp * cfg Điều này được sử dụng để định cấu hình các mô-đuntrong một số thành phần tạo nên TI-RTOS.
• XDCtools cung cấp các công cụ được sử dụng để xây dựng tệp cấu hình Các công
cụ này được CCS sử dụng tự động nếu dự án của bạn chứa tệp *.cfg Bước xây dựng nàytạo ra các tệp mã nguồn sau đó được biên dịch và liên kết với mã ứng dụng của bạn
• XDCtools cung cấp một số mô-đun và API thời gian chạy mà TI-RTOS và cácthành phần của nó tận dụng để phân bổ bộ nhớ, ghi nhật ký, kiểm soát hệ thống, v.v
• XDCtools đôi khi được gọi là "RTSC" (Thành phần phần mềm thời gian thực), làtên của dự án mã nguồn mở trong hệ sinh thái Eclipse.org để cung cấp các thành phầnphần mềm có thể tái sử dụng (được gọi là "gói") để sử dụng trong các hệ thống nhúng
1.3 SYS/BIOS Kernel Services
Những Kernel Services chính:
• Threading Services: Task, Software Interrupt, Clock, Idle,
• Inter Processor Communication Services: Event, Mailbox, Semaphore, Gate
• Memory Managers: Heap, Fixed-size buffer
• Debug and Analysis Features: Logging, Diagnostics, Hooks, Stack checking
Trang 9Hình 1: Kernel Services
1.3.1 Threading Services
Nhiều ứng dụng thời gian thực phải thực hiện một số chức năng khác nhau cùngmột lúc, thường là để đáp ứng với các sự kiện bên ngoài như tính khả dụng của dữ liệuhoặc sự hiện diện của tín hiệu điều khiển Cả hai chức năng được thực hiện và khi chúngđều quan trọng
Các chức năng này được gọi là luồng Các hệ thống khác nhau sẽ định nghĩa cácluồng hẹp hoặc rộng Một luồng là một điểm kiểm soát duy nhất có thể kích hoạt mộtcuộc gọi hàm (function call) hoặc một thói quen dịch vụ gián đoạn (ISR Interrupt ServiceRoutine)
SYS/BIOS cho phép ứng dụng được tổ chức như một tập hợp các luồng, mỗi luồngthực hiện một chức năng mô-đun hóa Các chương trình đa luồng chạy trên một bộ xử lýduy nhất bằng cách cho phép các luồng có mức độ ưu tiên cao hơn ngăn chặn các luồng
Trang 10có mức độ ưu tiên thấp hơn và bằng cách cho phép các loại tương tác khác nhau giữa cácluồng, bao gồm chặn (blocked), giao tiếp (communicating) và đồng bộ hóa(synchronizing).
Các chương trình ứng dụng thời gian thực được tổ chức theo kiểu mô-đun như vậy tráingược với một polling loop duy nhất để dễ dàng hơn để thiết kế, thực hiện và duy trì.SYS /BIOS cung cấp hỗ trợ cho một số loại luồng chương trình với các ưu tiên khácnhau Các loại luồng (từ mức độ ưu tiên cao nhất đến thấp nhất) là:
• Hardware interrupts (Hwi), bao gồm cả Timer functions
• Software interrupts (Swi), bao gồm Clock functions
• Tasks (Task)
• Background thread (Idle)
Hình 2: Threading Services
Hardware interrupt thread (Hwi):
Các luồng Hwi (còn được gọi là Quy trình dịch vụ gián đoạn hoặc ISR) là các luồng cómức độ ưu tiên cao nhất trong ứng dụng SYS / BIOS Các luồng Hwi được sử dụng đểthực hiện thời gian các nhiệm vụ quan trọng phải tuân theo thời gian nghiêm ngặt Chúng
Trang 11được kích hoạt để đáp ứng với sự kiện không đồng bộ bên ngoài (ngắt) xảy ra trong môitrường thời gian thực Các luồng Hwi luôn chạy đến khi hoàn thành nhưng có thể đượcxen ngang tạm thời bởi các luồng Hwi được kích hoạt bởi các ngắt khác, nếu được chophép (enabled).
Software interrupt thread (Swi):
Ngắt phần mềm cung cấp các mức độ ưu tiên bổ sung giữa các luồng Hwi và các luồngTask Không giống như Hwis được kích hoạt bởi các ngắt phần cứng, Swis được kíchhoạt theo chương trình bằng cách gọi một số mô-đun API Swi nhất định Swis xử lý cácluồng chịu sự hạn chế về thời gian ngăn cản chúng được chạy dưới dạng các tác vụ,nhưng có thời hạn không nghiêm ngặt như thời hạn của Hwi Giống như của Hwi, các đốitượng của Swi luôn chạy đến khi hoàn thành Swis cho phép Hwis trì hoãn quá trình xử
lý ít quan trọng hơn đối với một luồng có mức độ ưu tiên thấp hơn, giảm thiểu thời gianCPU dành cho một thói quen dịch vụ gián đoạn, nơi các Hwis khác có thể bị cấm(disabled) Swis chỉ yêu cầu đủ không gian để lưu ngữ cảnh cho mỗi mức ưu tiên ngắtSwi, trong khi Task sử dụng một ngăn xếp riêng cho từng luồng
Sự kiện (Event), Hàng đợi tin nhắn (Queue) và Hộp thư (Mailbox)
Idle Thread:
Các luồng idle thực thi ở mức ưu tiên thấp nhất trong ứng dụng SYS / BIOS và được thựcthi lần lượt trong một vòng lặp liên tục (Vòng lặp nhàn rỗi) Sau khi hàm main return,một ứng dụng SYS/BIOS gọi thói quen khởi động (start up routine) cho mỗi mô-đun SYS/ BIOS và sau đó rơi vào Vòng lặp nhàn rỗi Mỗi luồng phải đợi tất cả những luồng kháchoàn thành trước khi nó được gọi lại Vòng lặp nhàn rỗi chạy liên tục ngoại trừ khi nóđược ưu tiên bởi các luồng có mức độ ưu tiên cao hơn
Trang 121.3.2 Synchronization Modules (Inter Processor Communication Services)
Đây là những mô-đun có thể được sử dụng để đồng bộ hóa quyền truy cập vào cáctài nguyên được chia sẻ, bao gồm:
Binary semaphores có sẵn hoặc không có sẵn Giá trị của chúng không thể tăng lên vượtquá 1 Do đó, chúng nên được sử dụng để điều phối quyền truy cập vào tài nguyên đượcchia sẻ bởi tối đa hai nhiệm vụ Binary semaphores cung cấp hiệu suất tốt hơn so vớicounting semaphores
Trang 13Hình 3: Counting Semaphore
Event
Event cung cấp một phương tiện để giao tiếp giữa và đồng bộ hóa các luồng Chúngtương tự như Semaphore ngoại trừ việc chúng cho phép chỉ định event nhiều điều kiệnphải xảy ra trước khi luồng quay trở lại
Một đối tượng Sự kiện được sử dụng với các lệnh gọi đến "pend" và "post", giống nhưđối với Semaphore Tuy nhiên, các cuộc gọi đến Event_pend() cũng chỉ định những sựkiện cần chờ đợi và các lệnh gọi đến Event_post() chỉ định sự kiện nào đang được đăng
Gate
Gates là thiết bị để ngăn chặn truy cập đồng thời vào các vùng mã quan trọng Cácgate khác nhau việc triển khai khác nhau về cách khóa các khu vực quan trọng
Các luồng có thể được ưu tiên trước (preempted) so với các luồng ề khác có mức độ
ưu tiên cao hơn và một số phần của mã cần phải được được hoàn thành bởi một luồngtrước khi chúng có thể được thực thi bởi một luồng khác Mã để sửa đổi biến toàn cục làmột ví dụ phổ biến về một khu vực quan trọng có thể cần được bảo vệ bởi một Cổng
Trang 14Gates thường hoạt động bằng cách vô hiệu hóa một số mức độ ưu tiên như vô hiệuhóa chuyển đổi tác vụ hoặc thậm chí gián đoạn phần cứng, hoặc bằng cách sử dụng mộtsemaphore nhị phân.
Mailbox
Mô-đun ti.sysbios.knl.Mailbox cung cấp một tập hợp các chức năng để quản lýmailbox Mailbox có thể được sử dụng để chuyển bộ đệm từ tác vụ này sang tác vụ kháctrên cùng một bộ xử lý Một phiên bản Mailbox có thể được sử dụng bởi nhiều người đọc
và người viết Mô-đun Hộp thư sao chép bộ đệm vào bộ đệm bên trong có kích thước cốđịnh Kích thước và số lượng của các bộ đệm này được chỉ định khi một phiên bản Hộpthư được tạo (hoặc xây dựng) Một bản sao được thực hiện khi một bộ đệm được gửi đithông qua Mailbox_post() Một bản sao khác xảy ra khi bộ đệm được truy xuất thông quamột Mailbox_pend () Mailbox_create() và Mailbox_delete() được sử dụng để tạo và xoáhộp thư, tương ứng Bạn có thể cũng tạo các đối tượng hộp thư tĩnh Hộp thư có thể được
sử dụng để đảm bảo rằng luồng của bộ đệm đến không vượt quá khả năng của hệ thống
để xử lý các bộ đệm đó
Queue
Mô-đun ti.sysbios.knl.Queue cung cấp hỗ trợ tạo danh sách các đối tượng Hàng đợiđược triển khai dưới dạng danh sách được liên kết đôi, để các phần tử có thể được chènhoặc xóa khỏi bất kỳ vị trí nào trong danh sách và để Hàng đợi không có kích thước tốiđa
Hình 4: Queue
Trang 151.4 Tại sao phải sử dụng TI-RTOS?
Những vi xử lí hiện nay càng ngày càng trở nên phát triển đến phức tạp: TCP/IP,USB, kết nối không dây, giao diện cảm ứng Những nhà phát triển nhúng hiện nay muốntập trung vào phát triển ứng dụng cụ thể một cách nhanh chóng, do đó những chức năngthường dùng như TCP/IP hay USB được sử dụng hơn là các giao thức truyền thôngtruyền thống như SPI, I2C,… và TI-RTOS cung cấp những chức năng đó
TI-RTOS đáp ứng nhu cầu về một hệ sinh thái phần mềm lớn mạnh cho phép nhữngnhà phát triển nhúng bên thứ ba có thể tiếp cận
SYS/BIOS Kernel được thiết kế cho các ứng dụng thời gian thực, vì thế các tác vụcủa hệ điều hành sẽ được hoàn thành trong một khoản thời gian cụ thể
Độ trễ của ngắt thấp Ở những vi điều khiển ARM Cortex-M hoặc C-2000 đươc sửdụng để điều khiển động động cơ điện hard-realtime, Kernel có một chức năng là zero-latency interrupt, cho phép tác vụ ngắt được thực hiện ngay tức thì
Đáp ứng với những dòng vi điều khiển có bộ nhớ bị giới hạn
Kernel system call có thể tiếp cận như C function call
Trang 16CHƯƠNG 2: ƯU ĐIỂM VÀ NHƯỢC ĐIỂM 2.1 Ưu điểm
- TI-RTOS là một hệ thống thời gian thực được hỗ trợ bởi TI và nó là hoàn toàn miễn phí
- Được tích hợp đầy đủ trong môi trường phát triển TI’s Code Composer Studio
- Dễ dàng phát triển phần mềm với một môi trường nhúng đầy đủ và ổn định Cungcấp đầy đủ trình quản lý và các chức năng hỗ trợ thiết bị ngoại vi như:
+ Hệ thống thời gian thực đa nhiệm với nhân TI-RTOS Kernel (SYS/BIOS): hệthống này cung cấp các giao diện tiêu chuẩn đã qua kiểm định để quản lý Interrupts,
Hình 5: Download miễn phí tại trang chủ của TI
Trang 17Timer, UART, I2C, SPI, SPI-SD, PWM, Watchdog và các thiết bị ngoại vi làm tiết kiệmnăng lượng.
Hình 1.2 – TI-RTOS kernel quản lý hệ thống
+ Có đầy đủ các giao thức truyền thông, drivers phổ biến hiện nay như Ethernet,USB, UART, I2C và SD
+ Cung cấp giao thức TCP/IP: giao thức này giúp ta tạo một mạng ảo khi nhiềumạng máy tính được kết nối với nhau Mục đích của mô hình TCP/IP là cho phép giaotiếp trên khoảng cách lớn
- Khả năng kết nối mạng ngay lập tức với các thành phần đã được tích hợp khi pháttriển phần mềm Người dùng không cần phải thiết lập code, ghép mã hoặc gặp trườnghợp version của một bộ phận không phù hợp trong công việc Điều này giúp các lập trìnhviên giảm đáng kể thời gian set up và kiểm tra ban đầu
Hình 7: TI-RTOS Device's Drivers
Trang 18- Dễ dàng thêm các tác vụ, tính năng mới với các tác vụ có độ ưu tiên thấp hơn trênphần mềm sẽ không làm gián đoạn đến thời gian đáp ứng của các tác vụ có độ ưu tiên caohơn, các tác vụ của hệ thống chính.
- Cho phép dễ dàng loại bỏ hoặc thêm lại các chức năng không cần thiết trong quátrình phát triển phần mềm
- Hệ thống tương thích với FAT (File Allocation Table) FAT là một định dạng hệthống tập tin mà ta thường thấy ở USB, máy chụp hình, máy quay phim, máy nghe nhạchay đầu đọc đĩa, …
2.2 Nhược điểm
- Không còn được ưu tiên sử dụng trong các dự án phát triển phần mềm, chỉ hỗ trợtốt cho một số họ MCU của TI như C26xx, C28xx, C28FM3x, TM4Cx, MSP430,MSP432, CC3200, …
- TI-RTOS cần thêm một số thời gian để xử lý các thông tin về tác vụ trước và saukhi đưa nó vào xử lý trong CPU nên hiệu suất sử dụng bị ảnh hưởng (do yêu cầu tínhràng buộc về thời gian nên độ phức tạp cao và xử lý cần đảm bảo độ an toàn)
Hình 8: Thời gian thành lập và phát triển của TI-RTOS và FreeRTOS
Trang 19- Kém hiệu quả trong việc quản lý đa tác vụ Vì vậy nó không được ưu tiên chonhững hệ thống đa tác vụ
- Các thuật toán bên trong rất phức tạp cho việc lập trình
- Một Task sẽ thuộc 1 trong 4 trạng thái: Ready, Running, Blocked và Suspended
Để duy trì độ chính xác và giảm sai số, TI-RTOS chỉ tập trung vào một task tại một thờiđiểm nhất định để Running Các Tasks có độ ưu tiên thấp hơn sẽ cần đợi để được thựcthi Đôi khi không có giới hạn về thời gian chờ
- TI-RTOS không thể tách và quản lý các bộ nhớ thật sự hiệu quả do đó dễ gặp sự
Pre-emptive
Cooperative
Trang 20Co-routines(task share stack)
DirectTASK
notifications
Softwaretimers
Zero-latency interruptssRound-robin(default)
Pre-emptive
Cooperative