inflearn logo

Lập trình FreeRTOS 2 - Học thiết kế và gỡ lỗi RTOS qua 40 sự cố thực tế

Bạn từng bối rối không biết bắt đầu từ đâu khi mã RTOS thỉnh thoảng bị treo? Chúng ta sẽ cùng nhau tái hiện có chủ đích 40 lỗi thực tế xảy ra trên bo mạch STM32, rồi lần theo bằng chứng như các con số trên màn hình, trình gỡ lỗi và nhật ký để tìm nguyên nhân và khắc phục lỗi từ đầu đến cuối.

1 học viên đang tham gia khóa học này

Độ khó Trung cấp trở lên

Thời gian Không giới hạn

C
C
FreeRTOS
FreeRTOS
stm32
stm32
rtos
rtos
lvgl
lvgl
C
C
FreeRTOS
FreeRTOS
stm32
stm32
rtos
rtos
lvgl
lvgl

Bạn sẽ nhận được điều này sau khi học.

  • Đánh giá việc chia tác vụ, mức độ ưu tiên và chờ theo chu kỳ (vTaskDelay và vTaskDelayUntil) dựa trên triệu chứng và số liệu.

  • Kết nối an toàn ngắt với RTOS, tuân thủ mức ưu tiên ISR và các ràng buộc của API FromISR.

  • Lựa chọn hàng đợi, thông báo, nhóm sự kiện và mutex phù hợp với luồng dữ liệu, đồng thời tránh deadlock và đảo ngược ưu tiên.

  • Xử lý đúng quyền sở hữu bộ đệm và thời điểm hoàn tất trong xử lý bất đồng bộ DMA·UART

  • Thu thập bằng chứng về sự cố bằng stack, heap, log và watchdog, đồng thời ngăn sự cố tái diễn.

  • Trực tiếp truy vết nguyên nhân bằng trình gỡ lỗi CubeIDE (điểm dừng, ngăn xếp lời gọi, Live Expressions)

Những gì bạn sẽ đạt được sau khóa học

Năng lực chẩn đoán và sửa mã RTOS thỉnh thoảng bị treo dựa trên bằng chứng chứ không phải cảm tính. Bạn sẽ hình thành thói quen thu hẹp nguyên nhân qua các con số trên màn hình, trình gỡ lỗi và nhật ký, rồi kiểm tra lại trong cùng điều kiện sau khi sửa.

Mã thực hành là một dự án FreeRTOS viết bằng ngôn ngữ C, chạy trên bo mạch STM32 (STM32F429I-DISC1). Kết quả được kiểm tra qua các con số trên màn hình LCD được vẽ bằng LVGL. Đây không phải là khóa học dành cho người mới học RTOS, mà là khóa học về cách xử lý những đoạn mã vẫn chạy nhưng thỉnh thoảng bị treo.

Tóm tắt trong một câu

Từng bước truy tìm bằng chứng và khắc phục 40 lỗi thực tế được cố ý tái hiện trên bo mạch STM32. Từ thiết kế task, ngắt và DMA, hàng đợi và đồng bộ hóa, chẩn đoán bộ nhớ đến độ bền vững. Gồm 40 chương, khoảng 14 giờ 30 phút.

Thông tin về quy trình sản xuất

Khóa học này được sản xuất bằng quy trình ứng dụng AI. Phần thuyết minh sử dụng giọng nói tổng hợp được huấn luyện từ chính giọng của giảng viên; các công cụ AI cũng được dùng để tạo kịch bản và đồ họa. Giảng viên trực tiếp lên kế hoạch và kiểm duyệt nội dung. Tất cả hình ảnh kết quả thực hành đều được xác nhận khi chạy trên bo mạch STM32 và STM32CubeIDE thực tế.

"Thỉnh thoảng bị treo. Xem bằng trình gỡ lỗi thì vẫn bình thường."

