V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
geekard
V2EX  ›  Rust

个人笔记分享: Rust 语言、标准库解析、常用三方库解析,以及 Rust 嵌入式开发(ESP32)

  •  
  •   geekard · 19 天前 · 1317 次点击

    分享下我的 Rust 系列博客: https://blog.opsnull.com/rust

    1. Rust-个人参考手册:各种 Rust 文档、书籍的学习笔记。
    2. Rust 标准库解析:涵盖了 Rust 标准库的绝大部分,如 mem 、ptr 、collector 、io 等;
    3. 常用三方库解析:涵盖了 Rust 项目常用的三方库,如 serde 、thiserror 、anyhow 、tracing 、clap 、axum 、reqwest 等 18 个常用库解析;

    另外 blog 还包含 Rust 嵌入式( ESP32S3 处理器)系列文章: https://blog.opsnull.com/rust-embedded/

    1. 介绍了 esp-idf 和 esp-rs 工具链的安装和调试;
    2. 介绍使用 Rust 开发嵌入式 std 、no_std 应用的过程;
    3. 介绍了 Rust 驱动 LCD 、Touch 、Camera 、Audio 的内容(还在整理中)。

    Enjoy !

    9 条回复    2024-08-29 11:40:26 +08:00
    zeusho871
        1
    zeusho871  
       19 天前
    esp32 的 rust 是官方提供的嘛?久了没看既然出这个了 api 都支持还是 想整个 web 配网的
    geekard
        2
    geekard  
    OP
       19 天前   ❤️ 1
    @zeusho871 ESP32 处理器架构分两种类型:RISC-V 和 Xtensa ,其中 RISC-V target 是 Rust 官方工具链 Tier2 支持级别,也即 Rust 官方直接支持的。Xtensa 的 Rust 编译工具链是 Tier3 级别,目前是 Espressif 自己 fork 的一个项目 esp-rs/rust: https://github.com/esp-rs/rust

    其它 ESP32 官方 Rust 开发库,都在 https://github.com/esp-rs 开源。

    web 配网可以参考官方的这个 Rust example: https://github.com/esp-rs/esp-idf-svc/blob/master/examples/wifi.rs
    zeusho871
        3
    zeusho871  
       19 天前
    @geekard 感谢 我去瞅瞅看 感觉用 rust 写不错 之前用纯 c 干 太折腾了
    EvanLuo42
        4
    EvanLuo42  
       19 天前 via iPhone
    可以看看 embassy
    geekard
        5
    geekard  
    OP
       19 天前
    @EvanLuo42 嗯,ESP32 的 https://github.com/esp-rs/esp-hal/tree/main/esp-hal-embassy 为 esp-hal 提供了 embassy async Executor 实现,两者可以很好的协作。

    esp-hal 项目的 example 下有大量 embassy 例子,比如: https://github.com/esp-rs/esp-hal/blob/main/examples/src/bin/embassy_hello_world.rs
    ElGordo
        6
    ElGordo  
       19 天前
    整理得很用心,感谢分享!
    geekard
        7
    geekard  
    OP
       19 天前
    @zeusho871 嗯嗯,我 port 过一个 slint GUI printdemo 项目到 ESP32-S3-Box-3 开发版(附带用 Rust 手撸 了这个开发板使用的触摸屏驱动 https://github.com/opsnull/rust-slint-printdemo/blob/main/mcu-board-support/gt911.rs )整体交互效果还是比较流畅的: https://x.com/geekard_zj/status/1789599892987613295

    Repo: https://github.com/opsnull/rust-slint-printdemo/tree/main
    zeusho871
        8
    zeusho871  
       19 天前
    @geekard 这边在开发中 rust 和纯 c 的对比 有兼容性问题吗 我是准备用 rust 写个 wifi 时钟+lixie 灯
    geekard
        9
    geekard  
    OP
       18 天前
    @zeusho871 从个人的实践看,Rust 和 C 的互操作性,兼容性还是挺好的,而且是 Rust 语言和标准库直接支持的,例如:
    1. 使用 Rust 函数可以通过 extern "C" 修饰来生成符合 C ABI 规范的 lib ,从而可以被 C 代码直接调用;
    2. 反过来 C lib 中的函数,也可以通过 FFI 机制被 Rust 直接调用;

    对于 ESP32 来说,也是同时支持 Rust 和 C 混合开发的,具体可以参考我的 blog:
    1. Rust 集成 C Component: https://blog.opsnull.com/rust-embedded/esp-rs-std-app/#%E4%B8%BA-rust-std-%E5%BA%94%E7%94%A8%E6%B7%BB%E5%8A%A0%E7%BB%84%E4%BB%B6-component
    2. C 集成 Rust 模块: https://blog.opsnull.com/rust-embedded/esp-rs-std-cmake-app/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   944 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:36 · PVG 03:36 · LAX 12:36 · JFK 15:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.