- vừa được xem lúc

Khái niệm về Multitasking trên vi điều khiển!

0 0 2

Người đăng: delinux

Theo Viblo Asia

Giới thiệu nhanh

Vi điều khiển (microcontroller) là trái tim của rất nhiều thiết bị nhúng như máy đo nhiệt độ, đồng hồ thông minh, hệ thống cảnh báo, robot... Khi thực hiện phát triển một ứng dụng lập trình nhúng, có hai phương pháp lập trình chính thường được sử dụng:

  • Lập trình tuần tự (Sequential Programming)
  • Lập trình đa tác vụ (Multitasking) sử dụng hệ điều hành thời gian thực (RTOS)

Trong bài viết này, chúng ta sẽ cùng tìm hiểu và so sánh hai cách tiếp cận này, giúp bạn lựa chọn phương pháp phù hợp cho dự án của mình.


1. Lập Trình Tuần Tự Là Gì?

  • Lập trình tuần tự là phương pháp lập trình đơn giản nhất, trong đó các dòng lệnh được thực thi theo thứ tự từ trên xuống dưới. Vi điều khiển chỉ thực hiện một tác vụ tại một thời điểm, trong vòng lặp vô hạn. Phương pháp lập trình này dễ viết, dễ hiểu cho những người mới bắt đầu, không phức tạp, chương trình đơn giản nhưng sẽ không thể thực hiện nhiều tác vụ, phản hồi chậm và khó mởi rộng hoặc bảo trình khi chương trình lớn.

image.png

  • Như có thể thấy, các công việc chỉ được thực hiện tuần tự, nếu có một công việc phải xử lý tốn thời gian (thực hiện thuật toán, xử lý dữ liệu hay update lên màn hình hiển thị) hoặc chương trình lớn, có nhiều tác vụ thì chương trình sẽ bị chậm, không phản hồi đủ nhanh.

2. Multitasking Là Gì?

  • Multitasking (đa tác vụ) là khả năng cho phép hệ thống thực hiện nhiều tác vụ gần như cùng lúc. Trên thực tế, vi điều khiển thường chỉ có một lõi CPU, nên chỉ chạy một tác vụ tại một thời điểm. Tuy nhiên, với sự hỗ trợ của hệ điều hành thời gian thực (RTOS) như FreeRTOS, CPU có thể chuyển đổi nhanh chóng giữa các tác vụ thông qua cơ chế lập lịch (scheduling). Khi sử dụng Multitasking, hệ thống sẽ phản hồi nhanh hơn, dễ bảo trì cho hệ thống và dễ dàng phát triển thêm tính năng cho hệ thống sau này

Ví dụ:

Giả sử bạn có 3 task:

  • Task 1: Đọc cảm biến mỗi 100ms
  • Task 2: Cập nhật màn hình mỗi 500ms
  • Task 3: Gửi dữ liệu UART mỗi 1000ms

image.png

RTOS sẽ phân chia thời gian cho từng task và tự động quản lý thứ tự thực thi.

3. Khi nào nên dùng cách nào?

Trường hợp ứng dụng Nên chọn
Ứng dụng đơn giản như chớp LED, đọc cảm biến nhiệt độ đơn lẻ Tuần tự
Ứng dụng yêu cầu nhiều chức năng chạy song song (như hệ thống báo cháy, robot, thiết bị IoT phức tạp) RTOS

4. Kết luận

  • Lập trình tuần tự phù hợp cho các dự án đơn giản và người mới học. Tuy nhiên, nếu bạn đang phát triển một hệ thống phức tạp hơn, có nhiều tác vụ cần chạy đồng thời, thì multitasking với RTOS như FreeRTOS là một lựa chọn mạnh mẽ và hiệu quả.
  • Thực tế hiện nay, các vi điều khiển đang ngày càng trở nên mạnh mẽ hơn, trong khi giá thành lại rất rẻ. Do đó, yêu cầu về khả năng xử lý thời gian thực (real-time) và phản hồi nhanh đang dần trở thành tiêu chuẩn bắt buộc trong các ứng dụng nhúng hiện đại. Vì vậy, việc tìm hiểu và nắm vững kiến thức về RTOS là vô cùng cần thiết đối với những ai muốn theo đuổi con đường lập trình nhúng trên vi điều khiển. 😆😆😆

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giải mã AUTOSAR: Kiến trúc tiêu chuẩn ngành Automotive

Giới thiệu. AUTOSAR có vẻ khá xa lạ đối với người làm về công nghệ thông tin, nhưng đối với những bạn làm về Embedded System, đặc biệt là trong lĩnh vực Automotive, thì cũng.

0 0 22

- vừa được xem lúc

Từ khoá volatile trong lập trình C

Trong lập trình nhúng chắc hẵn bạn đã từng gặp phải tình huống khi chương trình C của bạn cho ra kết quả không đúng, mặc dù mã code có vẻ đúng? Một nguyên nhân có thể gây ra vấn đề này là việc tối ưu

0 0 22

- vừa được xem lúc

Giải mã AUTOSAR: Kiến trúc để đời ngành Automotive - Phần 2

Updating. Trong bài viết này, ta cùng tìm hiểu kỹ hơn về lớp trên cùng của kiến trúc, chính là lớp Application Layer (ASW).

0 0 19

- vừa được xem lúc

Con Trỏ Hàm - C/C++

Hàm Con Trỏ (Function Pointer) là gì. . Con trỏ tới hàm (A pointer to a function): Đây là biến lưu trữ địa chỉ hàm mà sau này có thể gọi bằng con trỏ này. .

0 0 16

- vừa được xem lúc

Cơ bản về WatchDog Timer trong hệ thống nhúng (Embedded System)

Khái Niệm. Trong hệ thống nhúng, a WatchDog Timer (Bộ đếm thời gian giám sát) là một thành phần hoặc tính năng của phần cứng được thiết kế để giám sát hoạt động của hệ thống và thực hiện hành động khắ

0 0 13

- vừa được xem lúc

Tối ưu hóa thời gian khởi động Nvidia Xavier

1. Vai trò.

0 0 10