Sự cố RTOS thường xuất hiện theo cách này. Nếu lần nào cũng bị treo thì còn dễ xử lý. Những lỗi chỉ xảy ra vài tiếng một lần, chỉ xuất hiện khi nhấn theo một trình tự nhất định, hoặc biến mất khi thêm nhật ký, thì dù đọc lại mã nguồn bao nhiêu lần cũng không thể phát hiện ra.

Vì vậy, nhiều nhà phát triển tăng thời gian trễ, thay đổi mức ưu tiên và chuyển thời gian chờ thành vô hạn. Triệu chứng tạm thời biến mất, nhưng những cách sửa mà bạn không thể giải thích vì sao chúng khắc phục được vấn đề sẽ lại gây ra sự cố ở nơi khác.

Mục tiêu của khóa học này là đưa ra bản sửa đổi mà bạn có thể giải thích nguyên nhân bằng bằng chứng.

Những câu hỏi thực tế thường gặp trong phỏng vấn về hệ thống nhúng

"Đảo ngược ưu tiên là gì?" "Tại sao phải dùng API FromISR bên trong ISR?" "Làm sao phát hiện stack bị tràn?" "Tại sao hệ thống vẫn bị treo dù có watchdog?"

Những câu trả lời học thuộc từ sách sẽ sụp đổ chỉ với một câu hỏi phụ. Trong khóa học này, bạn sẽ trực tiếp gây ra những lỗi này trên bo mạch, xác định nguyên nhân bằng số liệu rồi khắc phục. Bạn sẽ có thể trả lời trong buổi phỏng vấn rằng "Tôi đã thử tái hiện và kết quả là như thế này".

Mọi chương đều được triển khai theo cùng một trình tự

Mỗi chương đề cập đến một sự cố thực tế thường gặp trong công việc. Chạy lần lượt bản dựng bị lỗi và bản dựng đã sửa trên cùng một bo mạch, rồi so sánh hai kết quả bằng số liệu.

BƯỚC 1

Tái hiện lỗi

Hiển thị triệu chứng trên màn hình bằng bản dựng bị lỗi.

BƯỚC 2

Thu thập bằng chứng

Khoanh vùng nguyên nhân bằng các con số trên LCD, trình gỡ lỗi và nhật ký.

BƯỚC 3

Chỉnh sửa và so sánh

Đặt cạnh bản build đã sửa để kiểm tra.

Bạn sẽ học những điều như thế này

Luồng dữ liệu, tác vụ và ngắt

01 Cấu hình dự án, trình tự khởi động và ngắt trước khi khởi tạo

02 Ranh giới giữa tác vụ GUI và tác vụ xử lý công việc

03 Độ ưu tiên, chờ theo chu kỳ, bộ định thời phần mềm

04 Truyền dữ liệu bằng hàng đợi, thông báo và nhóm sự kiện

05 Độ ưu tiên ISR, API FromISR, thời điểm hoàn tất DMA·UART

Đồng bộ hóa · chẩn đoán · độ tin cậy

06 Mutex, đảo ngược mức ưu tiên, thứ tự khóa và deadlock

07 Đo lường stack·heap và thời gian thay đổi do log gây ra

08 Lỗi cảm biến, thử lại, chờ vô hạn, watchdog

09 Bộ đếm tràn khi ghi dữ liệu trong thời gian dài

10 Tiêu chí đạt yêu cầu cho thử nghiệm trên PC và thử nghiệm dài hạn

Điểm nổi bật riêng của khóa học này

40 chương, một bo mạch và một màn hình

Tái hiện mọi lỗi trên STM32F429I-DISC1 và cùng một màn hình LVGL. Mỗi lần chạy đều cho ra các con số giống nhau, nhờ đó có thể so sánh trực tiếp trước và sau khi sửa.

Mã nguồn thực tế và màn hình trình gỡ lỗi

Trực tiếp lần theo nguyên nhân bằng mã nguồn thực tế của STM32CubeIDE, các điểm dừng, ngăn xếp lời gọi và Live Expressions.

Bản dựng bị lỗi và bản dựng đã sửa

So sánh hai bản build song song.

Căn cứ vào tài liệu gốc

