大型项目有了IDE加持如虎添翼,不管是在写代码还是在加断点调试方面都事半功倍。写过其他语言程序例如:Python、GO、C++,就知道vs-code和真正的IDE差距有多大,在好的工具的加持下开发速度能快几倍。虽然ESP-IDF自带了Eclipse环境,由于讨厌Eclipse所以这篇文章主要讨论其他IDE,之前开发STM32是使用vs-code,Clion和Keil,但Keil并不好用,因此这次主要尝试Clion和vs-code。
0x0. IDE配置与评测 尝试利用ESP-IDF工具链和PlatformIO提供的工具链,来开发ESP32-C3。
vs-code中安装C/C++插件,然后用vs-code打开项目,发现inlcude都是红的,这是因为没有设置include path。
点击红线出Quick Fix,即可编辑include Path:
这里我直接把相关目录都加上:
- ${workspaceFolder}/**
- D:toolsIoTToolsESP-IDFcomponents**
- D:toolsIoTTools.espressiftoolsriscv32-esp-elf1.24.0.123_64eb9ff-8.4.0riscv32-esp-elfriscv32-esp-elfinclude
- # 也可直接编辑 .vscodec_cpp_properties.json 文件
- "includePath": [
- "${workspaceFolder}/**",
- "D:\tools\IoT\Tools\ESP-IDF\components\**",
- "D:\tools\IoT\Tools\.espressif\tools\riscv32-esp-elf\1.24.0.123_64eb9ff-8.4.0\riscv32-esp-elf\riscv32-esp-elf\include"
- ],
复制代码
这样就能点击函数定义跳转了。 这里只是将vs-code仅仅用于编辑代码,至于项目编译还是需要用idf.py build命令。但是可以像rt-thread那样配置vs-code代码调试。 vs-code有一个Espressif-IDF插件,安装了试用了一下,并不好用。在没Jtag OpenOCD无法启动的情况下,调试功能无法使用。并且编译和flash等功能也没有做成按钮,而是要输入命令。因此放弃使用插件。
PlatformIO是IoT开发神器,支持众多 开发板,ESP32之类的用这个很无脑。 安装vs-code的PlatformIO插件,找到ESP32-C3设备。
其用法见文档 https://docs.platformio.org/en/latest//integration/ide/vscode.html#platformio-core-cli 创建项目,复制hello world代码,编译项目,upload,monitor:
从monitor结果看boot有问题,log一直在报错。怀疑是PlatformIO对C3支持不好,bootloader存在问题。不想去找原因了,建议C3别用PlatformIO:
- --- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
- --- More details at http://bit.ly/pio-monitor-filters
- --- Miniterm on COM11 115200,8,N,1 ---
- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
- ESP-ROM:esp32c3-api1-20210207
- Build:Feb 7 2021
- rst:0x7 (TG0WDT_SYS_RST),boot:0xc (SPI_FAST_FLASH_BOOT)
- Saved PC:0x40049a42
- SPIWP:0xee
- mode:QIO, clock div:1
- load:0x3fcd6100,len:0x183c
- ets_loader.c 78
- ESP-ROM:esp32c3-api1-20210207
- Build:Feb 7 2021
- rst:0x7 (TG0WDT_SYS_RST),boot:0xc (SPI_FAST_FLASH_BOOT)
- Saved PC:0x40049a42
- SPIWP:0xee
- mode:QIO, clock div:1
- load:0x3fcd6100,len:0x183c
- ets_loader.c 78
- ESP-ROM:esp32c3-api1-20210207
- Build:Feb 7 2021
- rst:0x10 (RTCWDT_RTC_RST),boot:0xc (SPI_FAST_FLASH_BOOT)
- SPIWP:0xee
复制代码
- 使用Clion + PlatformIO (失败)
见这个教程:https://yuanze.wang/posts/esp32-dev-in-clion/ 不过ESP32-C3只能使用espidf框架,这个框架也是使用Cmake和Clion的Cmake冲突: https://community.platformio.org/t/errors-on-clion-esp32-devkit-sdkconfig-json/14167 会导致项目无法正常通过Clion的CMake去Build。
如果随便写写什么,或者像目前的ESP32-C3只能用ESP-IDF框架,还是直接vs-code + idf.py。 如果是使用Arduino框架,建议使用PlatformIO + Clion。这样就能有电赛选手一般的手速。但是很遗憾我在用PlatformIO和Clion时遇到了问题。如果有大型项目需求,我会尝试解决问题,首选Clion开发。
0x2. 使用JTAG调试
参考这个链接进行接线。 https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/hw-reference/esp32c3/user-guide-devkitm-1.html#pin-layout
0x3. 项目的开发调试
todo太卡了不写了。
|