rust+docker+esp32开发初探

390 阅读2分钟

我用的esp32s3,其它s和c系列应该也适用。

  1. 为什么用docker呢?因为我用的是windows,遇到的环境实在是比较多。
  2. 为什么用rust呢?因为rust有包管理,加上想学rust
  3. 为什么用esp32呢?国产,对rust的支持比较好,usb就可以下载固件。

编译一个简单的hello world

准备docker

选你对应型号的image,别选错了!espressif/idf-rust Tags | Docker Hub,我的就是esp32s3_latest,git pull 就完事了。

运行容器

docker run  -e USER=$USER   -it espressif/idf-rust:esp32s3_latest /bin/bash

千万不要忘记-e USER=$USER,不然无法创建项目。 -it/bin/bash 都是非常常用的命令,就不多说了。

安装项目创建工具

cargo install cargo-generate

创建项目

 esp-idf-template 和 esp-template 都是创建项目的,但是我用esp-idf-template寄了,用esp-template可以,千万千万注意,创建项目时不要选错你的芯片型号!

cargo generate esp-rs/esp-template

编译

cargo build

烧录

docker是不能直接烧录固件的,但是,可以通过web-flush的方式,非常非常的简单,而且docker中自带了这个工具。 观察你的target,比如我的就是如下:

web-flash --chip esp32s3 target/xtensa-esp32s3-none-elf/debug/我的项目名

千万千万注意,web-flash时不要选错你的芯片型号! 按下reset的时候,应该能看到很多的信息。

  1. Introduction - Embedded Rust on Espressif (esp-rs.org) 这个教程是给esp32cx准备的,直接用esp32s3会出现很多问题,我人都麻了。
  2. usb有时候不能识别,只有一个串口,这个时候我把usb反过来插就行了...

参考

  1. Introduction - Embedded Rust on Espressif (esp-rs.org)
  2. 开发方式总览 - The Rust on ESP Book 简体中文版 (narukara.github.io)