Coder Social home page Coder Social logo

esp-aliyun's Introduction

ESP 设备对接阿里云指南

目录

0.介绍

乐鑫是高集成度芯片的设计专家,专注于设计简单灵活、易于制造和部署的解决方案。乐鑫研发和设计 IoT 业内集成度高、性能稳定、功耗低的无线系统级芯片,乐鑫的模组产品集成了自主研发的系统级芯片,因此具备强大的 Wi-Fi 和蓝牙功能,以及出色的射频性能。

阿里云物联网套件是阿里云专门为物联网领域的开发人员推出的,其目的是帮助开发者搭建安全性能强大的数据通道,方便终端(如传感器、执行器、嵌入式设备或智能家电等等)和云端的双向通信。全球多节点部署让海量设备全球范围都可以安全低延时接入阿里云IoT Hub,安全上提供多重防护保障设备云端安全,性能上能够支撑亿级设备长连接,百万消息并发。物联网套件还提供了一站式托管服务,数据从采集到计算到存储,用户无需购买服务器部署分布式架构,用户通过规则引擎只需在web上配置规则即可实现采集+计算+存储等全栈服务。总而言之,基于物联网套件提供的服务,物联网开发者可以快速搭建稳定可靠的物联网平台。

1.目的

本文基于 linux 环境,介绍 ESP 设备对接阿里云平台的具体流程,供读者参考。当前只维护 smart_lightsolo 示例,这两个示例包含了另外三个示例的功能,建议直接选择这两个示例 demo。

2.硬件准备

  • linux 环境
    用来编译 & 烧写 & 运行等操作的必须环境。

windows 用户可安装虚拟机,在虚拟机中安装 linux。

  • ESP 设备
    ESP 设备包括 ESP芯片ESP模组ESP开发板等。

  • USB 线
    连接 PC 和 ESP 设备,用来烧写/下载程序,查看 log 等。

3.阿里云平台准备

根据阿里官方文档,在阿里云平台创建产品,创建设备,同时自动产生 product key, product secert, device name, device secret
product key, product secert, device name, device secret 将在 6.2.3 节用到。

4.环境搭建

如果您熟悉 ESP 开发环境,可以很顺利理解下面步骤; 如果您不熟悉某个部分,比如编译,烧录,需要您结合官方的相关文档来理解。如您需阅读 ESP-IDF 编程指南文档等。

4.1 编译器环境搭建

  • ESP8266 平台: 根据官方链接Get toolchain,获取 toolchain
  • ESP32 & ESP32S2 平台:根据官方链接工具链的设置,下载 toolchain

toolchain 设置参考 ESP-IDF 编程指南

4.2 烧录工具/下载工具获取

  • ESP8266 平台:烧录工具位于 ESP8266_RTOS_SDK./components/esptool_py/esptool/esptool.py
  • ESP32 & ESP32S2 平台:烧录工具位于 esp-idf./components/esptool_py/esptool/esptool.py

esptool 功能参考:

$ ./components/esptool_py/esptool/esptool.py --help

5.SDK 准备

Espressif SDK 下载好后:
ESP-IDF: 请切换到 v4.2 分支: git checkout v4.2 如果需要使用 ESP32S2 模组,请切换到 v4.2 版本: git checkout v4.2 ESP8266_RTOS_SDK: 请切换到 v3.3 分支: git checkout v3.3

6.编译 & 烧写 & 运行

6.1 编译

6.1.1 导出编译器

参考 工具链的设置

6.1.2 编译 demo 示例

由于 esp32 和 esp8266 将会采用不同的 sdkconfig.defaults 和对应的 partitions.csv,在对应的 make 命令中加入了对应的芯片选项,如 chip=esp32 或 chip=esp8266。

当 chip=esp32 时将默认使用 sdkconfig_esp32.defaults 以及 partitions_esp32.csv。

当 chip=esp8266 时将默认使用 sdkconfig_esp8266.defaults 以及 partitions_esp8266.csv。

当使用 esp32s2 时,将默认使用 sdkconfig.defaults ,sdkconfig.defaults.esp32s2 以及 partitions_esp32s2.csv,编译方式与 8266 & 32 都不一样,需要使用 cmake 进行编译。

以上需要特别注意。

在 esp-aliyun 目录下执行:

cd examples/solutions/smart_light
make chip=esp32 defconfig
make menuconfig

如果需要编译esp32s2版本, 请按照如下步骤编译:

