VS Code PlatformIO 踩坑心得

起因:乐鑫原生的编译环境实在是太不友好,所以使用VS Code下的PlatformIO插件过程中的一些踩坑记录,希望能帮到大家

以下问答均建立在硬件:ESP32,框架:Arduino

 

问:如何在PlatformIO编译和烧写时打印完整的日志?

答:在控制终端输入:pio run -e esp32dev -t upload -v,详细含义介绍可使用pio -h / pio run -h 查看

 

问:如何修改PlatformIO串口调试速率?

答:在项目文件中找到platformio.ini并打开,在 [env:esp32dev] 节点下添加 monitor_speed = 9600

 

问:如何修改PlatformIO烧写固件的速率?

答:在项目文件中找到platformio.ini并打开,在 [env:esp32dev] 节点下添加 upload_speed = 115200

 

问:如何导出编译完成的二进制可烧录文件?

答:第一步:在项目文件中找到platformio.ini并打开

  第二步:在 [env:esp32dev] 节点下添加 extra_scripts = post:extra_script.py

  第三步:在platformio.ini同目录下新增文件,命名为为:extra_script.py,并添加以下内容:

Import("env")

# Custom HEX from ELF
# 下面代码中使用的--chip -o -ff -fm -fs等均为esptool.py的参数命令
# 详细esptool.py使用方法介绍:https://blog.csdn.net/espressif/article/details/105028809
env.AddPostAction(
    "$BUILD_DIR/${PROGNAME}.elf",
    env.VerboseAction(" ".join([
        "$OBJCOPY", 
        "--chip esp32 elf2image ", # 设置目标环境
        "-o Test.bin ", # 该行为在项目根目录下输出Test.bin二进制烧录文件
        "-ff 40m ", # SPI速率 
        "-fm dio ", # SPI模式   
        "-fs 4MB ", # FLASH大小
        "$BUILD_DIR/${PROGNAME}.elf", 
    ]), "Building $BUILD_DIR/${PROGNAME}.hex")
)

 

 

问:ESP8266EX 下载失败,报MD5校验不一致错误

"C:\Users\icyyang\.platformio\penv\Scripts\python.exe" 
"C:\Users\icyyang\.platformio\packages\tool-esptoolpy@1.30000.201119\esptool.py" 
--before default_reset --after hard_reset --chip esp8266 --port "COM5" --baud 115200 write_flash 0x0 .pio\build\esp12e\firmware.bin

esptool.py v3.0
Serial port COM5
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: bc:dd:c2:88:f4:95
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Compressed 264240 bytes to 194515...
Writing at 0x00000000... (8 %)
Writing at 0x00004000... (16 %)
Writing at 0x00008000... (25 %)
Writing at 0x0000c000... (33 %)
Writing at 0x00010000... (41 %)
Writing at 0x00014000... (50 %)
Writing at 0x00018000... (58 %)
Writing at 0x0001c000... (66 %)
Writing at 0x00020000... (75 %)
Writing at 0x00024000... (83 %)
Writing at 0x00028000... (91 %)
Writing at 0x0002c000... (100 %)
Wrote 264240 bytes (194515 compressed) at 0x00000000 in 17.2 seconds (effective 123.3 kbit/s)...
File  md5: 4f7deee150eecc4f44d99d4e0e0a025b
Flash md5: ec20f3d09660c0e91a808185abe351f0
MD5 of 0xFF is 2d6f6b555c8288c3231d7a7e597ba576

A fatal error occurred: MD5 of file does not match data in flash!

答:可能出现的原因:

1、供电电流太小,下载的过程中芯片重复得失电导致下载失败;

2、FLASH大小异常,使用esptool.py flash_id读取Flash信息,确认大小是否无误,是否写保护;

3、暂无了解...

我这里可能是遇到坑比厂家了买的MX25L2006EM1I-12G 2M的结果只有256KB就是这个问题导致一致写不进去然后MD5校验始终不通过,后来拆了一颗ESP32模组的4M Flash替换上去就好了(咒骂无良商家)

后来得知MX25L2006EM1I-12为 2Mbit而不是2Mbyte,我的锅...

此贴将会持续更新...

posted @ 2022-07-22 11:28  lnsane-G  阅读(934)  评论(0编辑  收藏  举报