7.5 KiB
ESP32-C3 BSP 说明
中文 | English
简介
本文档为基于RT-THREAD的乐鑫ESP32-C3的ESP32C3 BSP (板级支持包) 说明。
主要内容如下:
- 开发板资源介绍
- BSP 快速上手
通过阅读快速上手章节开发者可以快速地上手该 BSP,将 RT-Thread 运行在开发板上。
开发板介绍
目前测试了两款开发板,运行都正常,由于两款开发板LED小灯引脚不同,请在menuconfig中选择自己手上的开发板。已测开发板外观如下图所示:
该LUATOS_ESP32C3开发板常用 板载资源 如下:
- MCU:esp32-c3,主频 160MHz, 407.22 CoreMark; 2.55 CoreMark/MHz
- 芯片内置:384KB ROM, 400KB SRAM,
- 常用外设
- 红色LED:2个,LED: D4 (IO12), D5(IO13)
- 按键:2个,K1(BOOT) K2(RST)
- SPI FLASH: 4M
- 常用接口:USB UART等
开发板更多详细信息请参考 ESP32-C3开发板介绍。
外设支持
本 BSP 目前对外设的支持情况如下:
片上外设 | 支持情况 | 备注 |
---|---|---|
GPIO | 支持 | |
UART | 支持 | 使用LUATOS_ESP32C3开发板需要在UART0_TX和UART0_RX连接串口转USB芯片(如CP2102) |
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)
环境搭建及编译
-
下载 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 进行烧录
Windows
-
烧录工具下载
当前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
即可下载。
Linux
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 权限不够,无法直接访问串口。 或参考乐鑫官方文档进行查错。
注意事项
- 目前RTTHREAD支持起来了,后续会需要继续完善一些其他功能,刚开始使用ESP32,欢迎小伙伴一起来讨论和贡献。感兴趣的可以通过公众号
Thomas的小火车
来联系
联系人信息
维护人:
特别感谢
- 感谢chenyingchun0312 提供了RISCV的强力支持