执行如下命令,以 solo 示例为例,目前只支持 solo 和 smart_light 示例。

cd examples/solo/example_solo
idf.py set-target esp32s2
idf.py menuconfig

p1

  • 配置烧写串口
  • 配置 WIFI_SSID, WIFI_PASSWORD

如果需要编译esp32s3版本, 当前只支持 master 版本。请按照如下步骤编译:

执行如下命令,以 solo 示例为例,目前只支持 solo 和 smart_light 示例。

cd examples/solo/example_solo
idf.py set-target esp32s3
idf.py menuconfig

2.生成最终 bin

make -j8

使用 esp32s2/esp32s3 生成 bin

idf.py build

6.2 擦除 & 编译烧写 & 下载固件 & 查看 log

将 USB 线连接好 ESP 设备和 PC,确保烧写端口正确。

6.2.1[可选] 擦除 flash

make erase_flash

注:无需每次擦除,擦除后需要重做 6.2.3。

6.2.2 烧录程序

make flash

使用 esp32s2/esp32s3 擦除 flash

idf.py -p (PORT) erase_flash

6.2.3 烧录三元组信息

参考 量产说明 文档烧录三元组 NVS 分区。

6.2.4 运行

make monitor

如将 ESP8266 拨至运行状态,即可看到如下 log: log 显示了 ESP8266 基于 TLS 建立了与阿里云的安全连接通路,接着通过 MQTT 协议订阅和发布消息,同时在阿里云控制台上,也能看到 ESP8266 推送的 MQTT 消息。

p2

p3

p4

也可执行 make flash monitor 来编译烧写和查看 log。

esp-aliyun's People

Contributors

cwespressif avatar esp-yjm avatar lhespress avatar ljysp avatar ustccw avatar wujiangang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esp-aliyun's Issues

连接十分不稳定,并且会导致异常重启

mqtt连接上之后,会经常出现断开。
在回调event_handle中经常打印MQTT disconnect.MQTT reconnect.

并且有一定概率在出现 MQTT disconnect.时,模组异常重启。
严重影响模组的正常业务功能!!!
完全无法投入使用。

不稳定这个问题我看从很早就有人提出了,但是一直没解决。希望重视这个问题!!

打印乱码

@ustccw
你好,如题,我在usermain.c中create了一个task,然后系统串口输出出现乱码,系统直接无法运行了,我把task函数中的程序也屏蔽掉了,但是同样,不清楚为什么?
可不可帮助用xTaskCreate创建一个任务,让其运行起来,程序为空也可,库程序内容很多很复杂,不太清楚每一部分串口数据是从哪里打印的,尤其是变成了乱码,作为普通使用者更加难分析了

编译和乱码问题

导入就报错,估计是自带的底层库没有放进来! esp8266-rtos-sdk文件夹下面为空。

sntp 获取不到有效时间

dhcp client start...
ip:192.168.1.179,mask:255.255.255.0,gw:192.168.1.1
WiFi connected
Initializing SNTP
please start sntp first !
current time : Thu Jan 01 00:00:00 1970

did not get a valid time from sntp server
please start sntp first !
current time : Thu Jan 01 00:00:00 1970

did not get a valid time from sntp server
please start sntp first !
current time : Thu Jan 01 00:00:00 1970

did not get a valid time from sntp server
please start sntp first !
current time : Thu Jan 01 00:00:00 1970

did not get a valid time from sntp server
u Jan 01 00:00:00 1970

did not get a valid time from sntp server
please start sntp first !
current time : Thu Jan 01 00:00:00 1970

did not get a valid time from sntp server
please start sntp first !
current time : Thu Jan 01 00:00:00 1970

MQTT 连接不稳定当前状态

前面3月初有其他开发者提到的MQTT 连接不稳定问题现在状态是怎样的?
之前MQTT 连接不稳定的问题最新的状态是怎样的

OTA TASK运行失败,但MQTT任务正常