Đối chiếu thanh ghi với tài liệu gốc RM0090·PM0214.

Bài tập sau mỗi chương

So sánh với các giải pháp khác.

Màn hình bài giảng thực tế

So sánh trước và sau khi sửa bằng các con số hiển thị trên bo mạch

Dùng trình gỡ lỗi CubeIDE để xác định dòng gây ra sự cố

Bài 1 · Cùng một mã nguồn nhưng chỉ bản build trên máy tính của đồng nghiệp bị lỗi hiển thị

Bài 5 · Đặt bản dựng bị lỗi và bản dựng đã sửa cạnh nhau trên cùng một bo mạch

Bài 37 · Sự cố dù có watchdog nhưng hệ thống vẫn treo và không khởi động lại

Bài 30 · Sơ đồ thời gian được vẽ từ các giá trị đo trên bo mạch

Bài 16 · Bốn điều kiện gây bế tắc và mắt xích cần phá vỡ

Bài học 16 · Biểu hiện của deadlock trong sản phẩm thực tế

Bài học 29 · Vượt quá cuối ngăn xếp sẽ ghi đè lên vùng nhớ lân cận

Bài 38 · Phép trừ vẫn đúng ngay cả khi bộ đếm bị tràn

Bài 26 · Thỉnh thoảng xảy ra timeout chỉ ở sản phẩm có tải lớn

Bài 25 · Cấu trúc đánh thức tác vụ gửi bằng thông báo hoàn tất

18 năm kinh nghiệm giảng dạy thực tế

Từ năm 2008, tôi đã giảng dạy cho các nhà phát triển tại những doanh nghiệp và tổ chức như Samsung Electronics, LG Electronics, SK hynix và Hyundai Mobis. Khóa học này được biên soạn lại để bất kỳ ai cũng có thể tái hiện các dạng lỗi RTOS từng được xử lý trong thực tế chỉ với một bo mạch.

Nếu đã từng dùng FreeRTOS, giờ là lúc xử lý sự cố

Khóa học này dành cho những người có thể tạo task và queue nhưng vẫn bối rối không biết bắt đầu kiểm tra từ đâu khi gặp sự cố thỉnh thoảng bị treo. Nếu bạn đã làm quen với API trong phần 1 (Lập trình FreeRTOS), phần 2 sẽ tìm hiểu cách các API đó gặp lỗi trong môi trường thực tế.

Nếu đang chuẩn bị cho công việc trong lĩnh vực nhúng, hãy học API ở phần 1 rồi trải nghiệm cách những API đó gặp sự cố trong thực tế ở phần 2. Những sự cố mà các nhà phát triển đang làm việc trong ngành phải mất vài năm mới lần lượt gặp phải đã được tổng hợp trong 40 chương, với thời lượng khoảng 14 giờ 30 phút.

Môi trường thực hành

Bo mạch và công cụ

  • STM32F429I-DISC1 (tích hợp LCD)

  • STM32CubeIDE 2.2.0

  • STM32CubeMX (bài học số 2), PuTTY (bài học về nhật ký cổng nối tiếp)

  • Ngôn ngữ C, FreeRTOS, LVGL

Nếu không có bo mạch

  • Video có đầy đủ màn hình chạy chương trình và màn hình trình gỡ lỗi của tất cả các chương.

  • Bạn có thể vừa xem vừa theo dõi nguyên nhân và quá trình khắc phục.

Công nghệ liên quan: FreeRTOS · rtos · stm32 · C · lvgl

Câu hỏi thường gặp

Q. Tôi có thể học mà không cần nghe phần 1 không?

Nếu bạn đã từng sử dụng task, queue và semaphore trong FreeRTOS, bạn có thể học ngay. Phần đầu mỗi chương sẽ ôn lại ngắn gọn những kiến thức nền cần thiết. Nếu bạn mới làm quen với FreeRTOS, tôi khuyên bạn nên học phần 1 trước.

Q. Tôi chưa đi làm thì có thể học khóa này không?

