Chia sẻ đam mê công nghệ
Phần mềm

ESP32-S31 chạy được Linux chuẩn, nhưng chưa nên dùng BSP mới cho sản phẩm thương mại

ESP32-S31 có MMU để chạy Linux chuẩn, còn BSP của Espressif vẫn ở Developer Preview. Khởi động được hệ điều hành chưa đồng nghĩa ngoại vi đã sẵn sàng cho thiết bị IoT.

Tóm tắt nhanh

  • ESP32-S31 có CPU RISC-V hai lõi tối đa 320 MHz và MMU hỗ trợ Sv32, tạo nền tảng phần cứng để chạy Linux chuẩn.
  • Linux BSP chính thức của Espressif chỉ hỗ trợ S31, đang ở Developer Preview và không được khuyến nghị cho sản phẩm thương mại.
  • Cây tích hợp chính thức dùng Buildroot 2025.02 cùng nhánh Linux 6.18; tính năng trên các bản dựng cộng đồng không đại diện cho BSP của hãng.
  • Với người làm IoT, đây là cơ hội thử Linux nhúng, chưa phải lý do chuyển một thiết bị đang vận hành ổn định sang hệ điều hành khác.

Espressif đã có Linux BSP dạng Developer Preview cho ESP32-S31, đưa Linux chuẩn lên chip RISC-V hai lõi tối đa 320 MHz nhưng đồng thời cảnh báo không dùng bản thử nghiệm này cho triển khai sản xuất. Phạm vi hỗ trợ chỉ là S31, không phải toàn bộ dòng ESP32.

Điểm đáng chú ý nằm ở khoảng cách giữa hai việc: một con chip có thể khởi động Linux và một nền tảng phần mềm đủ tin cậy để đưa vào thiết bị bán ra. S31 đã có phần cứng phù hợp cho việc đầu tiên, còn chính sách bảo trì BSP hiện tại khiến việc thứ hai vẫn cần chờ.

MMU giúp S31 chạy Linux chuẩn, không biến nó thành máy tính để bàn

Mặt sau bo mạch ESP32-S31
Bo ESP32-S31 hướng tới phát triển thiết bị nhúng; khả năng chạy Linux không làm mất đi giới hạn tài nguyên của nền tảng. Ảnh: Espressif / XDA Developers.

MMU, bộ quản lý bộ nhớ, là khác biệt cần nhìn trước cả xung nhịp CPU. Theo datasheet tiền phát hành của Espressif, ESP32-S31 có cơ chế dịch địa chỉ Sv32 với bảng trang hai cấp; CPU hiệu năng cao gồm hai lõi RISC-V chạy tối đa 320 MHz. Cơ chế này cho phép Linux quản lý bộ nhớ ảo, thay vì buộc nhà phát triển đi theo hướng Linux không dùng MMU.

Hình giới thiệu chip ESP32-S31 và các chuẩn kết nối
Các kết nối được quảng bá trên silicon không đồng nghĩa tất cả đã có driver trong Linux BSP. Ảnh: Espressif / Hackaday.

Vì vậy, không thể suy từ việc S31 chạy được Linux sang việc những bo ESP32 khác cũng làm tương tự. Tên họ chip giống nhau không thay thế được yêu cầu về kiến trúc bộ xử lý, bộ nhớ và phần mềm hỗ trợ từng phần cứng.

Bộ nhớ cũng đặt ra giới hạn rất cụ thể. Espressif liệt kê 512 KB SRAM cho hệ thống hiệu năng cao và 32 KB SRAM cho hệ thống công suất thấp; PSRAM phụ thuộc cấu hình chip. Đó là lý do nên nhìn S31 như một nền tảng Linux nhúng cần tối ưu tài nguyên, chứ không phải lựa chọn thay Raspberry Pi để chạy môi trường desktop.

BSP chính thức mới là bản thử nghiệm, chưa có cam kết ổn định

Giao diện kho mã ESP32-S31 Linux BSP với cảnh báo thử nghiệm
Cảnh báo Developer Preview ngay trong kho BSP là giới hạn cần tính đến trước khi chọn nền tảng cho sản phẩm. Ảnh: CNX Software / Espressif.

Khả năng khởi động chỉ là đầu việc đầu tiên của một BSP, tức bộ phần mềm hỗ trợ phần cứng. Để ứng dụng dùng được lâu dài, nhà phát triển còn phải tính tới driver, tương thích qua các lần cập nhật và cách xử lý lỗi sau khi thiết bị đã tới tay người dùng.

Espressif ghi rõ nhánh integration/v1.0-esp32s31 đang ở Developer Preview, không có lịch phát hành cố định và không đảm bảo tương thích API/ABI. Thay đổi làm hỏng tương thích có thể xuất hiện mà không báo trước, còn sửa lỗi được thực hiện theo khả năng của đội phát triển. Hãng khuyến nghị dùng để đánh giá phần cứng, làm nguyên mẫu và gửi phản hồi, không dùng cho sản phẩm thương mại hay hệ thống quan trọng.

Cây tích hợp chính thức dùng Buildroot 2025.02 với nhánh kernel integration/v6.18-esp32s31, đi cùng OpenSBI và U-Boot. Kho BSP chứa công cụ đóng gói ảnh flash, còn cấu hình xây dựng hệ thống nằm ở cây Buildroot bên ngoài. Đây không phải một bộ cài Linux desktop chỉ cần chép vào thẻ nhớ.

