Skip to content

Commit bc951fa

Browse files
committed
Add a post about how to use idf-rust the docker image
1 parent 6c313ee commit bc951fa

File tree

4 files changed

+159
-50
lines changed

4 files changed

+159
-50
lines changed

_org/2024-11-11-rust-on-esp-series_1.org

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ sync_wexin: 1
2323
如果你熟悉docker的使用,有一个更加简便的方法就是使用docker镜像[[https://hub.docker.com/r/espressif/idf-rust/tags][idf-rust]],这个镜像已经包含一个安装好了的Rust开发环境。下面是安装Rust on ESP的详细过程。
2424

2525
1. 安装Rust on ESP开发环境
26+
2627
开发环境基于通用的Rust的开发环境,第一步和安装普通的Rust开发环境一样。如果是Linux环境,可以在命令行中运行[[https://rustup.rs/][rustup]]网站的安装命令。这个命令会自动下载Rust开发环境并安装。
28+
2729
#+begin_src shell
2830
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
2931
#+end_src
@@ -45,9 +47,10 @@ sync_wexin: 1
4547

4648
- GCC工具链用于链接过程,并负责生成二进制文件
4749

48-
安装过程可能需要花不少时间,一方面因为需要下载不少软件组件,另外还受到下载速度影响。如果网速不稳,经常遇到下载软件包失败的问题,可能需要通过代理或镜像来解决。网络问题是当前安装过程中的最大麻烦,其他过程还比较简单。
50+
安装过程可能需要花不少时间,一方面因为需要下载不少软件组件,另外还受到下载速度影响。如果网速不稳,经常遇到下载软件包失败的问题,可能需要通过代理或镜像来解决。网络问题是当前安装过程中的最大麻烦,其他过程还比较简单。
4951

5052
2. 安装系统库的依赖
53+
5154
成功完成上面的步骤,我们已经安装好了开发环境。但要使用Rust系统库std,我们还要安装std依赖的组件。面向ESP的系统库std有两个依赖,ESP-IDF开发框架和ldproxy库。
5255

5356
先安装ESP-IDF开发框架,第一步安装ESP-IDF依赖的第三方工具。
@@ -66,28 +69,28 @@ sync_wexin: 1
6669
sudo pacman -S --needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
6770
#+end_src
6871

69-
下面安装ESP-IDF框架本身,先下载ESP-IDF的源代码。当前的稳定版本是5.3,所以这里选择代码分支release/v5.3,并更新所有子模块。
70-
#+begin_src shell
71-
mkdir -p ~/esp
72-
cd ~/esp
73-
git clone --recursive https://github.com/espressif/esp-idf.git
74-
git checkout release/v5.3
75-
git submodule update --init --recursive
76-
#+end_src
72+
下面安装ESP-IDF框架本身,先下载ESP-IDF的源代码。当前的稳定版本是5.3,所以这里选择代码分支release/v5.3,并更新所有子模块。
73+
#+begin_src shell
74+
mkdir -p ~/esp
75+
cd ~/esp
76+
git clone --recursive https://github.com/espressif/esp-idf.git
77+
git checkout release/v5.3
78+
git submodule update --init --recursive
79+
#+end_src
7780

78-
下载好代码后开始ESP-IDF安装过程,进入esp-idf目录,执行下面命令。第二条命令用于将下载源导向乐鑫科技为国内网络提供的资源,这样下载速度会更快。
79-
#+begin_src shell
80-
cd ~/esp/esp-idf/
81-
export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
82-
./install.sh esp32,esp32s2,esp32s3
83-
#+end_src
81+
下载好代码后开始ESP-IDF安装过程,进入esp-idf目录,执行下面命令。第二条命令用于将下载源导向乐鑫科技为国内网络提供的资源,这样下载速度会更快。
82+
#+begin_src shell
83+
cd ~/esp/esp-idf/
84+
export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
85+
./install.sh esp32,esp32s2,esp32s3
86+
#+end_src
8487

85-
安装好ESP-IDF框架后,再安装ldproxy库,这个比较简单。
86-
#+begin_src shell
87-
cargo install ldproxy
88-
#+end_src
88+
安装好ESP-IDF框架后,再安装ldproxy库,这个比较简单。
89+
#+begin_src shell
90+
cargo install ldproxy
91+
#+end_src
8992

90-
到这里就完成了系统库std依赖的安装,系统库已经包含在espup安装的组件内了,所以系统库本身已经安装好了。
93+
到这里就完成了系统库std依赖的安装,系统库已经包含在espup安装的组件内了,所以系统库本身已经安装好了。
9194

9295
** 开发环境测试
9396
我们创建Rust on ESP项目需要用到乐鑫提供的一个工具cargo-generate。先安装cargo-generate工具。
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#+OPTIONS: ^:nil
2+
#+BEGIN_EXPORT html
3+
---
4+
layout: default
5+
title: 使用Rust语言为ESP编程系列一 -- 准备开发环境(续)
6+
tags: [Rust on ESP, Rust, ESP32]
7+
nav_order: {{ page.date }}
8+
sync_wexin: 1
9+
---
10+
#+END_EXPORT
11+
12+
* 使用Rust语言为ESP编程系列一 -- 准备开发环境(续)
13+
14+
** 前言
15+
前一篇文章[[https://paul356.github.io/2024/11/11/rust-on-esp-series_1.html][使用Rust语言为ESP编程系列一 -- 准备开发环境]]介绍了如何逐个组件安装Rust on ESP环境的方法,过程比较复杂。其实还有一种更加简便的方法,那就是使用乐鑫制作好的docker镜像。这一篇续就是介绍如何通过docker镜像来获得开发环境。
16+
17+
** 安装过程
18+
使用docker需要先安装docker-ce,安装步骤大家可以自行搜索。另外docker-ce默认从docker.com下载镜像。如果出现下载速度的问题,可以修改成国内的docker仓库,具体步骤可以搜索网上教程。
19+
20+
1. 获取[[https://hub.docker.com/r/espressif/idf-rust/tags][idf-rust]]镜像。
21+
22+
使用docker pull命令就可以下载idf-rust镜像。这个镜像有不同的tag分别表示针对不同的芯片和环境版本的镜像,我们使用了all_lastest这个tag,可以支持全系列芯片。
23+
#+begin_src shell
24+
docker pull espressif/idf-rust:all_latest
25+
docker images
26+
#+end_src
27+
最后使用 ~docker images~ 查看下载的镜像信息。
28+
29+
2. 创建idf-rust容器实例。
30+
31+
使用 ~docker run~ 命令创建容器实例。将 ~<code_path>~ 替换成实际的代码目录。
32+
#+begin_src shell
33+
docker run -itd -v <code_path>:/code espressif/idf-rust:all_latest bash
34+
docker ps
35+
#+end_src
36+
使用 ~docker ps~ 查看创建的实例ID和名称。下面的命令需要用到实例ID或名称。
37+
38+
上一条命令创建了容器实例,但创建的容器处于后台运行的状态。需要使用容器时,需要通过下列命令。
39+
#+begin_src shell
40+
docker exec -it <实例ID或名称> bash
41+
#+end_src
42+
43+
环境安装好了,下面可以进去代码目录,执行 ~cargo build~ 命令编译Rust代码。需要注意的是在上一篇文章中,为了使用已安装好的ESP-IDF环境我们需要在Cargo.toml中增加了配置段 ~[package.metadata.esp-idf-sys]~ ,在idf-rust镜像中是不需要的。
44+
45+
** 总结
46+
使用docker镜像使得Rust on ESP安装过程变得非常方便,所以花一点时间学习如何docker使用也是非常值得的。现在刀磨好了,我们下面就可以正式砍材了(真正开始探索Rust on ESP)。
47+

_posts/2024-11-11-rust-on-esp-series_1.md

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ sync_wexin: 1
2626

2727
如果你熟悉docker的使用,有一个更加简便的方法就是使用docker镜像[idf-rust](https://hub.docker.com/r/espressif/idf-rust/tags),这个镜像已经包含一个安装好了的Rust开发环境。下面是安装Rust on ESP的详细过程。
2828

29-
1. 安装Rust on ESP开发环境 开发环境基于通用的Rust的开发环境,第一步和安装普通的Rust开发环境一样。如果是Linux环境,可以在命令行中运行[rustup](https://rustup.rs/)网站的安装命令。这个命令会自动下载Rust开发环境并安装。
29+
1. 安装Rust on ESP开发环境
30+
31+
开发环境基于通用的Rust的开发环境,第一步和安装普通的Rust开发环境一样。如果是Linux环境,可以在命令行中运行[rustup](https://rustup.rs/)网站的安装命令。这个命令会自动下载Rust开发环境并安装。
3032

3133
```shell
3234
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
@@ -50,10 +52,12 @@ sync_wexin: 1
5052
- 支持Xtensa核心的LLVM
5153

5254
- GCC工具链用于链接过程,并负责生成二进制文件
53-
54-
安装过程可能需要花不少时间,一方面因为需要下载不少软件组件,另外还受到下载速度影响。如果网速不稳,经常遇到下载软件包失败的问题,可能需要通过代理或镜像来解决。网络问题是当前安装过程中的最大麻烦,其他过程还比较简单。
55+
56+
安装过程可能需要花不少时间,一方面因为需要下载不少软件组件,另外还受到下载速度影响。如果网速不稳,经常遇到下载软件包失败的问题,可能需要通过代理或镜像来解决。网络问题是当前安装过程中的最大麻烦,其他过程还比较简单。
5557

56-
2. 安装系统库的依赖 成功完成上面的步骤,我们已经安装好了开发环境。但要使用Rust系统库std,我们还要安装std依赖的组件。面向ESP的系统库std有两个依赖,ESP-IDF开发框架和ldproxy库。
58+
2. 安装系统库的依赖
59+
60+
成功完成上面的步骤,我们已经安装好了开发环境。但要使用Rust系统库std,我们还要安装std依赖的组件。面向ESP的系统库std有两个依赖,ESP-IDF开发框架和ldproxy库。
5761

5862
先安装ESP-IDF开发框架,第一步安装ESP-IDF依赖的第三方工具。
5963

@@ -74,32 +78,32 @@ sync_wexin: 1
7478
```shell
7579
sudo pacman -S --needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
7680
```
77-
78-
下面安装ESP-IDF框架本身,先下载ESP-IDF的源代码。当前的稳定版本是5.3,所以这里选择代码分支release/v5.3,并更新所有子模块。
79-
80-
```shell
81-
mkdir -p ~/esp
82-
cd ~/esp
83-
git clone --recursive https://github.com/espressif/esp-idf.git
84-
git checkout release/v5.3
85-
git submodule update --init --recursive
86-
```
87-
88-
下载好代码后开始ESP-IDF安装过程,进入esp-idf目录,执行下面命令。第二条命令用于将下载源导向乐鑫科技为国内网络提供的资源,这样下载速度会更快。
89-
90-
```shell
91-
cd ~/esp/esp-idf/
92-
export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
93-
./install.sh esp32,esp32s2,esp32s3
94-
```
95-
96-
安装好ESP-IDF框架后,再安装ldproxy库,这个比较简单。
97-
98-
```shell
99-
cargo install ldproxy
100-
```
101-
102-
到这里就完成了系统库std依赖的安装,系统库已经包含在espup安装的组件内了,所以系统库本身已经安装好了。
81+
82+
下面安装ESP-IDF框架本身,先下载ESP-IDF的源代码。当前的稳定版本是5.3,所以这里选择代码分支release/v5.3,并更新所有子模块。
83+
84+
```shell
85+
mkdir -p ~/esp
86+
cd ~/esp
87+
git clone --recursive https://github.com/espressif/esp-idf.git
88+
git checkout release/v5.3
89+
git submodule update --init --recursive
90+
```
91+
92+
下载好代码后开始ESP-IDF安装过程,进入esp-idf目录,执行下面命令。第二条命令用于将下载源导向乐鑫科技为国内网络提供的资源,这样下载速度会更快。
93+
94+
```shell
95+
cd ~/esp/esp-idf/
96+
export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
97+
./install.sh esp32,esp32s2,esp32s3
98+
```
99+
100+
安装好ESP-IDF框架后,再安装ldproxy库,这个比较简单。
101+
102+
```shell
103+
cargo install ldproxy
104+
```
105+
106+
到这里就完成了系统库std依赖的安装,系统库已经包含在espup安装的组件内了,所以系统库本身已经安装好了。
103107

104108

105109
## 开发环境测试
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
layout: default
3+
title: 使用Rust语言为ESP编程系列一 -- 准备开发环境(续)
4+
tags: [Rust on ESP, Rust, ESP32]
5+
nav_order: {{ page.date }}
6+
sync_wexin: 1
7+
---
8+
9+
10+
# 使用Rust语言为ESP编程系列一 &#x2013; 准备开发环境(续)
11+
12+
13+
## 前言
14+
15+
前一篇文章[使用Rust语言为ESP编程系列一 &#x2013; 准备开发环境](https://paul356.github.io/2024/11/11/rust-on-esp-series_1.html)介绍了如何逐个组件安装Rust on ESP环境的方法,过程比较复杂。其实还有一种更加简便的方法,那就是使用乐鑫制作好的docker镜像。这一篇续就是介绍如何通过docker镜像来获得开发环境。
16+
17+
18+
## 安装过程
19+
20+
使用docker需要先安装docker-ce,安装步骤大家可以自行搜索。另外docker-ce默认从docker.com下载镜像。如果出现下载速度的问题,可以修改成国内的docker仓库,具体步骤可以搜索网上教程。
21+
22+
1. 获取[idf-rust](https://hub.docker.com/r/espressif/idf-rust/tags)镜像。
23+
24+
使用docker pull命令就可以下载idf-rust镜像。这个镜像有不同的tag分别表示针对不同的芯片和环境版本的镜像,我们使用了all\_lastest这个tag,可以支持全系列芯片。
25+
26+
```shell
27+
docker pull espressif/idf-rust:all_latest
28+
docker images
29+
```
30+
31+
最后使用 `docker images` 查看下载的镜像信息。
32+
33+
2. 创建idf-rust容器实例。
34+
35+
使用 `docker run` 命令创建容器实例。将 `<code_path>` 替换成实际的代码目录。
36+
37+
```shell
38+
docker run -itd -v <code_path>:/code espressif/idf-rust:all_latest bash
39+
docker ps
40+
```
41+
42+
使用 `docker ps` 查看创建的实例ID和名称。下面的命令需要用到实例ID或名称。
43+
44+
上一条命令创建了容器实例,但创建的容器处于后台运行的状态。需要使用容器时,需要通过下列命令。
45+
46+
```shell
47+
docker exec -it <实例ID或名称> bash
48+
```
49+
50+
环境安装好了,下面可以进去代码目录,执行 `cargo build` 命令编译Rust代码。需要注意的是在上一篇文章中,为了使用已安装好的ESP-IDF环境我们需要在Cargo.toml中增加了配置段 `[package.metadata.esp-idf-sys]` ,在idf-rust镜像中是不需要的。
51+
52+
53+
## 总结
54+
55+
使用docker镜像使得Rust on ESP安装过程变得非常方便,所以花一点时间学习如何docker使用也是非常值得的。现在刀磨好了,我们下面就可以正式砍材了(真正开始探索Rust on ESP)。

0 commit comments

Comments
 (0)