Chỉ cần bạn đã từng sử dụng task và queue trong FreeRTOS dù chỉ một lần là đủ. Thậm chí, học trước khi đi xin việc còn có lợi hơn. Vì bạn sẽ trực tiếp tái hiện và khắc phục trên bo mạch các vấn đề thường được hỏi trong phỏng vấn như đảo ngược độ ưu tiên, xử lý ISR, tràn ngăn xếp và deadlock.

Q. Nhất thiết phải có bo mạch không?

Không cần. Video sẽ trình bày cả kết quả chạy chương trình lẫn màn hình trình gỡ lỗi. Nếu muốn tự tái hiện, bạn có thể chuẩn bị bo mạch STM32F429I-DISC1.

Q. Lời thuyết minh có phải là giọng AI không?

Vâng. Đây là giọng tổng hợp được huấn luyện từ chính giọng nói của giảng viên. Kịch bản và nội dung thực hành do giảng viên trực tiếp lên kế hoạch và kiểm duyệt; màn hình thực hành là kết quả chạy trên bo mạch thực tế.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Nhà phát triển đã thử dùng FreeRTOS nhưng không tìm ra nguyên nhân khiến hệ thống thỉnh thoảng bị treo.

  • Người dùng RTOS có thể làm cho nó chạy, nhưng không giải thích được vì sao phải viết như vậy.

  • Lập trình viên gặp khó khăn khi sử dụng đồng thời ngắt, DMA và RTOS

  • Dành cho những ai muốn giải thích hiện tượng đảo ngược mức ưu tiên, bế tắc và tính nguyên tử bằng bằng chứng.

  • Học viên đã học Lập trình FreeRTOS (Phần 1) và đang chuẩn bị bước vào thực hành.

Cần biết trước khi bắt đầu?

  • Con trỏ và cấu trúc trong ngôn ngữ C

  • Có kinh nghiệm sử dụng các API cơ bản của FreeRTOS (tác vụ, hàng đợi, semaphore)

  • Cách sử dụng cơ bản STM32CubeIDE

Xin chào
Đây là guileschool

Xác minh sự nghiệp

3,594

Học viên

263

Đánh giá

281

Trả lời

4.7

Xếp hạng

7

Các khóa học

Tôi đã học chuyên ngành Kỹ thuật Điện tử tại Đại học Inha và làm việc với tư cách là nhà phát triển phần mềm nhúng.

Từ năm 2008, tôi đã giảng dạy trực tiếp tại các cơ sở trong 18 năm. Tôi đã đào tạo các nhà phát triển tại những doanh nghiệp và tổ chức như Samsung Electronics, LG Electronics, SK hynix, Hyundai Mobis, LIG D&A, Đại học Quốc gia Seoul, đồng thời hệ thống hóa những kinh nghiệm đó thành giáo trình giảng dạy.

『RTOS』(2008), 『Linux Shell』(2018), 『FreeRTOS』(2019), 『Cortex-M』(2022), 『Hệ thống nhúng dựa trên bootloader』(2023)

Kênh YouTube Guileschool (https://www.youtube.com/@guileschool): Các bài giảng về hệ thống nhúng và phát triển phần mềm

Tôi cũng đã nghiên cứu về tự động hóa trên máy Mac được 15 năm. Tôi hướng dẫn cách giảm các công việc lặp đi lặp lại bằng Keyboard Maestro và AppleScript, đồng thời trực tiếp phát triển và bán plugin tự động hóa Greenlight cho Final Cut Pro. Các công cụ do tôi tự tạo được công khai trên GitHub (https://github.com/guileschool).

YouTube CaptainMacBot (https://www.youtube.com/@captainmacbot): Cách sử dụng AI và tự động hóa trên máy Mac

Vui lòng gửi yêu cầu về khóa học và các thắc mắc khác đến guileschool@gmail.com.

Thêm

Chương trình giảng dạy

Tất cả

43 bài giảng ∙ (14giờ 42phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của guileschool

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn

165.000 ₫

50%

6.695.529 ₫