Quy trình được Espressif mô tả có thể đi qua các thành phần khởi động để tới shell quyền root. Với người muốn học quá trình khởi động Linux trên RISC-V, đó là mốc hữu ích; với người chuẩn bị làm sản phẩm, nó chưa trả lời được câu hỏi mọi ngoại vi cần dùng đã có driver hay chưa.

Bản dựng cộng đồng phải được tách khỏi mức hỗ trợ của hãng

Terminal Linux 6.12 trên ESP32-S31 trong tư liệu trước đây
Ảnh terminal của một bản Linux trước đây trên S31 cho thấy cần kiểm tra đúng phiên bản và ngoại vi, thay vì chỉ nhìn việc đã vào được shell. Ảnh: CNX Software.

Một bản Linux cộng đồng hoạt động trên bo mạch cụ thể không chứng minh BSP chính thức đã có cùng tính năng. Số phiên bản kernel mới hơn cũng không tự đảm bảo khả năng dùng ngoại vi tốt hơn, bởi phần hỗ trợ chip và bo mạch có thể nằm ở những nhánh mã khác nhau.

Màn hình khởi động Linux trong thử nghiệm ESP32-S31
Tiến trình khởi động trong bản dựng cộng đồng minh họa khả năng chạy Linux, không thay thế kiểm thử BSP chính thức. Ảnh: Platima Tinkers.

Bản thử nghiệm được trình diễn trên ESP32-S31 có thể vào shell và sử dụng một số chức năng như Wi-Fi hay thiết bị USB trong cấu hình cộng đồng. Những hình ảnh terminal này cho thấy Linux thực sự có thể chạy trên phần cứng S31, nhưng không nên được dùng để cam kết rằng cài BSP của Espressif là có ngay cùng trải nghiệm.

Bo ESP32-S31-Korvo trong video thử nghiệm
Bo Korvo trong thử nghiệm cộng đồng nhắc rằng kết quả cần gắn với đúng thiết kế phần cứng được dùng. Ảnh: Platima Tinkers.

Cách đánh giá thực tế hơn là kiểm tra đúng bộ ba: bo mạch sẽ dùng, nhánh phần mềm sẽ cài và ngoại vi ứng dụng cần. Nếu khác một trong các yếu tố đó, người làm thiết bị vẫn cần thử lại thay vì dựa vào một màn khởi động thành công trên mạng.

Terminal của bản Linux cộng đồng trên ESP32-S31
Vào được shell là một mốc thử nghiệm, còn mức hỗ trợ ngoại vi phải kiểm tra riêng cho từng nhánh Linux. Ảnh: Platima Tinkers.

Người làm IoT nên thử trên bo riêng, chưa vội đổi nền tảng đang dùng

Bo ESP32-S31-Zero với cổng USB-C và đầu nối mở rộng
Bo S31-Zero là một thiết kế phần cứng cụ thể; khả năng dùng Linux vẫn phải được kiểm tra trên đúng bo và nhánh mã. Ảnh: Waveshare.

Giá trị trước mắt của Linux trên S31 là mở thêm một hướng thử nghiệm phần mềm nhúng, không phải lời khuyên thay toàn bộ firmware ESP32 hiện tại. Nếu ứng dụng đã đáp ứng yêu cầu bằng ESP-IDF, chuyển sang BSP preview sẽ thêm công việc tích hợp và rủi ro bảo trì mà chưa chắc đem lại lợi ích tương xứng.

ESP32-S31-Zero-N16RX-M có chân cắm
Bản N16RX-M có chân cắm sẵn thuận tiện cho lắp thử, nhưng không thay đổi trạng thái thử nghiệm của BSP. Ảnh: Waveshare.

Ngược lại, người cần khảo sát Linux trên RISC-V có thể dùng một bo thử nghiệm riêng để đo dung lượng bộ nhớ còn lại, kiểm tra driver và đánh giá ứng dụng của mình. Nên hoàn thành các việc đó trước khi chọn phần cứng cho sản phẩm, nhất là khi lỗi cập nhật có thể kéo theo việc sửa firmware của cả lô thiết bị.

Trên cửa hàng quốc tế Waveshare, ESP32-S31-Zero có giá niêm yết 8,99–12,99 USD tùy phiên bản và đang được đánh dấu hết hàng. Với người ở Việt Nam đặt mua từ cửa hàng này, giá niêm yết không nên được coi là toàn bộ chi phí đưa bo về tay. Thời gian tích hợp phần mềm cũng cần được tính vào kế hoạch thử nghiệm, thay vì chỉ nhìn giá bo.

Với dự án thương mại, mốc đáng chờ hơn một video chạy được Linux là bộ ngoại vi được xác nhận trên đúng bo và chính sách bảo trì đủ rõ. BSP hiện tại chưa đưa ra cam kết ổn định đó.

Nguồn tham khảo: Espressif Linux BSP; Espressif Buildroot External Tree; Datasheet ESP32-S31; Platima Tinkers; CNX Software; Hackaday; Waveshare.

Bài này thế nào?

Hoá đơn của bài này

Tek viết bài này bằng cà phê. Mời Tek một ly nha?

Theo dõi TekCafe: Facebook · YouTube

Bài viết mới nhất