rt-thread-official/bsp/ESP32_C3/README_ZH.md

7.5 KiB
Raw Blame History

ESP32-C3 BSP 说明

中文 | English

简介

本文档为基于RT-THREAD的乐鑫ESP32-C3的ESP32C3 BSP (板级支持包) 说明。

主要内容如下:

  • 开发板资源介绍
  • BSP 快速上手

通过阅读快速上手章节开发者可以快速地上手该 BSP将 RT-Thread 运行在开发板上。

开发板介绍

目前测试了两款开发板运行都正常由于两款开发板LED小灯引脚不同请在menuconfig中选择自己手上的开发板。已测开发板外观如下图所示

LUATOS_ESP32C3

hongxu

该LUATOS_ESP32C3开发板常用 板载资源 如下:

  • MCUesp32-c3,主频 160MHz 407.22 CoreMark; 2.55 CoreMark/MHz
  • 芯片内置384KB ROM, 400KB SRAM,
  • 常用外设
    • 红色LED2个LED: D4 (IO12), D5IO13
    • 按键2个K1BOOT 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_WIFILWIP开关。另外由于能力有限且缺乏调试设备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) 

环境搭建及编译

  1. 下载 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
    
  2. 配置工具链的路径:

    bsp/ESP32_C3/rtconfig.py文件中将RISC-V工具链的本地路径添加到EXEC_PATH变量中,或者通过设置 RTT_EXEC_PATH环境变量指定路径,例如:

    export RTT_EXEC_PATH=/opt/riscv32-esp-elf/bin
    
  3. 编译

    安装 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-idfRT-Thread-packages/FreeRTOS-Wrapper,更新完软件包后,执行 scons 来编译这个板级支持包。

    如果编译成功,将生成rtthread.elfrtthread.bin文件。

下载烧录

Windows 下可以使用「乐鑫科技」提供的 flash 工具进行烧录

Linux 下可以使用先前下载的 esptool 进行烧录

Windows

  1. 烧录工具下载

    当前bsp测试使用 Flash Download Tools 工具进行烧录无误。

  2. 烧录工具配置

    芯片型号选择ESP32-C3

    将二进制文件与偏移地址配置如下:

    二进制文件 偏移地址
    bootloader.bin 0x0
    partition-table.bin 0x8000
    rtthread.bin 0x10000

    其中bootloader.binpartition-table.bin可在bsp/ESP32_C3/builtin_imgs文件夹下找到,配置完成后截图如下,之后点击START即可下载。

    flash_download_tools

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的小火车来联系

联系人信息

维护人:

特别感谢