zoukankan      html  css  js  c++  java
  • STM32云平台连接培训20180814

    MQTT基于TCP,发布订阅模式,一对多,多对一,TCP需要client主动建立connect,server发送connectack

    CoAP基于UDP,请求/应答模式,数据量也相对HTTP要小

    HTTP基于TCP,请求应答模式,数据量较大

    1. MQTT协议

    • Message Queuing Telemetry Transport消息队列遥测传输
    • 轻量级协议
    • 服务器/客户端模式,桩-Cloud-手机,桩和手机不直接通信,Cloud为数据转发,叫Broker
    • 发布/订阅,Publish/Subscribe, 端端不直接指定通信,而是通过主题Topic,一端只会像server发布主题,另一端只会订阅主题,如温度
    • Publish/Puback, Subscribe/Suback
    • Example, 典型的Connect/Connack控制报文,Publish/Puback控制报文,Subscribe/Suback控制报文
    • 开源:服务器Mosquito, 客户端Paho,百度云/阿里云的SDK就是运行于MCU的客户端,也参考了Paho,在Paho基础上又封装了一层

    1.1. 名词解释

    • Qos:服务质量等级
    • Clean session: 持久会话的概念,0为服务器保存之前的消息,1为服务器会丢掉消息,缓存的概念
    • Retain: 保留消息
    • Willxxx: 遗嘱消息:发生异常时,通知其他客户端

    1.2. MQTT服务结构图

    1.3. 帧格式1 

    1.4. 帧格式2

    1.5. MQTT通信

    1.6. MQTT和TLS

    建立TLS,设备端认证服务器,服务器认证设备端。前者常用,服务器生成根证书,设备端需要放置证书,通过证书来验证服务器的连接信息。通过TCP建立连接的消息都是通过TLS加密。

    过程

    建立TCP->握手加密->非对称到对称的过程->产生对称加密密钥->客户端先sayhello,支持xxxx, 随机数1->服务器sayhello,支持xxx,随机数2->证书发给客户端->客户端使用根证书验证服务器的证书->验证通过,从证书中拿到公钥,生成随机数3->利用公钥+3个随机数,生成对称密钥。

    安全等级要求不是特别高,一般只会在设备端下载相同的根证书,用来验证服务器,不会用服务器再来验证设备端,如果需要验证,则每个设备端都需要不同的证书,也就是工厂烧写不同的信息

    2. FOTA升级:firmware over the air

    • 云端推送
    • 设备端接收和升级逻辑
    • 原位升级/pingpong升级
    • 文件:加密,压缩,差分patch
    • 原有程序打断,续传,触发更新
    • 安全,传输过程

    2.1. 三种升级方式(ST使用固件冗余方式,应用程序下载完,通知Bootloader更新)

    2.2. ST FOTA Demo:STM32F7,HTTP负责下载,按下按键跳到Bootloader更新固件

    2.3. 存储空间划分

    2.4. FOTA流程

    2.5. FOTA升级软件架构

    2.6. 下载文件格式*.bin

    下载过程

    FOTA说明

    • 终端实现MQTT客户端和HTTP客户端,MQTT负责客户端/服务器通信,HTTP负责文件传输
    • 下载文件,bin文件,插入特定信息,对数据块进行校验
    • QSPIflash中建立一个结构体,存放下载的一些信息,如版本,大小,地址,断点续传等等
    • HTTP和HTTPS,HTTPS需要更多的验证过程
  • 相关阅读:
    第八周进度条
    对老师的评价
    构建之法阅读笔记03
    构建之法阅读笔记02
    第七周进度条
    团队冲刺第二周07
    团队冲刺第二周06
    Java jdbc 连接oracle
    Java 生成验证码
    Oracle 触发器的简单命令
  • 原文地址:https://www.cnblogs.com/aaronLinux/p/9473112.html
Copyright © 2011-2022 走看看