我使用的是安信可的ESP 01-M模块,在https://github.com/espressif/esp8266-aliyun?spm=5176.doc42648.2.9.Oe0lw3 下载了由乐鑫官方整合阿里云物联网套件的程序,然后在乐鑫官网下载了RTOS,放到了esp8266-rtos-sdk 目录下,修改了阿里云套件的三元组,产品KEY、设备名、设备密钥。使用MQTT_TASK任务运行没有什么问题,阿里云也可以接收到数据。设备也可以接收到云发送过来的数据。
然后我就把DEFAULT_TASK_MODE改为REMOTE_OTA_TASK测试一下OTA升级,但这时就出问题了。我把所有的LOG开关打开(LOG在附件里)。发现出现异常
[inf] _ssl_parse_crt(142): crt content:451
[inf] _ssl_client_init(185): ok (0 skipped)
[inf] TLSConnectNetwork(360): Connecting to /iot-auth.cn-shanghai.aliyuncs.com/443...
[inf] TLSConnectNetwork(367): ok
[inf] TLSConnectNetwork(372): . Setting up the SSL/TLS structure...
[inf] TLSConnectNetwork(383): ok
[inf] TLSConnectNetwork(420): Performing the SSL/TLS handshake...
Fatal exception (28):
epc1=0x401000e3
epc2=0x00000000
epc3=0x4025ea17
epcvaddr=0x00000068
depc=0x00000000
rtn_add=0x401003d4

但是MQTT任务和OTA任务走的是一样的流程,不知道为什么MQTT任务能正常运行,而OTA就出错,设备不断重启的样子,不断地走同样的流程,找了阿里云的技术支持,他们说这个错误是芯片这边抛出的异常。于是来到论坛请求支持,希望大神给予帮助,感激不尽!

固件FLASH为1MB。芯片应该是8285

我也在乐鑫官方论坛提交了相关的TOPIC,但依然没得到解决方案。
乐鑫主题地址:https://bbs.espressif.com/viewtopic.php?f=7&t=9138

希望大神能帮助解决一下。谢谢了。

第一次tcp连接失败

您好。我在使用上一版本基于阿里IOT套件2.0版本中。稳定复现连接MQTT过程中,第一次TCP连接出错。然后重新连接正常。相关打印如下:
MQTT client example begin, free heap size:28536
establish tcp connection with server(host=hd4st5dwsnh.iot-as-mqtt.cn-shanghai.aliyuncs.com port=1883)
fail to establish tcp
[log_err] iotx_mc_connect(2262): TCP or TLS Connection failed
MQTT construct failed
MQTT client example end, free heap size:27480

MQTT client example begin, free heap size:27480
establish tcp connection with server(host=hd4st5dwsnh.iot-as-mqtt.cn-shanghai.aliyuncs.com port=1883)
success to establish tcp, fd=1
目前的基于2.1版本的移植程序中,编译过程遇到 cannot find -liot_sdk 错误。
另外如果8266子模块更新至最新esp-idf风格的版本。头文件相关的makefile应该如何处理。

编译错误: no rule to make target 'all'

我的电脑系统是Win7,使用的开发工具是Cygwin+Eclipse, 曾经单独编译过ESP8266-RTOS-SDK项目,没有问题,但是编译这个esp8266-aliyun项目一直提示:
no rule to make target 'all'

这到底是我的的开发环境设置有问题还是别的原因?

编译出现了make: *** No rule to make target 'clean'. Stop, 该怎么解决呢?

这是ESP_Lunbuntu的:
esp8266@esp8266-VirtualBox:/Desktop/esp8266-aliyun$ ls
bin esp8266-rtos-sdk gen_misc.sh include Makefile mqtt ota platforms README.md _static user
esp8266@esp8266-VirtualBox:
/Desktop/esp8266-aliyun$ ./gen_misc.sh
/home/esp8266/Desktop/esp8266-aliyun/esp8266-rtos-sdk
/home/esp8266/Desktop/esp8266-aliyun/bin
gen_misc.sh version 20150911

SDK_PATH:
/home/esp8266/Desktop/esp8266-aliyun/esp8266-rtos-sdk

BIN_PATH:
/home/esp8266/Desktop/esp8266-aliyun/bin

Please check SDK_PATH & BIN_PATH, enter (Y/y) to continue:

Please follow below steps(1-5) to generate specific bin(s):
STEP 1: use boot_v1.2+ by default
boot mode: new

STEP 2: choose bin generate(0=eagle.flash.bin+eagle.irom0text.bin, 1=user1.bin, 2=user2.bin)
enter (0/1/2, default 0):

STEP 3: choose spi speed(0=20MHz, 1=26.7MHz, 2=40MHz, 3=80MHz)
enter (0/1/2/3, default 2):
spi speed: 40 MHz

STEP 4: choose spi mode(0=QIO, 1=QOUT, 2=DIO, 3=DOUT)
enter (0/1/2/3, default 0):
spi mode: QIO

