Skip to content

Commit 6c0bc24

Browse files
authored
Merge pull request #109 from SummerGGift/723
【添加】说明文档
2 parents eada203 + 712f97a commit 6c0bc24

28 files changed

+211
-0
lines changed
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
# MicroPython IDE 用户指南
2+
3+
## MicroPython 固件介绍
4+
5+
MicroPython 固件指的是可以运行在特定板卡上,并且已经对该板卡做了 MicroPython 适配的固件程序。在这里适配的意思是,对 MicroPython 进行配置修改后,开发者可以通过编写 Python 程序来控制板卡上的硬件资源。
6+
7+
MicroPython 固件可以从 RT-Thread 官方直接获取,目前功能支持比较完备的是 IoT Board 潘多拉开发板,固件下载地址如下:
8+
9+
```
10+
https://github.com/RT-Thread/IoT_Board/tree/master/examples/31_micropython
11+
```
12+
13+
如果想要 DIY 属于自己的专属固件,也非常简单。只需要在 RT-Thread 工程中开启 MicroPython 软件包即可,详细的制作方式可以通过阅读 [《MicroPython 固件开发指南》]() 深入了解。
14+
15+
通过以上两种方式之一获取固件,然后将 MicroPython 固件烧录到板卡之后,就可以使用 RT-Thread 推出的 MicroPython 开发环境来进行应用开发了。
16+
17+
## MicroPython 开发环境使用介绍
18+
19+
RT-Thread 为广大开发者提供了[ **VSCode 最好用的 MicroPython 插件**](https://marketplace.visualstudio.com/items?itemName=RT-Thread.rt-thread-micropython) 来帮助大家使用 MicroPython 来开发应用程序。该插件为 MicroPython 开发提供了功能强大的开发环境,主要特性如下:
20+
21+
- 支持串口、USB、或网络的方式连接开发板
22+
- 支持通过网络连接远程调试
23+
- 支持基于 MicroPython 的代码智能补全
24+
- 支持 MicroPython REPL 交互环境
25+
- 提供丰富的代码示例
26+
- 支持自动同步工程代码
27+
- 支持在设备上运行示例代码
28+
- 支持运行代码片段功能
29+
- 支持多款 MicroPython 开发板
30+
31+
### 准备工作
32+
33+
本插件依赖 Microsoft Python 插件,并且使用 Python 脚本,因此需要做如下准备:
34+
35+
1. 安装 Microsoft Python 插件
36+
37+
2. 按照 Python 插件的提示在 PC 上安装 Python3 并加入到系统环境变量中
38+
39+
![Python plug](assets/install_python_plug.png)
40+
41+
如果在 PC 上已经安装过上述插件和程序,可以跳过此准备步骤。
42+
43+
### 创建一个 MicroPython 工程
44+
45+
![open_dir](assets/open_dir.gif)
46+
47+
### 连接开发板
48+
49+
可以通过多种方式与开发板建立连接,下图展示常用的串口连接方式。
50+
51+
![uart_connect](assets/uart_connect.gif)
52+
53+
### 运行示例程序
54+
55+
和开发板建立连接后,可以直接运行示例代码,并观察代码在开发板上的运行效果,如下图所示:
56+
57+
![run_example](assets/run_example.gif)
58+
59+
### 更多功能介绍
60+
61+
- 基于 MicroPython 的代码智能补全
62+
63+
![auto_complete](assets/auto_complete.gif)
64+
65+
- 支持运行代码片段
66+
67+
![run_code_snippet](assets/run_code_snippet.gif)
68+
69+
还有更多贴心实用的功能等你来探索。
70+
71+
### 注意事项
72+
73+
- 需要选择 PowerShell 作为默认终端
74+
- 不要删除工程目录下的 `.mpyproject.json` 文件,该文件是 MicroPython 工程的配置文件
75+
76+
## MicroPython 工程详解
77+
78+
在 MicroPython 开发环境中,我们使用工程的形式来组织 MicroPython 源文件,接下来将会详细介绍 MicroPython 工程相关的概念。
79+
80+
### 工程结构介绍
81+
82+
**创建一个 MicroPython 工程** 小节中,我们通过点击创建工程按钮,选择了一个文件夹作为 MicroPython 工程的根目录。此时 MicroPython 插件会默认在该目录下创建工程相关目录,并添加 `main.py` 文件,如下图所示:
83+
84+
![prj_struct](assets/1564458498973.png)
85+
86+
- `scripts` 文件夹用于存放 MicroPython 脚本文件
87+
- `.mpyproject.json` 是自动生成的工程的配置文件
88+
89+
### 向工程中添加示例代码
90+
91+
可以在示例程序中选择所需的文件添加到工程中,如下图所示:
92+
93+
![add_to_prj](assets/1564459093450.png)
94+
95+
此时可以在工程中看到已经添加到工程中的 hello_python.py 文件:
96+
97+
![already_add](assets/1564459162459.png)
98+
99+
如果你直接在示例代码目录点击运行代码,则会先将该示例代码文件加入到工程中,然后在板卡上运行该文件。
100+
101+
### 工程同步方式介绍
102+
103+
在 MicroPython 插件中,脚本代码文件以工程的方式组织,在同步代码时也是以工程为单位进行同步。也就是说当点击 **运行** 按钮时,整个工程都会被同步到板卡上。因为每次同步只会同步被修改了的文件,所以可以保证较快的同步速度,只有在板卡上第一次运行代码时需要较长时间,因为此时要同步全部的代码文件,同步过程如下图 1、2 步所示。
104+
105+
在工程中,我们可以使用 import 关键字导入其他 Python 模块中的函数,如下图第 3、4 步所示。通过这种方式导入其他模块,进而运行整个 MicroPython 工程。
106+
107+
![run_micropython_prj](assets/1564469643183.png)
108+
109+
### 开机自动运行 main.py
110+
main.py 文件的存储位置为 `/scripts/main.py`,该文件的特殊之处在于,它会在系统启动过程中被自动执行。也就是说如果你想让你的工程被开机自动启动,那么 main.py 文件就是整个工程的入口。
111+
112+
需要注意的是在 main.py 文件执行完毕前,程序是不会进入 REPL 交互环境的。也就是说,如果 mian.py 中运行了一个 `while True` 的死循环程序,此时该代码是不会自动退出的。此时如果想要退出 main.py 程序,需要在串口中断中按下 `CTRL + C` ,如下图所示:
113+
114+
![run_main](assets/1564471861527.png)
115+
116+
如果 main.py 是一个死循环程序,重新进行文件同步前,记得先使用 `CTRL + C` 终止该程序的运行。
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
## MicroPython 固件开发指南
2+
3+
如果手上没有官方支持固件的开发板,就需要自己来动手制作 MicroPython 固件了。由于 RT-Thread 官方提供了 MicroPython 软件包,并且 MicroPython 底层和硬件绑定时对接了 RT-Thread 驱动框架,所以我们可以很方便地在运行了 RT-Thread 的板卡上将 MicroPython 跑起来。
4+
5+
接下来我们以 `rt-thread\bsp\stm32\stm32f407-atk-explorer` 上的 MDK 工程为例,讲解如何在 BSP 的基础上制作 MicroPython 固件。
6+
7+
### 获取 MicroPython 软件包
8+
9+
先使用 `pkgs --upgrade` 命令更新软件包列表,然后通过 env 工具选中 MicroPython 软件包,最后使用 `pkgs -update` 命令将软件包拉取到本地。
10+
11+
![1564476611502](assets/1564476611502.png)
12+
13+
### 增大 main 线程栈
14+
15+
为了能后续在 main 线程中启动 MicroPython 运行时环境,需要增大 main 线程的栈大小,这里我们将栈大小增加到 8k。
16+
17+
![1564476903287](assets/1564476903287.png)
18+
19+
### 配置 MicroPython 运行环境堆大小
20+
21+
接下来根据板卡内存实际剩余情况来给 MicroPython 运行环境分配内存,这里填写的数值越大,就能运行更大代码量的 Python 程序。但是如果这里填写的数值超过了实际可分配内存,就可能会出现无法分配内存而报错。因此在配置此项目之前,需要对系统 RAM 资源的分配情况有一定了解。
22+
23+
#### 查看系统剩余内存
24+
25+
重新生成工程,编译下载后通过 `msh``free` 命令来查看内存使用情况。
26+
27+
![1564628226157](assets/1564628226157.png)
28+
29+
#### 配置系统
30+
31+
通过上一步查询的内存分配情况,可以看到系统 RAM 资源较为剩余充足。因此我们决定分配 70k 内存给 MicroPython 运行时环境,配置如下图所示:
32+
33+
![1564476923786](assets/1564476923786.png)
34+
35+
### 在根目录挂载文件系统
36+
37+
最后要确保系统中 `/` 目录挂载了文件系统。有了文件系统,后续才能使用 [**MicroPython 开发环境**](https://marketplace.visualstudio.com/items?itemName=RT-Thread.rt-thread-micropython) 将 Python 代码文件同步到板卡中来运行,本次示例中将使用 elm-fat 文件系统,需要对系统进行如下配置:
38+
39+
![1564480676371](assets/1564480676371.png)
40+
41+
配置完成后,记得要使用 `scons --target=mkd5` 重新生成工程,使配置在工程中生效。
42+
43+
### 在 main 线程中启动 MicroPython
44+
45+
最后要在 main 线程中启动 MicroPython,需要完成的功能如下:
46+
47+
1. 挂载文件系统到 `/` 目录
48+
2. 启动 MicroPython
49+
50+
上述功能可以通过修改 main 函数来实现,修改 main 代码如下所示:
51+
52+
```c
53+
#include <rtthread.h>
54+
#include <rtdevice.h>
55+
#include <board.h>
56+
#include <dfs_fs.h>
57+
#include <rtdevice.h>
58+
59+
#define FS_PARTITION_NAME "W25Q128"
60+
61+
/* defined the LED0 pin: PF9 */
62+
#define LED0_PIN GET_PIN(F, 9)
63+
64+
int main(void)
65+
{
66+
/* 挂载 elm 文件系统到 / 目录 */
67+
if (dfs_mount(FS_PARTITION_NAME, "/", "elm", 0, 0) == 0)
68+
{
69+
rt_kprintf("Filesystem initialized!");
70+
}
71+
else
72+
{
73+
rt_kprintf("Filesystem initialization failed!");
74+
}
75+
76+
rt_thread_mdelay(100);
77+
78+
/* 运行 MicroPython 启动函数 */
79+
extern void mpy_main(const char *filename);
80+
mpy_main(NULL);
81+
82+
rt_kprintf("You can enter repl mode by typing python commands.");
83+
84+
/* 如果想要在 REPL 环境按下 CTRL+D 重启系统可以加上下面这一句 */
85+
/* rt_hw_cpu_reset(); */
86+
}
87+
```
88+
89+
重新编译工程下载到板卡中,就会在 main 线程中自动进入 MicroPython 的交互环境 REPL。此时如果先前没有在存储器上创建相应的文件系统,可能会导致文件系统挂载失败。此时可以使用如下两种方法在存储设备上创建文件系统:
90+
91+
- 按下 `CTRL + D` 进入 msh 使用 `mkfs -t elm W25Q128` 命令创建文件系统
92+
- 在 REPL 交互环境中输入 `import os`,`os.mkfs("elm", "W25Q128")` 命令来创建文件系统
93+
94+
成功创建文件系统后,就可以使用 [ **MicroPython 开发环境**](https://marketplace.visualstudio.com/items?itemName=RT-Thread.rt-thread-micropython) 来进行应用开发了。
95+
8.63 KB
Loading
35.1 KB
Loading
53.2 KB
Loading
50.6 KB
Loading
99 KB
Loading
85.2 KB
Loading
38.2 KB
Loading
44.1 KB
Loading

0 commit comments

Comments
 (0)