设备接入 IOTDA-设备侧SDK相关问题:IoT Device SDK C Tiny相关问题

时间:2024-07-30 14:23:05

IoT Device SDK C Tiny相关问题

LiteOS操作系统层面相关技术问题解答。

请移步LiteOS社区

  1. 日志中出现诸如mqtt_imp_init: ###please implement mqtt by yourself####此类问题。

    首先检查编译架构中对于__attribute__ ((weak))函数的支持性,如果不支持,建议将这些函数全部注释掉;如果出现link_tcpip_imp_init:###please implement this function by yourself####,建议检查是否实现网络层的适配。

  2. 在使用SDK时发现某些任务执行顺序与任务优先级顺序不符?

    SDK中默认使用的优先级从大到小依次为0-31,用户可根据不同的操作系统自行调整相应任务的优先级。

  3. SDK移植流程主要包括哪些步骤?

    移植过程主要包括操作系统注册到OSAL层以及TCPIP注册到SAL层,同时可以根据需求进行模块化裁剪,详见开发指南

  4. 使用MQTT协议对接华为云时,返回错误码2

    具体日志如下所示

    图1 MQTT链接错误提示

    该问题为网络错误,首先建议用户检查开发板是否已经联网成功,如果网络联通,建议检查所要对接网络的IP地址或 域名 以及端口号是否正确,如linux环境下,可以ping所要对接的网络地址查看是否ping通。

  5. 客户在对接华为云时,出现网络断连接后,在恢复网络时设备没有自动重连。
    图2 断链没有重连日志提示

    日志中可见PAHO已经退出,设备已经与平台断开连接,主动下线。建议客户修改SDK目录中的network\mqtt\paho_mqtt\port\paho_mqtt_port.c文件中的函数__loop_entry()中的休眠时间1ms调大至100ms,具体为:osal_task_sleep(100),查看是否可以自动重连。

  6. 使用MQ TTS 对接华为云时,流程卡死在topic订阅阶段,参考日志如下所示。
    图3 流程卡死topic订阅日志提示

    请将iot_config.h文件中的宏CONFIG_PAHO_LOOPTIMEOUT调整为1000。

  7. 开发板使用MQTT对接华为云成功,但切换到MQTTS时对接失败

    可能是开发板内存不足导致,建议测试下开发板剩余内存,建议内存尽量大于60K,如在OpenHarmony L0设备中可以调用接口LOS_MemPoolSizeGet(m_aucSysMem0)获取总内存,LOS_MemTotalUsedGet(m_aucSysMem0)获取已使用内存,做差即可获取到剩余内存,如果移植了shell也可以通过free指令获取到当前内存情况。

  8. 采用MQTT对接华为云的正确日志如下所示,应如何解读?
    图4 MQTT正常建链日志提示

    日志中第3、4行是MQTT协议对接华为云必现日志,若使用MQTTS则会出现第2行日志;如果使用适配sal的tcpip协议则会出现第1行日志;若相应日志没有打印,建议根据文件link_main.c找到对应功能的初始化函数所对应的宏,之后在iotlink_config.h中检查对应的宏是否打开。

  9. 设备断电之后在IoTDA平台仍然可以看到设备在线?

    如果设备没有主动断链通知平台下线,则设备下线时间与代码中的MQTT心跳时间lifetime相关,为1.5倍的心跳时间,在MQTT建立连接时,连接参数中对lifetime进行设置即可。

  10. 目前已经移植了IoT Device SDK Tiny(附代码)的设备清单

    详见移植设备清单列表

support.huaweicloud.com/iothub_faq/iot_faq_01002.html