STEP 5: choose spi size and map
0= 512KB( 256KB+ 256KB)
2=1024KB( 512KB+ 512KB)
3=2048KB( 512KB+ 512KB)
4=4096KB( 512KB+ 512KB)
5=2048KB(1024KB+1024KB)
6=4096KB(1024KB+1024KB)
7=4096KB(2048KB+2048KB) not support ,just for compatible with nodeMCU board
8=8192KB(1024KB+1024KB)
9=16384KB(1024KB+1024KB)
enter (0/2/3/4/5/6/7/8/9, default 0):
spi size: 1024KB
spi ota map: 512KB + 512KB

start...

make: *** No rule to make target clean'. Stop. make: Nothing to be done for FORCE'.
esp8266@esp8266-VirtualBox:~/Desktop/esp8266-aliyun$ make clean
make: *** No rule to make target clean'. Stop. esp8266@esp8266-VirtualBox:~/Desktop/esp8266-aliyun$ make -f Makefile clean make: *** No rule to make target clean'. Stop.

TLS连接疑点

您好!
1.阿里云提供了标准CA证书(2048bit)和阿里云自签发的pubkey证书(1024位),他们是TLS版本的区别吗?
2.在阿里云官网有这么一段描述,设备端通过验证服务器的CA证书来进行连接,而设备发送信息通过MQTT的加密报文,那么在制作CA相关bin文件的时候,是不是只需要通过CA证书制作一个esp_ca_cert.bin证书烧录到8266,而无需制作esp_cert_private_key.bin,也就是阿里云服务器无需验证8266的证书?在代码端的espconn_secure_ca_enable()在代码什么位置设置呢?
3.目前8266芯片现售的是几乎是16M或者32M,可否支持?烧录过程是否改可选?
4.我通过编译产生的文件,按照说明的位置烧录到8266,但是8266串口没有输出任何信息,波特率采用默认的74880
5.我试着将代码移植到安信可eclipse ide开发工具,因为编辑代码比较直观,乐鑫的工具使用有一定的门槛,是否有可能移植到eclipse开发环境当中?

设备和控制台MQTT消息对接

@ustccw 你好,设备发送消息到控制台显示no authorization,控制台发送消息到设备显示topic message arrived but without any related handle,发送的消息是有一个结构体,但是控制台发送的就只是字符串,不知道该如何对接呢?你的案例中8266和控制台能够成功对接。

在ubantu下编译出来的SDK串口一直输出乱码

按照教程在ubantu 16.04 下编译出来SDK,一直输出乱码。
尝试过:

  1. 使用默认 74880 ,还是乱码
  2. 增加函数设置波特率为 115200, 还是乱码
  3. 增加定时器,间隔2s控制灯闪,运行后灯会闪,说明程序已经在运行,就是无法用secureCRT接收到正常的日志。
  4. 使用之前自己编译的SDK,能正常输出日志。

有没有遇到这种情况的?

配网方式

使用这个固件,WIFI和wifi密码都已经是固定了的,这种方法根本无法用于实际,毕竟实际运用的时候WiFi和WiFi密码都不可能是固定的啊,有没有其他的配网方式呢?

MQTT 连接不稳定

代码运行之后,总是在publish几个或者几十个消息之后MQTT连接就出现了如下的错误提示:

event_handle|47 MQTT disconnect.

[inf] utils_network_ssl_disconnect(319): ssl_disconnect
mqtt_client|211 error occur when publish

[inf] utils_network_ssl_write(295): ssl write fail, code=-28928, str=
[inf] HAL_SSL_Destroy(465): handle is NULL
[ALIYUN] MQTT client example end, free heap size:40144

我不知道是不是我这边网络的问题是别的什么,我感觉我这边的网络还可以,因为电脑和ESP8266连接的是同一个Wifi路由,电脑就没掉线过。
ESP8266跟Wifi路由器之间的连接是没有断开,但是MQTT连接老中断,MQTT重连
之后又可以继续发消息了,这是为什么?

MQTT 新建 topic 问题

@ustccw 你好,如果新建一个MQTT topic,内置tls如何启动呢?我在mqtt.c中并无发现y与HAL_TLS_mbedtls.c关联

离线消息丢失,存在严重问题(附原因及解决办法)

如题,使用sdk2.0时离线消息无法收到,严重影响业务的进行。
经过排查,发现以下原因:

clean_session 未赋值

