请问有ESP8266 RTOS编程过程中遇到过以下问题(LD BUILD)的吗?

使用官方最新的SDK+工具链,出现以下错误:
图片说明

报错中相关的“pthread_key_create”等代码所使用的相关代码都是关放SDK 上 git clone下来的,没有修改过

问下是与头文件部分相关吗?

一、前言
ESP8266 的 RTOS SDK 从 3.0 开始使用 ESP-IDF(乐鑫物联网开发框架,Espressif IoT Development Framework) 的代码框架,相比 2.0 的编译二次开发方便了很多,旨在通过Wi-Fi,电源管理和其他一些系统功能快速开发物联网(IoT)应用程序。

Linux 环境搭建参看 ESP8266学习笔记(17)——搭建环境、编译烧写(RTOS SDK)Linux篇

二、搭建环境
2.1 官方资料
ESP8266_RTOS_SDK(IDF风格)编程指南

2.2 下载编译环境MSYS2
官网下载:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started-legacy/windows-setup.html
百度网盘:https://pan.baidu.com/s/1VfFu5Pe9JWmrg_hX3R-aHQ 提取码:pa3i

请将压缩包文件解压至 C:\``(或其他目录,但本文档中以 ``C:\ 为例),该文件将为您创建一个带有预配置环境的 msys32 目录。
请运行 C:\msys32\mingw32.exe 文件,打开一个 MSYS2 MINGW32 终端窗口。该窗口的环境为 bash shell。请创建一个名为 esp 的文件夹,作为 ESP8266 应用程序开发的默认目录。您可以使用以下命令创建文件夹:
mkdir -p ~/esp
1
还可以通过 cd ~/esp 命令,进入刚刚创建的文件夹。如无其他问题,本步骤到此结束。



2.3 下载工具链Toolchain
官网下载:https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/get-started/windows-setup.html
百度网盘:https://pan.baidu.com/s/1VfFu5Pe9JWmrg_hX3R-aHQ 提取码:pa3i



下载此文件,然后将其解压缩到 /opt 目录中:

2.打开 mingw32.exe


要使用它,您将需要更新文件中的PATH环境变量 /etc/profile.d/esp32_toolchain.sh。
cd /etc/profile.d
vim esp32_toolchain.sh
1
2
要使 xtensa-lx106-elf 所有终端会话都可用,请在 esp32_toolchain.sh 文件中添加以下行:
export PATH="$PATH:/opt/xtensa-lx106-elf/bin"
export IDF_PATH="D:/msys32/home/alm-text/esp/ESP8266_RTOS_SDK-master"
1
2


关闭并重新打开 mingw32.exe 以使 profile 更改生效。运行以下命令以验证是否 PATH 正确设置:
echo $PATH
1


在命令行终端执行 xtensa-lx106-elf-gcc -v,如可看到版本号,表示当前交叉编译器安装成功。

2.4 下载RTOS SDK 3.0以上
官网下载:https://github.com/espressif/ESP8266_RTOS_SDK
百度网盘:https://pan.baidu.com/s/143bPRDj3tSA42zpMvDsZww 提取码:xhsp
克隆存储库:git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK.git

将 ESP8266_RTOS_SDK 解压到 ~/esp/ESP8266_RTOS_SDK-master。
新文件中的PATH环境变量 /etc/profile.d/esp32_toolchain.sh,在上一步已完成。
export IDF_PATH="D:/msys32/home/alm-text/esp/ESP8266_RTOS_SDK-master"
1
2.5 安装所需的Python软件包
查看 SDK 所需 Python 版本:

python --version
1
ESP8266_RTOS_SDK 所需的 Python 包位于 $IDF_PATH/requirements.txt 文件中。您可以通过运行以下命令安装它们:

python -m pip install --user -r $IDF_PATH/requirements.txt
1
三、编译
进入示例工程:
cd ~/esp/ESP8266_RTOS_SDK-master/examples/get-started/project_template/
1
启动项目配置实用程序:
make menuconfig
1
如果正确完成了前面的步骤,将显示以下菜单:

在菜单中,导航至> 以配置要在其中加载项目的串行端口。按Enter确认选择,按选择保存配置,然后按选择退出应用程序。Serial flasher config Default serial port < Save > < Exit >


进行编译
make all
1
四、烧写
4.1 编译环境中烧写
先把开发板调为烧写模式


输入命令

make flash
1
这将编译应用程序和所有 ESP8266_RTOS_SDK 组件,生成引导加载程序,分区表和应用程序二进制文件,并将这些二进制文件闪存到 ESP8266 板上。

AR build/wpa_supplicant/libwpa_supplicant.a
Generating esp8266.project.ld
LD build/simple_wifi.elf
esptool.py v2.4.0
402460b8
Python requirements from D:/msys32/home/alm-text/esp/ESP8266_RTOS_SDK-master/requirements.txt are satisfied.
Flashing binaries to serial port COM5 (app at offset 0x10000)...
esptool.py v2.4.0
Connecting........_____....._____....._____....._____....._____....._____....._____
1
2
3
4
5
6
7
8
9
出现Connecting的时候开发板重新上电

串口调试
make monitor
1
4.2 烧录工具烧写
ESPFlashDownloadTool_v3.6.4.exe
链接:https://www.espressif.com/zh-hans/support/download/other-tools
然后按照 make all 中提示的文件和烧录地址




五、Visual Studio Code
官网下载:https://code.visualstudio.com
百度网盘:https://pan.baidu.com/s/1R62HT0PVmVzMwOXtCmIQwA 提取码:g9fb

5.1 设置中文显示
按 Shirf+Ctrl+P 在搜索框输入 Configure Display Language


选择中文包进行安装


5.2 设置路径

修改成自己的路径

{
    "terminal.integrated.shell.windows": "D:\\msys32\\msys2_shell.cmd",
    "terminal.integrated.shellArgs.windows": ["-defterm", "-mingw32", "-no-start", "-here"]
}
1
2
3
4
5.3 编译工程
在工程中选择在 终端中打开


注意:下面这个框要拉大点,不然不够位置显示会报错

输入 make all

5.4 避免make menuconfig乱码

编辑 \etc\profile.d\esp32_toolchain.sh,插入代码

export LANG="en_US"
1
• 由 Leung 写于 2020324 日

• 参考:ESP8266_RTOS_SDK (IDF Style) Programming Guide
    乐鑫esp8266学习rtos3.0笔记第1篇: 全面认识乐鑫esp8266 Rtos 3.0 sdk 工程结构
    Esp8266 进阶之路27【高级篇】跟紧脚步,Windows下用 Visual Studio Code开发 esp8266 rtos SDK v3.0版本,全新 idf 框架
    ESP8266学习之路(一)开发环境的搭建——VSCODE+ESP-IDF+RTOS_SDK
    ESP8266_RTOS_SDK v3.0学习(1)--------环境搭建
    ESP8266(v3.0以上)SDK新环境搭建教程
    ESP 8266学习笔记1: RTOS SDK编程环境搭建(3.0以上)