- ESP8266-RTOS-SDK là một bộ công cụ phát triển phần mềm do Espressif cung cấp. SDK (Software Development Kit) được xây dựng trên một hệ điều hành thực RTOS, cụ thể là FreeRTOS
- Mục đích là cung cấp các thư viện API và ví dụ mẫu giúp lập trình viên dễ dàng phát triển các ứng dụng IoT phức tạp trên chip ESP8266, tận dụng khả năng đa nhiệm và quản lý tài nguyên hiệu quả của RTOS so với "bare-metal" mà chỉ chạy một luồng
- Là mỗi chuỗi công cụ (bộ công cụ) lập trình cần thiết để biên dịch (compile), liên kết (link) và gỡ lỗi (debug) mã nguồn thành 1 chương trình thực thi được triển khai trên kiến trúc phần cứng mục tiêu
- Các thành phần chính:
- Compiler (Trình biên dịch): Chuyển mã nguồn (ví dụ C/C++) thành mã máy
- Linker (Trình liên kết): Kết hợp các file mã máy thành 1 file thực thi duy nhất (firmware)
- Debugger (Gỡ lỗi): Giúp kiểm tra và sửa lỗi chương trình
- Binary Utilities: Các công cụ xử lý file nhị phân (ví dụ: objdump, readelf)
- Toolchain được sử dụng cho ESP8266 RTOS SDK là xtensa-lx106-elf
- Các chương trình sau khi được Toolchain biên dịch sẽ là 1 một ứng dụng 32-bit và chỉ chạy tốt trên môi trường 32-bit
- Chi tiết thành phần:
- Kiến trúc mục tiêu:
xtensa(kiến trúc vi xử lý của ESP8266) - Loại chip cụ thể:
lx106(tên lõi vi xử lý bên trong chip ESP8266) - Môi trường:
elf(Binary Format - Định dạng file thực thi phổ biến trong Unix-like systems)
- Kiến trúc mục tiêu:
- MSYS2 là một nền tảng cung cấp môi trường tương tự UNIX trên Windows, bao gồm giao diện quản lý dòng lệnh, công cụ phát triển như GNU (như gcc, make, Git) và trình quản lý gói Pacman từ Arch Linux.
- Nó hỗ trợ giả lập môi trường Linux 32-bit hoặc 64-bit trên Windows, đặc biệt tốt khi dùng các ứng dụng cần công cụ dựa trên GNU
-
Phiên bản đầu tiên của ESP8266-RTOS-SDK được xây dựng và đóng gói với các công cụ (Toolchain) được biên dịch cho kiến trúc 32-bit (i686)
- Vấn đề: Khi chạy các file thực thi 32-bit (của toolchain) trong môi trường MSYS64 (môi trường giả lập 64-bit), dù Windows 64-bit có thể chạy các ứng dụng 32-bit nhưng lớp tương thích của MSYS64 thường gây ra lỗi liên kết thư viện động (DLLS) hoặc xung đột các kiến trúc phức tạp khác
- Giải pháp: MSYS2 tạo ra môi trường giả lập 32-bit thuần túy, giúp các công cụ 32-bit của ESP8266 Toolchain chạy ổn định và chính xác như khi chúng được thiết kế
-
Do việc cố định phải dùng biên bản MSYS32 đã tạo ra hệ quả về phiên bản Python:
- Trong nhiều bản phân phối MSYS32 cũ, gói Python mặc định trong kho 32-bit được giữ ở phiên bản Python 2.7 để duy trì khả năng tương thích với các phần mềm, toolchain, công cụ phát triển cũ hơn
- Trong khi đó, MSYS64 mặc định sẽ được sử dụng gói Python 3.x mới hơn trong kho 64-bit
- Kết quả:
- Khi bạn build và chạy trên MSYS64, sẽ bị xung đôi phiên bản Python làm cho không build được do code SDK được viết với phiên bản cũ hơn (version 2.7).
- Còn khi dùng MSYS32 thì mặc định sẽ là Python 2.7, phiên bản mà các script build ban đầu của ESP8266-RTOS-SDK (như
esptool.pycũ) yêu cầu và phiên bản sẽ không thể update lên được. 👉 Do đó, bạn bắt buộc phải dùng MSYS32 vì Toolchain là 32-bit.
- Lệnh cài đặt Repo Framework và Toolchain cho ESP8266-RTOS-SDK
git clone --recurisive + [link repo]
# `--recursive``: Dùng để tải các submodule bên trong các repo đó-
Link cài đặt esp-open-rtos: https://github.com/SuperHouse/esp-open-rtos
-
Link cài đặt esp-open-sdk: https://github.com/pfalcon/esp-open-sdk