Chuyển sang RTOS: trải nghiệm trên RP2040
Martijn Braam
- Bài viết của Martijn Braam, người làm các công việc liên quan đến máy tính
- Đang thực hiện nhiều dự án vi điều khiển
- Chủ yếu sử dụng bo mạch Raspberry Pi Pico, trải nghiệm phát triển khá tốt
Tổng quan dự án
- Chế tạo bộ điều khiển phần cứng để điều khiển thiết bị video
- Điều khiển camera PTZ và thiết bị chuyển mạch video
- Do hiệu năng của bộ điều khiển hiện có không tốt nên cần làm một bảng điều khiển mới
Thiết kế phần cứng
- Gồm 9 nút RGB, joystick analog và màn hình hiển thị
- Sử dụng mô-đun giao tiếp RS-485 và Ethernet
- Sau nhiều lần chỉnh sửa phần cứng, đã hoàn tất việc hiện thực chức năng
Phần mềm ban đầu
- Bắt đầu với dự án cmake dùng pico-sdk
- Gán lõi thứ hai cho mô-đun Wiznet, lõi thứ nhất xử lý I/O giao diện người dùng
- Độ phức tạp tăng lên do phải xử lý nhiều tác vụ cùng lúc
FreeRTOS
- Dùng FreeRTOS để xử lý song song nhiều tác vụ
- Tạo nhiều tác vụ (Task): nút bấm, LED, mạng, DHCP, mDNS, ATEM, VISCA
- Vấn đề của FreeRTOS: hệ thống bị treo khi dùng
printf, thiếu lớp trừu tượng hóa phần cứng
Apache NuttX
- Cung cấp môi trường tương tự hệ thống Unix
- Sau khi thiết lập ban đầu có thể dùng shell thực sự
- Có thể cấu hình phần cứng thông qua hệ thống menuconfig/Kconfig
- Chức năng cơ bản không hoạt động do vấn đề cấu hình bus i2c
- Không cần đường dẫn hệ thống tệp và shell
Zephyr
- Cung cấp tiện ích Python để cấu hình dự án
- Cần tải xuống kho git dung lượng 5GB
- Yêu cầu cài đặt Zephyr SDK, nhưng cũng có thể dùng ARM toolchain hiện có
- Hỗ trợ Raspberry Pi Pico còn hạn chế, nên đã thử dùng bo mạch khác
- Dù đã sửa lỗi build và cảnh báo thì vẫn không hoạt động
Kết luận
- Đã build thành công một số ứng dụng bằng FreeRTOS
- Cần hiện thực giải pháp thay thế
printf
- Sẽ tiếp tục dùng FreeRTOS để cố gắng hiện thực chức năng mong muốn
Tóm tắt của GN⁺
- Bài viết này nói về quá trình chuyển sang RTOS trong một dự án vi điều khiển
- So sánh ưu và nhược điểm của FreeRTOS, Apache NuttX và Zephyr
- Kết luận rằng FreeRTOS là lựa chọn phù hợp nhất
- Giúp hiểu rõ nhiều yếu tố cần cân nhắc khi chọn RTOS
- Các dự án có chức năng tương tự gồm FreeRTOS và Zephyr
1 bình luận
Ý kiến trên Hacker News
Có vẻ tác giả này đang kỳ vọng RTOS sẽ giống như môi trường Arduino
Tóm tắt ngắn gọn về các RTOS:
Cài cả toolchain cho toàn hệ thống theo kiểu UNIX truyền thống là một nỗi đau
PlatformIO đang đi đúng hướng
Đang chuyển các dự án RP2040 sang Rust và Embassy
Zephyr hỗ trợ Pi Pico 100%
ThreadX là mã nguồn mở
Muốn thử dùng Hubris trong các dự án thực tế
Tôi nghĩ microPython là con đường dễ hơn
Tự viết một bộ hẹn giờ green thread đơn giản
FreeRTOS về cơ bản là tiêu chuẩn công nghiệp
Rust RTIC hỗ trợ rp2040 và rất nhẹ