即使初始化时将 mqtt_params.clean_session = 0,但是实际构造的时候值依旧是默认为 1。
原因是IOT_MQTT_Construct方法中并未对其中的 cleansession 进行赋值,导致cleansession永远为 1.
这个将导致 qos1和qos2的订阅支持不完善,离线消息将无法收到。

我这边暂时在IOT_MQTT_Construct进行了修复,对 cleansession 进行了赋值

回调未调用

经过以上修复后,阿里云会对离线消息进行再次发送。从日志来看,模组也对离线消息回应了 puback。
但是用户程序却无法收到消息回调。
经排查,原因是sdk 中订阅回调函数是在收 suback 后才进行设置的。而我调试发现,离线消息先于 suback 收到,于是导致此离线消息无法找到回调函数,用户程序在业务上则丢失了此消息,严重影响业务逻辑。

PUBLISH // 先收到 publish 消息

********** event payload [len:46] start addr:40108e3c **********
ff 01 c1530675535481 00 1b @ 1b E 01 1d ! 11 1b a 01 c 0d 0a 1b E 00 1d ! 00 1b a 00 0d 0a 1 1b d 03
---------- event payload End ----------
SUBACK // 后收到的 suback 消息
SUBACK

sdk 中具体的代码位于iotx_mc_cycle中,还望仔细排查。

目前解决办法有两,一是设置默认消息回调,在默认回调函数中再进行过滤处理。二是修改sdk 中的iotx_mc_handle_recv_PUBLISH实现,找不到回调时不回复 puback,等待阿里云再一次重发

以上问题在 sdk 2.0 中出现,而 sdk2.1 已经换成了 iotkit,我不清楚是否同样存在问题,还望sdk 开发者仔细排查,并作好充分测试。毕竟一个sdk,你们发布出来就会有很多人使用,务必对自己写的代码甚至是公司的代码负责。谢谢。

ESP-WROOM-02模组WIFI能正常连上,执行到device_info created successfully程序跑飞


demo compile time:Jun 28 2018 21:58:25


scandone

MQTT task started...
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 4
pm open phy_2,type:2 0 0
cnt

connected with Xiaomi_E303, channel 4
dhcp client start...
ip:192.168.31.153,mask:255.255.255.0,gw:192.168.31.1
WiFi connected
Initializing SNTP
please start sntp first !
current time : Thu Jan 01 00:00:00 1970

did not get a valid time from sntp server
current time : Sat Jun 30 12:25:06 2018

MQTT client example begin, free heap size:60640
[inf] iotx_device_info_init(40): device_info created successfully!

[dFatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0
connected with Xiaomi_E303, channel 4
dhcp client start...
ip:192.168.31.153,mask:255.255.255.0,gw:192.168.31.1
WiFi connected
Initializing SNTP
please start sntp first !
current time : Thu Jan 01 00:00:00 1970

did not get a valid time from sntp server
current time : Sat Jun 30 12:25:21 2018

MQTT client example begin, free heap size:60640
[inf] iotx_device_info_init(40): device_info created successfully!

[dFatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0

failed ! net_connect returned -0x0052

MQTT client example begin, free heap size:42064
[inf] _ssl_client_init(175): Loading the CA root certificate ...
cert. version : 3
serial number : 04:00:00:00:00:01:15:4B:5A:C3:94
issuer name : C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA
subject name : C=BE, O=GlobalSign nv-sa, OU=Root CA, CN=GlobalSign Root CA
issued on : 1998-09-01 12:00:00
expires on : 2028-01-28 12:00:00
signed using : RSA with SHA1
RSA key size : 2048 bits
basic constraints : CA=true
key usage : Key Cert Sign, CRL Sign
[inf] _ssl_parse_crt(142): crt content:451
[inf] _ssl_client_init(185): ok (0 skipped)
[inf] TLSConnectNetwork(360): Connecting to a1WxVtI1pGm.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883...
[inf] TLSConnectNetwork(363): failed ! net_connect returned -0x0052
[inf] HAL_SSL_Destroy(465): handle is NULL
[log_err] iotx_mc_connect(2254): TCP or TLS Connection failed
[inf] utils_network_ssl_write(295): ssl write fail, code=-28928, str=
[inf] HAL_SSL_Destroy(465): handle is NULL
MQTT construct failed
MQTT client example end, free heap size:42064

怎么更新阿里云SDK

外置4M flash,SPI模式使用QuadSPI 模式。Step5中编译参数spi_size_map应该如何选择。

如果需要更新阿里云SDK是不是只要更新platforms/aliyun/IoT-SDK_V2.0即可。

串口中断接受数据存储到8266并打印

@ustccw 你好,其实我昨天做了一个简单的测试,串口接受的数据提取到一个变量Rxbuffer中,然后新建一个任务,通过任务的方式查询这个变量,然后把Rxbuffer中保存的数据打印出来,数据要能被内部程序处理才能进一步编程,但效果是这样的,回显并不代表了数据就存储到8266里了
1

2

3

test.zip

设备影子创建错误

调用 IOT_Shadow_Construct 时会因 HAL_MutexCreate 返回 NULL 报错 create mutex failed。
文件路径:./esp8266-aliyun/platforms/aliyun/IoT-SDK_V2.0/src/shadow/shadow.c
_ _20180513114141

串口中断问题

使用串口中断的时候,出现意想不到的事情,执行uart_init_new()之后,中断发生了,我在中断处理函数uart0_rx_intr_handler()中的任何操作都没有执行,甚至我把中断处理函数中的所有代码全部注释,esp8266全部会出现“tout xxxxx”或者“full xxxxxxxxxx tout xxxx”.最后就是在uart_init_new()中设置uart_intr.UART_RX_FifoFullIntrThresh无论设置什么值它都会在10个字符这里显示溢出(full)???我用的RTOS SDK是最新版的

ESP-01s模块无限重启

使用esp-01s模块,源代码除了wifi信息和iot参数未做其他任何改变,模块一直在重启。log如下:

rf cal sector: 507
tcpip_task_hdl : 40107a00, prio:10,stack:512
idle_task_hdl : 40107ab0,prio:0, stack:384
tim_task_hdl : 40107bf8, prio:2,stack:512
mode : sta(a0:20:a6:29:c1:6e)
add if0

******************************************
demo compile time:Jun  6 2018 05:17:16
******************************************
scandone

MQTT task started...
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 3
pm open phy_2,type:2 0 0
cnt
state: 5 -> 2 (fc0)
rm 0
pm close 7 0 0/3313838
WiFi disconnected, try to connect...
scandone
state: 2 -> 2 (b0)
state: 2 -> 0 (2)
reconnect
WiFi disconnected, try to connect...
scandone
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 3
pm open phy_2,type:2 0 0
cnt

connected with xxx-2.4G, channel 10
Fatal exception (0):
epc1=0xfbf8ffff
epc2=0x00000000
epcvaddr=0x40231569
depc=0x00000000
rtn_add=0x40105f14

Free Heap Size: 58664
Stack Point: 3fff0610
3fff0610: 3fff1938 000001fe 3ffeda48 401016d7
3fff0620: 00000061 001fe000 3fff34c8 402076bc
3fff0630: 3ffe87a8 00000000 3fff0017 401022f4
3fff0640: ffffff01 80000000 3ffeffe8 000001ff
3fff0650: 0000048c 00000000 3fff1938 40207790
3fff0660: 000001fd 55aa55aa 00000005 0000048c
3fff0670: 047868c0 000000db 000000dc aa55aa55
3fff0680: 3fff19e2 0000048c 0000ee68 3ffeda6c

同一TOPIC如何让多个设备收到?

开发中发现不同设备的TOPIC是不互通的。不知道是不是我哪里理解还不到位,在基于阿里云的平台下能否实现多个设备接收同一个TOPIC?

最新代码编译失败!!

xtensa-lx106-elf-gcc -L/home/esp8266-aliyun/esp8266-rtos-sdk/lib -L./components/aliyun/iotkit-embedded/output/release/lib -Wl,--gc-sections -nostdlib -T./ld/eagle.app.v6.new.2048.ld -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,--start-group -lcirom -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lmain -lfreertos -llwip -lssl -liot_sdk -ldriver -lmirom -lmbedtls -lopenssl -ljson -lsmartconfig -lspiffs user/.output/eagle/debug/lib/libuser.a components/aliyun/platform/.output/eagle/debug/lib/libplatform.a -lcrypto -Wl,--end-group -o .output/eagle/debug/image/eagle.app.v6.out
/opt/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld: cannot find -liot_sdk
collect2: error: ld returned 1 exit status
make: *** [/home/esp8266-aliyun/esp8266-rtos-sdk/Makefile:404:.output/eagle/debug/image/eagle.app.v6.out] 错误 1

xTaskCreate 调度问题

@ustccw 你好,库程序里的usermain.c里的xTaskCreate(mqtt_proc,...),我没有发现调度器vTaskStartScheduler()的身影,然后任务mqtt_proc就启动了,我想问在库程序里只要创建一个任务就默认开始运行了吗?
此外,tls连接是只要用库程序进行MQTT通讯就默认开始内置连接吗?

中断服务例程 xSemaphoreGiveFromISR crash 问题

@ustccw
你好,我在usermain.c中新建了一个二值信号量xsemaphore,调用了uart_int_new(),然后在uart.c的中断函数中新建了xsemaphoreGiveFromISR(),因为这一点,系统出现了故障,之前用队列的时候在中断这里也出现了问题,不知道什么原因,中断这里应怎么添加类似的程序呢?
xsemaphore
mistake

串口0接收数据,串口1 打印 log 问题

@ustccw
你好,我用其他CPU向串口0发送了一些数据,结果8266信号并未闪烁;
我把uart0_rx_intr_handler(void *para)中的uart_tx_one_char(UART0, ......);修改为了uart_tx_one_char(UART1, ......),串口1通过调试软件也未打印出数据;
我分别用库程序和最新RTOS SDK试过了,现象相同,用以往的SDK通讯过,接受到信号的时候蓝灯闪烁,通过uart1打印了数据,这次不知为什么?

ESP-07s模块不断出现 Fatal exception

使用esp-07s模块,源代码除了wifi信息和iot参数未做其他任何改变,模块一直在重启。log如下:

ets Jan 8 2013,rst cause:2, boot mode:(3,0)

load 0x40100000, len 2592, room 16
tail 0
chksum 0xf3
load 0x3ffe8000, len 764, room 8
tail 4
chksum 0x92
load 0x3ffe82fc, len 676, room 4
tail 0
chksum 0x22
csum 0x22

2nd boot version : 1.7(5d6f877)
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 16Mbit(1024KB+1024KB)
jump to run user1 @ 1000

OS SDK ver: 2.0.0(e271380) compiled @ Mar 30 2018 18:54:06
phy ver: 1055_1, pp ver: 10.7

rf cal sector: 507
tcpip_task_hdl : 40107a00, prio:10,stack:512
idle_task_hdl : 40107ab0,prio:0, stack:384
tim_task_hdl : 40107bf8, prio:2,stack:512
mode : sta(a0:20:a6:15:18:69)
add if0


demo compile time:Jun 26 2018 22:42:01


scandone

MQTT task started...
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 5
pm open phy_2,type:2 0 0
cnt

connected with hanhuakai-2.4G, channel 11
dhcp client start...
ip:192.168.0.115,mask:255.255.255.0,gw:192.168.0.1
WiFi connected
MQTT client example begin, free heap size:61184
[inf] iotx_device_info_init(40): device_info created successfully!
Fatal exception (20):
epc1=0x00000000
epc2=0x00000000
epc3=0x40100774
epcvaddr=0x00000000
depc=0x00000000
rtn_add=0x00000000

Free Heap Size: 59104
Stack Point: 3fff6340
3fff6340: 401020f3 00000004 40101b0c 40101b4f
3fff6350: 00000000 401021d6 00000000 3fff6376
3fff6360: 0000000a 00000061 3fff637b 00000001
3fff6370: 5ffffe00 31360000 00343831 40102920
3fff6380: 00000000 00000000 00000000 40102360
3fff6390: 40102078 00000008 0000002a 00000000
3fff63a0: 4010223b a5a5a5a5 3fff16bd 401022f4
3fff63b0: 00000061 00000000 3fff1680 401003f8

执行./gen_misc.sh 时无法选择配置

如题,执行./gen_misc.sh ,系统会直接打印出gen_misc.sh中的文本内容并开始编译。

问题是我这边的FLASH是DOUT模式的,如果不能选择编译模式的话生成的固件在我的模块上就没法工作,请大手子指教。

执行 ./gen_misc.sh 出错

如题,执行的时候会直接把gen_misc.sh里的文本内容打印出来,而不是开始生成固件文件的流程。在官方镜像和cygwin下都是一样的现象。请问如何解决?

最新版本的编译失败

$ ./gen_misc.sh
./gen_misc.sh:行2: $'\r': 未找到命令
./gen_misc.sh:行10: $'\r': 未找到命令
./gen_misc.sh:行13: $'\r': 未找到命令
/home/esp8266-aliyun-demo/esp8266-rtos-sdk
/home/esp8266-aliyun-demo/bin
./gen_misc.sh:行16: $'\r': 未找到命令
gen_misc.sh version 20150911

./gen_misc.sh:行19: $'\r': 未找到命令
./gen_misc.sh:行99: 语法错误: 未预期的文件结尾

使用串口1 打印问题

@ustccw 你好,之前切换串口都是取消uart.c中的一句 os_install_putc1注释,现在这样的办法在库程序中还有效吗?串口我需要和其他cpu通信,初看了一下程序通过串口打印信息的方式有很多,不知道有没有关联

内存申请,程序跑飞

就运行到下面这里就跑飞了,

EXAMPLE_TRACE("Initialize MQTT parameter");
    if (NULL == (msg_buf = (char *)HAL_Malloc(MQTT_MSGLEN))) {
        EXAMPLE_TRACE("not enough memory");
        rc = -1;
        goto do_exit;
    } 

   if (NULL == (msg_readbuf = (char *)HAL_Malloc(MQTT_MSGLEN))) {
        EXAMPLE_TRACE("not enough memory");
        rc = -1;
        goto do_exit;
    }

下面是打印的log

rf cal sector: 1019
tcpip_task_hdl : 40107a00, prio:10,stack:512
idle_task_hdl : 40107ab0,prio:0, stack:384
tim_task_hdl : 40107bf8, prio:2,stack:512
mode : sta(60:01:94:0f:fb:b1)
add if0


demo compile time:May 27 2018 12:48:05


scandone

MQTT task started...
scandone
state: 0 -> 2 (b0)
state: 2 -> 3 (0)
state: 3 -> 5 (10)
add 0
aid 4
pm open phy_2,type:2 0 0
cnt

connected with wowo-WiFi, channel 6
dhcp client start...
ip:192.168.0.117,mask:255.255.255.0,gw:192.168.0.1
WiFi connected
Initializing SNTP
please start sntp first !
current time : Thu Jan 01 00:00:00 1970

did not get a valid time from sntp server
current time : Sun May 27 12:54:27 2018

MQTT client example begin, free heap size:60640
Initialize MQTT parameter
Initialize MQTT parameter done
[inf] iotx_device_info_init(40): device_info created successfully!
Initialize MQTT parameterFatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0Fatal exception (0<0xa2>@r<0x85><0xc4>P<0xb1><0xb5><0xb1>K<0xed>t<0xa5>dr<0xd7>.@<0xe9><0xf9>.<0xa9><0xd1><0xaa><0xa1>Ko8a /t<0xb5>$v'<0xe1><0xea><0xc9><0xb1>T<0xb1><0xb1><0xb1><0xa9><0xa9><0xc4>P<0x9b><0xac><0xa9><0xb5><0xf9><0xb1><0x85><0xa2><0xfc>nzAl )<0xe9>m~<0xb1>t[!<0xf9>(P<0xb1>+t<0xc7>,<0xb1>@j|<0xbd><0xe5><0xb5><0xf9><0xb1><0x89><0xf8>nzAn )<0xe9>m~<0xb1>Z[!<0xf9>(P<0xb1>+t<0xc7><0xad>r@j|<0xbd><0xf5><0xb5><0xf9><0xb9><0x89><0xf8>nzAl )<0xe9>m~<0xb1>P[<0xe1>r<0xa7>(<0xb1><0xab><0xa2>8<0xa1><0xad><0x87><0xe9><0xf9>.<0xbd><0x04>r<0xf9>+<0xb5><0xb1>Xh<0xa9><0xb5><0xec><0xbd><0xe1><0xe1>b<0x05><0x95>v<0xa7><0xa8><0xa1><0xc5>"<0xe1><0xa2><0x88>dA<0xe2><0xd1><0xb5><0x91><0xe5>N<0xb8>`A#<0xc9>-Ae<0xe1>*<0xad><0x89><0x04>X<0xb5>[p<0xd1>h<0xb1><0x8b><0xa1>Z<0xb1><0x8b><0xa1>Z i~P<0xb7><0xa8>vA<0xee>v<0x9b>(P<0xb1><0xb1><0x81><0xa2><0xfc>OS SDK ver: 2.0.0(e271380) compiled @ Mar 30 2018 18:54:06
phy ver: 1055_1, pp ver: 10.7

rf cal sector: 1019
tcpip_task_hdl : 40107a00, prio:10,stack:512
idle_task_hdl : 40107ab0,prio:0, stack:384
tim_task_hdl : 40107bf8, prio:2,stack:512
mode : sta(60:01:94:0f:fb:b1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.