概述
ESP8266+阿里云c-sdk环境搭建
本文背景为Linux环境下基于vscode对esp8266+aliyun c-sdk进行开发环境搭建
ESP8266 开发环境搭建
首先在/home下新建文件夹esp,用来存放相关文件,然后前往乐鑫github地址下载ESP8266SDK,可以直接下载压缩包然后解压扫esp文件夹下,也可以直接通过终端下载
cd esp
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git
等待片刻即可,然后下载编译工具xtensa-lx106-elf,在ESP8266SDK github下载地址下有下载链接,这里我们选择Linux64位的版本,将下载的文件解压到esp文件夹下
下在后需要配置两个环境变量,修改/home/.profile,如下所示:
export PATH=/home/x/myproject/esp/xtensa-lx106-elf/bin:$PATH
export IDF_PATH=/home/x/myproject/esp/ESP8266_RTOS_SDK
可以通过source .profile
查看环境变量生效配置,然后通过echo $PATH
查看配置,出现以下画面代表生效成功,
但这只是临时的,只对这个终端有效,重启电脑可以永久生效。
然后在ESP8266SDK文件夹下运行以下代码安装依赖库
python -m pip install --user -r $IDF_PATH/requirements.txt
至此esp8266的配置基本完成。
vscode 配置
通过以下代码安装vscode
sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
sudo apt-get update
sudo apt-get install ubuntu-make
sudo umake ide visual-studio-code
安装好后可以直接在搜索里面找到软件,若是没有重启电脑即可
接下来是vscode 这里我只推荐两个插件,一个用于写c,一个用于代码补全
阿里云 C-SDK下载配置
c-skd下载地址如下aliyun c-sdk
下载完成后,将文件加压到ESP8266SDK文件夹下,并改名为c_sdk,下面开始配置。
配置
首先在c_sdk文件夹下打开终端,执行make menuconfig
选择配置
然后执行make reconfig
选择esp8266
完成后执行make
生成链接库文件,在output文件夹下
将lib文件夹下文件复制备用,然后执行./extract.sh
生成裁剪文件,生成的文件位于、output/eng 下
将生成的裁剪文件和之前复制的lib文件夹一起复制到ESP8266_RTOS_SDK/components/libiotsdk文件夹下(libiotsdk文件夹需要自己新建)
然后新建component.mk文件,文件内容如下
COMPONENT_ADD_INCLUDEDIRS += dev_model dev_sign infra mqtt wrappers cert http http2 ota dev_reset
COMPONENT_SRCDIRS := wrappers
LIBS := iot_sdk
COMPONENT_ADD_LDFLAGS += -lpthread -L$(COMPONENT_PATH)/lib $(addprefix -l,$(LIBS))
现在配置完成了,可以开始写代码了,为了验证配置是否完成我们可以到/ESP8266_RTOS_SDK/examples/get-started/hello_world下,修改文件,将hello_world.c 文件内容太替换成下面的内容:
#include <stdio.h>
#include <string.h>
#include "mqtt_api.h"
#include "dev_reset_api.h"
#include "esp_log.h"
void HAL_Printf(const char *fmt, ...);
int HAL_GetProductKey(char product_key[IOTX_PRODUCT_KEY_LEN]);
int HAL_GetDeviceName(char device_name[IOTX_DEVICE_NAME_LEN]);
#define EXAMPLE_TRACE(fmt, ...)
do {
HAL_Printf("%s|%03d :: ", __func__, __LINE__);
HAL_Printf(fmt, ##__VA_ARGS__);
HAL_Printf("%s", "rn");
} while(0)
static int reset_mqtt_packet_id = 0;
static int reset_reply_received = 0;
void example_event_handle(void *pcontext, void *pclient, iotx_mqtt_event_msg_pt msg)
{
EXAMPLE_TRACE("msg->event_type : %d", msg->event_type);
}
void example_devrst_evt_handle(iotx_devrst_evt_type_t evt, void *msg)
{
switch (evt)
{
case IOTX_DEVRST_EVT_RECEIVED: {
iotx_devrst_evt_recv_msg_t *recv_msg = (iotx_devrst_evt_recv_msg_t *)msg;
if (recv_msg->msgid != reset_mqtt_packet_id) {
return;
}
EXAMPLE_TRACE("Receive Reset Responst");
EXAMPLE_TRACE("Msg ID: %d", recv_msg->msgid);
EXAMPLE_TRACE("Payload: %.*s", recv_msg->payload_len, recv_msg->payload);
reset_reply_received = 1;
}
break;
default:
break;
}
}
int app_main()
{
int res = 0;
void *pclient = NULL;
iotx_dev_meta_info_t meta_info;
iotx_mqtt_param_t mqtt_params;
memset(&mqtt_params, 0, sizeof(iotx_mqtt_param_t));
memset(&meta_info, 0, sizeof(iotx_dev_meta_info_t));
HAL_GetProductKey(meta_info.product_key);
HAL_GetDeviceName(meta_info.device_name);
mqtt_params.handle_event.h_fp = example_event_handle;
pclient = IOT_MQTT_Construct(&mqtt_params);
if (NULL == pclient) {
EXAMPLE_TRACE("MQTT construct failed");
return -1;
}
res = IOT_DevReset_Report(&meta_info, example_devrst_evt_handle, NULL);
if (res < 0) {
return -1;
}
reset_mqtt_packet_id = res;
while (!reset_reply_received) {
IOT_MQTT_Yield(pclient, 200);
}
EXAMPLE_TRACE("Example Execute Success, Now Exit...");
return 0;
}
然后make一下看看有无报错,若是出现HAL_xxxx函数没有定义,则是在/home/x/myproject/esp/ESP8266_RTOS_SDK/components/libiotsdk/wrappers
下wrappers.c文件没有写这个函数,补充上即可。
最后
以上就是朴实巨人为你收集整理的ESP8266+阿里云c-sdk学习--01环境搭建ESP8266+阿里云c-sdk环境搭建的全部内容,希望文章能够帮你解决ESP8266+阿里云c-sdk学习--01环境搭建ESP8266+阿里云c-sdk环境搭建所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复