我用的esp32s3,其它s和c系列应该也适用。
- 为什么用docker呢?因为我用的是windows,遇到的环境实在是比较多。
- 为什么用rust呢?因为rust有包管理,加上想学rust
- 为什么用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的时候,应该能看到很多的信息。
坑
- Introduction - Embedded Rust on Espressif (esp-rs.org) 这个教程是给esp32cx准备的,直接用esp32s3会出现很多问题,我人都麻了。
- usb有时候不能识别,只有一个串口,这个时候我把usb反过来插就行了...