admin 管理员组

文章数量: 887018

1、参考文档

  • TencentOS tiny端云对接开发指南(IoTHub)以及Tencent tiny源码库
  • TencentOS-tiny官网

2、云端配置

登陆腾讯云,点击“云产品”然后选择“企业运用”然后点击“物联网通信”。或直接点击https://console.cloud.tencent/iothub

2.1创建新产品

认证方式:指定了设备通过哪种方式与云端进行双向认证. 默认的证书方式相对于密钥认证安全性高一点, 但是问题在于证书方式需要在嵌入式设备端存储证书同时实现证书的相关处理, 对设备的RAM和ROM要求较高, 相对而言, 密钥认证的方式资源占用量就小点, 由于我们主要支持的设备都是小型嵌入式设备, 因此选用密钥认证。
数据格式:指的是设备和云端进行数据交互时候使用的格式, json格式为文本字符串, 可读性高, 并且便于解析, 对于功能复杂的设备交互而已比较理想, 但是对于小型设备或是定制设备, 数据单一, 或是有自定义的格式(二进制或是文本), 这种时候, 用自定义的数据格式, 一方面节约流量, 另一方面比较灵活.。

创建产品成功后,产品ID在嵌入式设备程序编写中需要用到。这个产品ID由系统云端自动生成。

2.2在该产品下创建新设备

添加完设备后, 会告知设备对应的密钥. 该密钥将会用于之后设备与平台通信时的认证:

2.3设置Topic

在“权限列表中”可以看到Topic对应的操作权限:
平台默认配置了三类的Topic, 用于执行发布和订阅.,这里之所以是三类而不是三个, 是因为Topic里使用了变量.。

  • JVCV9TOV4R实际上是productID;
  • EC20_mqtt_tese是在平台设置的变量, 即设备名;
  • control和data以及event为Topic名字.;

2.4云日志

在平台侧都设置好后, 我们在之后的测试过程或是通信过程中, 往往还需要查看平台是否收到了设备发送上来的消息, 对消息执行了哪些操作, 消息的具体内容(payload)是什么. 腾讯云提供了物联网通信产品的"云日志"功能和腾讯云组件"消息队列CMQ"。

3.hal库工程的配置

TencentOS tiny中适配了一些市场上主流的开发板,很大程度上方便了开发者,唯一的不足之处就是注释少、底层驱动文件全在一个大文件夹下,不方便我们这些初学者移植。故本文教会大家如何从零开始移植TencentOS tiny到小熊派开发板。

3.1先在stm32cube上配置出一个使用了串口USART1和LPUART1的工程。

  1. 新建一个Project
  2. 选择stm32l431
  3. 配置外部高速时钟
  4. 配置debug
  5. 配置USART1 波特率选择默认的115200Bit/s,传输位为8Bits,停止位为1。
  6. 配置LPUART1 波特率默认的209700Bit/s,传输位为7Bits,停止位为1。需要将波特率改为115200Bit/s,传输位为8Bits。中断也要配置。
  7. 时钟选择,将HCLK配置为80M。
    8.设置Project
    到此,一个有两个串口的hal库工程配置完成。

4.tos的移植

4.1在项目工程文件夹中将TencentOS的核心文件arch、kernel、osal夹复制过来并将其放在TencentOS文件夹下。## 4.2在TencentOS文件夹下新建TOS-CONFIG文件夹,并在其中新建tos_config.h,这个文件是配置tos配置文件,也可以从支持的开发板文件复制过来。

#ifndef _TOS_CONFIG_H_
#define  _TOS_CONFIG_H_

#include "stm32l4xx.h"

#define TOS_CFG_TASK_PRIO_MAX           10u

#define TOS_CFG_ROUND_ROBIN_EN          1u

#define TOS_CFG_OBJECT_VERIFY_EN        1u

#define TOS_CFG_TASK_DYNAMIC_CREATE_EN  0u

#define TOS_CFG_EVENT_EN                1u

#define TOS_CFG_MMBLK_EN                1u

#define TOS_CFG_MMHEAP_EN               1u

#define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE        0x8000

#define TOS_CFG_MUTEX_EN                1u

#define TOS_CFG_TIMER_EN                1u

#define TOS_CFG_PWR_MGR_EN              0u

#define TOS_CFG_TICKLESS_EN             0u

#define TOS_CFG_SEM_EN                  1u

#define TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN      1u

#define TOS_CFG_FAULT_BACKTRACE_EN      0u

#define TOS_CFG_IDLE_TASK_STK_SIZE      512u

#define TOS_CFG_CPU_TICK_PER_SECOND     1000u

#define TOS_CFG_CPU_CLOCK               (SystemCoreClock)

#define TOS_CFG_TIMER_AS_PROC           1u

#endif

4.3在工程项目下新建三个工程分组,分别为kernel、arch、config

根据下图将EC20\TencentOS\kernel\core中所有的.c文件添加到kernel工程分组中
同理,将EC20\TencentOS\arch\arm\arm-v7m\common路径文件下的tos_cpu.c的文件,以及
EC20\TencentOS\arch\arm\arm-v7m\cortex-m3\armcc文件夹下的port_c.c、port_s.S(添加时选择所有文件才会显示.s文件)
添加到arch工程文件下
最后再将EC20\TencentOS\TOS-CONFIG文件夹下的tos_config.h文件添加到config分组中。

**

第一次写博客,这博客太长了,写不下去了,我直接把我的工程文件链接放下面吧,需要的自己下载。这个例程我是自己移植过来的,能和云端正常通信。因为我自己也是在做这方面的项目,写博客真不是我的强项。

小熊派 移植TencentOS-tiny+EC20+MQTT对接腾讯云项目工程

**
如果你需要将这个工程运用到你自己的项目中,与云端进行通讯的话,你只需要修改mqtt_config.h文件中的产品ID,以及秘钥等相关配置就可以了。

项目的工程文件夹

程序打开图

本文标签: 腾讯 小熊 TencentOS Tiny MQTT