中文 | English
本文档为基于RT-THREAD的乐鑫ESP32-C3的ESP32C3 BSP (板级支持包) 说明。
主要内容如下:
通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。
目前测试了两款开发板,运行都正常,由于两款开发板LED小灯引脚不同,请在menuconfig中选择自己手上的开发板。已测开发板外观如下图所示:
该LUATOS_ESP32C3开发板常用 板载资源 如下:
开发板更多详细信息请参考 ESP32-C3开发板介绍。
本 BSP 目前对外设的支持情况如下:
片上外设 | 支持情况 | 备注 |
---|---|---|
GPIO | 支持 | |
UART | 支持 | 使用LUATOS_ESP32C3开发板需要在UART0_TX和UART0_RX连接串口转USB芯片(如CP2102) |
I2C | 支持 | 硬件I2C会产生传输错误,推荐使用软件I2C,但使用软件I2C会占用一个硬件通用定时器 |
SPI | 支持 | 支持自定义配置 |
JTAG调试 | 支持 | ESP32C3采用USB方式和PC链接的开发板可以调试 |
WIFI | 部分支持 | 目前存在一些问题,例如不能在ISR中使用rt_mq_recive 等 |
BLE | 部分支持 | 目前存在一些问题,例如NimBLE 启动一段时间后运行错误 |
GDBStub | 支持 | 通过开启BSP_ENABLE_GDBSTUB 开关即可使用ESP-IDF所提供的GDB,其会在芯片出错后进入GDB模式 |
HWTIMER | 支持 |
注:
1、WIFI和BLE不能同时启用,在使用BLE驱动时注意在menuconfig
中关闭RT_USING_WIFI
和LWIP
开关。另外由于能力有限且缺乏调试设备,WIFI和BLE驱动运行都有问题,如果可以解决联系timwcx@qq.com。
2、BLE驱动仅支持NimBLE
,并且由esp-idf
中的bluetooth
组件提供,使用BLE驱动可以参考bsp/ESP32_C3/packages/ESP-IDF-latest/examples/bluetooth/nimble
下的样例程序,注意在调用NimBLE
相关接口之前要调用esp_timer_init()
函数初始化时钟驱动。
一种运行BLE样例的方案是将样例程序加入到scons
编译并在bsp/ESP32_C3/main/main.c
中调用时钟初始化程序和样例程序入口。
int main(void) {
...
#ifdef BSP_USING_BLE
esp_timer_init(); //调用时钟初始化程序
app_main(); //调用BLE样例程序入口
#endif
...
}
3、关于GDBStub组件的使用,文档见ESP-IDF关于GDBStub官方文档,目前个人提供了一个调试脚本esp32c3.gdb
,具体使用方法如下。
wcx@tim ~/rt-thread/bsp/ESP32_C3 esp32 ± sudo riscv32-esp-elf-gdb # 进入gdb调试
GNU gdb (crosstool-NG esp-2022r1-RC1) 9.2.90.20200913-git
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "--host=x86_64-build_pc-linux-gnu --target=riscv32-esp-elf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) source esp32c3.gpb # 加载gdb脚本
0x3fca8c30 in __stack_start__ ()
(gdb)
如果想要通轻度尝鲜esp32c3,推荐使用docker快速搭建环境,否则请使用原生环境搭建
在确保已经安装 docker 并配置docker内部网络环境的基础上可以通过 docker image 或 dockerfile 获取镜像,docker image 不保证时效性,而 dockerfile 可以获取最新的主线分支,下面是对应的搭建命令
通过 dockerfile 搭建开发环境
cd docker
sudo docker build --build-arg HTTP_PROXY=http://ip:port --build-arg HTTPS_PROXY=http://ip:port -t image_name .
这里的 ip:port 需要修改为代理服务器 ip 和端口号,否则拉取仓库时可能会出现网络问题
通过docker image搭建开发环境
sudo docker pull 1078249029/rtthread_esp32c3:latest
进入 docker
sudo docker run -it --device=/dev/ttyUSB* image_name
device 参数用于调试、烧录代码,通过在宿主机内执行ls /dev/ttyUSB*
即可获得对应端口,如果是通过 docker image 搭建环境的需要将 image_name 替换为1078249029/rtthread_esp32c3
环境使用
使用下列命令烧录
```sh
sudo esptool.py -b 115200 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x0 path/to/your/bootloader.bin 0x08000 path/to/your/partition-table.bin 0x010000 path/to/your/rtthread.bin
```
使用下列命令调试
```sh
sudo minicom -c on -D /dev/ttyUSB*
```
下载 RISC-V 工具链:
wget https://github.com/espressif/crosstool-NG/releases/download/esp-2022r1-RC1/riscv32-esp-elf-gcc11_2_0-esp-2022r1-RC1-linux-amd64.tar.xz
tar xf riscv32-esp-elf-gcc11_2_0-esp-2022r1-RC1-linux-amd64.tar.xz
在bsp/ESP32_C3/rtconfig.py
文件中将RISC-V
工具链的本地路径添加到EXEC_PATH
变量中,或者通过设置 RTT_EXEC_PATH
环境变量指定路径,例如:
export RTT_EXEC_PATH=/opt/riscv32-esp-elf/bin
安装 esptool 用于转换 ELF 文件为二进制烧录文件:
pip install esptool
在 Linux 平台下进入bsp/ESP32_C3/
执行以下命令进行配置:
scons --menuconfig
它会自动下载env相关脚本到~/.env
目录,然后执行:
source ~/.env/env.sh
cd bsp/ESP32_C3/
pkgs --update
它会自动下载RT-Thread-packages/esp-idf
和RT-Thread-packages/FreeRTOS-Wrapper
,更新完软件包后,执行 scons
来编译这个板级支持包。
如果编译成功,将生成rtthread.elf
、rtthread.bin
文件。
Windows 下可以使用「乐鑫科技」提供的 flash 工具进行烧录
Linux 下可以使用先前下载的 esptool 进行烧录
烧录工具下载
当前bsp测试使用 Flash Download Tools 工具进行烧录无误。
烧录工具配置
芯片型号选择ESP32-C3
将二进制文件与偏移地址配置如下:
二进制文件 | 偏移地址 |
---|---|
bootloader.bin | 0x0 |
partition-table.bin | 0x8000 |
rtthread.bin | 0x10000 |
其中bootloader.bin
和partition-table.bin
可在bsp/ESP32_C3/builtin_imgs
文件夹下找到,配置完成后截图如下,之后点击START
即可下载。
esptool.py -b 115200 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x0 path/to/your/bootloader.bin 0x08000 path/to/your/partition-table.bin 0x010000 path/to/your/rtthread.bin
当多个 ESP 设备连接时,可以使用 -p 指定某个设备
如果失败,可考虑是否是因为 user 权限不够,无法直接访问串口。 或参考乐鑫官方文档进行查错。
Thomas的小火车
来联系维护人: