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,我的锅...
此贴将会持续更新...