TinyGo - Trình biên dịch Go nhỏ gọn dựa trên LLVM
(github.com/tinygo-org)- Có thể sử dụng trên vi điều khiển, WebAssembly (WASM/WASI) và các công cụ CLI
- Hỗ trợ phần lớn các gói thư viện chuẩn và có thể biên dịch mã Go mà không cần chỉnh sửa
- Sử dụng LLVM ở bên trong để tạo ra mã nhỏ gọn và hiệu quả
- Hỗ trợ CGo rất tốt
4 bình luận
Khi thử dùng TinyGo trên các bo Arduino Nano 33 (dựa trên nrf52 hoặc Nano 33 IoT), các tính năng cơ bản hoạt động khá tốt (dù có vấn đề là BLE bonding không chạy...).
Theo tôi thì đúng là vẫn khó dùng cho mục đích thương mại, nhưng dù vậy các channel của Go vẫn chạy được tốt hơn tôi nghĩ, nên nếu làm gì đó cho vui thì cũng khá ổn.
Nếu là firmware dạo gần đây thì có vẻ Zephyr RTOS (C/C++) khá ổn: trước hết nó được Linux Foundation hỗ trợ, đang được dùng nghiêm túc như RTOS chính của Nordic Semi, và điểm mạnh là hỗ trợ nhiều giao thức cùng hệ sinh thái công cụ tốt.
Còn với Rust, tôi từng nghe nói là trong nhiều trường hợp phải dùng
no_stdnên không hề dễ, nhưng vì tôi chưa từng áp dụng thực tế nên bản thân tôi cũng thấy tò mò hahaCác MCU được hỗ trợ còn khá hạn chế, và việc hỗ trợ cho các dòng sản phẩm phổ biến như STM, NXP hay TI có vẻ vẫn chưa thật sự ổn.
Với Esp32 thì chưa dùng được Wi-Fi và Bluetooth, nên để nói là đã sẵn sàng cho production thì có lẽ vẫn còn hơi thiếu.
Cá nhân tôi thì trong các dự án áp dụng ngôn ngữ hiện đại cho MCU như thế này, thứ tôi kỳ vọng nhất là Rust trong embedded.
Xin chào, tôi thấy phần bạn vừa nhắc đến khá thú vị nên muốn hỏi.
Trước đây tôi từng có kinh nghiệm học và viết firmware bằng C (STM, TI), nhưng vì không hợp nên đã bỏ cuộc. Sau rất nhiều thời gian, hiện tại tôi muốn quay lại học lĩnh vực này theo hướng hiện đại hơn một chút (?).
Trong mảng firmware, liệu Rust hiện vẫn gần với xu hướng hơn chứ?
Việc áp dụng Rust trong firmware thì hiện vẫn chưa thể khẳng định là đã thực sự sẵn sàng cho production~~~. Nhưng phạm vi hỗ trợ của các thiết bị tương thích đang được mở rộng rất nhanh..
Một tin thú vị là gần đây hình như đã có một cuộc họp mang tính chuẩn bị trước để đưa Rust vào danh sách trong tiêu chuẩn AutoSAR..
Phía firmware, do môi trường vận hành khá đặc thù, nên nếu phát sinh lỗi liên quan đến unmanaged memory thì sẽ là đòn chí mạng..
Ở phía firmware MCU thì
software emulation in embedded,
perfect unit testing without boards
là những chủ đề được trình bày khá nhiều trong các seminar..
Còn nếu nói đến advanced topic thì chắc là kiểu như onnx in mcu chăng ??