【XR806开发板试用】全网首发,对接腾讯云平台的血泪史
-
1.前面的话
在上次连夜肝出了华为云平台的帖子:https://bbs.aw-ol.com/topic/839/xr806开发板试用-轻松连上华为云实现物联网
之后,论坛里的反响平平,好评没有,点赞更无,抱着已完成任务成功白嫖一块板子的心态,把板子收在了盒子里,第二天,助手小姐姐跟我说为何不把腾讯云的做了,对于这个要求我其实是拒绝的,但是小助手姐姐说写的好的话,会有奖励,当时我就笑了,把我当什么人了,我缺你的奖励吗,我现在就想问一句:什么时候能发货?之所以要对接腾讯云其实是觉得腾讯云真的蛮好的(这句话不要写,包括括号),虽然本人跟腾讯没有一毛钱的关系,甚至曾找大佬内推简历后面换来一句已经招到了的回答,但是依然不能因此就否定它,他那清晰的文档,优雅的sdk代码,使我不能抗拒.
好了,说一点小笑话,调节一下气氛,进入正题2.好戏开场了
按照上一篇对接华为云的套路,我们首先来找官方sdk,茫茫文档中给我看到了那熟悉的身影:
文档地址在这,拿走不谢:
https://cloud.tencent.com/document/product/1081/48356
把sdk下载之后,熟练的放进thirdparty文件夹,这个时候依然要看文档,因为有些函数需要自己实现,具体是哪些呢,在这里:
https://cloud.tencent.com/document/product/1081/48389
这篇文档写了,我们要实现里面的这些接口,此处列举一二:
仔细一看,霍,好家伙还不少呢,但是不怕,都是打工人,谁怕谁啊,二话不说我就写,结果就给我给写出来了:
,写出来这些后就可以准备编译了吗?
nonono,我们还没做BUILD.gn文件呢,话不多说,直接教你写:# Copyright (c) 2020 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("//build/lite/config/component/lite_component.gni") import("//build/lite/ndk/ndk.gni") config("qcloud_sdk_config") { include_dirs = [ "sdk_src/internal_inc", "sdk_src/library", "include", "include/exports", "//kernel/liteos_m/kernel/include", # "//third_party/cmsis", "//third_party/mbedtls/include", "//third_party/mbedtls/include/mbedtls", ] } cflags = [ "-Wno-unused-variable" ] cflags += [ "-Wno-unused-but-set-variable" ] cflags += [ "-Wno-unused-parameter" ] cflags += [ "-Wno-sign-compare" ] cflags += [ "-Wno-unused-function" ] cflags += [ "-Wno-return-type" ] qcloud_sdk_sources = [ "sdk_src/network/socket/network_socket.c", "sdk_src/network/tls/network_tls.c", "sdk_src/network/network_interface.c", "sdk_src/utils/utils_list.c", "sdk_src/utils/utils_base64.c", "sdk_src/utils/qcloud_iot_ca.c", "sdk_src/utils/utils_aes.c", "sdk_src/utils/utils_getopt.c", "sdk_src/utils/utils_hmac.c", "sdk_src/utils/utils_md5.c", "sdk_src/utils/utils_sha1.c", "sdk_src/utils/json_parser.c", "sdk_src/utils/json_token.c", "sdk_src/utils/string_utils.c", "sdk_src/utils/utils_ringbuff.c", "sdk_src/utils/qcloud_iot_log.c", "sdk_src/utils/qcloud_iot_device.c", "sdk_src/utils/utils_timer.c", "sdk_src/protocol/mqtt/mqtt_client_common.c", "sdk_src/protocol/mqtt/mqtt_client_connect.c", "sdk_src/protocol/mqtt/mqtt_client_net.c", "sdk_src/protocol/mqtt/mqtt_client_publish.c", "sdk_src/protocol/mqtt/mqtt_client_subscribe.c", "sdk_src/protocol/mqtt/mqtt_client_unsubscribe.c", "sdk_src/protocol/mqtt/mqtt_client_yield.c", "sdk_src/protocol/mqtt/mqtt_client.c", "sdk_src/services/data_template/data_template_action.c", "sdk_src/services/data_template/data_template_client.c", "sdk_src/services/data_template/data_template_client_common.c", "sdk_src/services/data_template/data_template_client_json.c", "sdk_src/services/data_template/data_template_client_manager.c", "sdk_src/services/data_template/data_template_event.c", "platform/os/liteos_m/HAL_Device_liteos_m.c", "platform/os/liteos_m/HAL_OS_liteos_m.c", "platform/os/liteos_m/HAL_TCP_liteos_m.c", "platform/os/liteos_m/HAL_Timer_liteos_m.c", # "./os/liteos_m/HAL_TLS_mbedtls_liteos_m.c", # "./tls/mbedtls/HAL_DTLS_mbedtls.c", "platform/tls/mbedtls/HAL_TLS_mbedtls.c", ] lite_library("qcloud_sdk_static") { target_type = "static_library" sources = qcloud_sdk_sources public_configs = [ ":qcloud_sdk_config" ] } lite_library("qcloud_sdk_shared") { target_type = "shared_library" sources = qcloud_sdk_sources public_configs = [ ":qcloud_sdk_config" ] } ndk_lib("qcloud_ndk") { if (board_name != "hi3861v100") { lib_extension = ".so" deps = [ ":qcloud_sdk_shared" ] } else { deps = [ ":qcloud_sdk_static" ] } head_files = [ "//third_party/iot_link/network/mqtt/paho_mqtt/paho" ] }
整完之后就可以尝试一下有没有错误了.
3.在main里面写逻辑,处理事情
我们把官方sdk里面的点灯demo拿过来,直接新建一个demo文件夹,把文件放进去:
自己写好BUILD.gn,跟之前华为云对接一个套路噻,大家这么聪明,不用我多说了
然后在sample里面的sdk把这个文件夹开启编译:
这样就完成了代码的编写了,是不是很快乐呀4.开始编译(血与泪的旅程)
4.1首先出场的是utils_list
这个utils_list.h不能被系统识别的问题还真是头疼,经过两小时+的奋战,被我发现系统也有一个utils_list.h错误(忘了截图了),这就有点不讲武德了,竟然与代码的友好协商,我这样改:
终于把这个小家伙赶走了4.2 紧跟着mbedtils当然不让,是迎头痛击
编译出来有个mbedtls的错误(依然忘了截图),后面分析出来是某些编译宏没搞对吧,然后我一番查找,就把qcloud里面带的mbedtls里面的config.h拷贝出去,放到系统自带的mbedtls里面:
结果,当然是没用了,这我就纳闷了,难道系统的mbedtls库是提前编好的,不能更改了,带着这个疑问,我就翻遍了系统自带的文件,结果被我找到一个东西:
在device/xradio/xr806/xr_skylark/src/net/mbedtls-2.16.8
这里有一个mbedtls的源码,这下我就坐不住了,赶紧看看这个源码有没有参与编译,结果终于被我发现端倪,
这里指定了一个变量叫做MBEDTLS_CONFIG_FILE
,我就说我怎么老看到mbedtls有这种代码:
yes, 就说他了,说明他把config文件定向到了一个叫做<config-xr-mini-cliserv.h>
这个文件了, 那可就方便了,我改吧device/xradio/xr806/xr_skylark/include/net/mbedtls-2.16.8/mbedtls/configs/config-xr-mini-cliserv.h
终于是把mbedtls的错误给整好了,花了我又是2h+,我只想问人的一生有几个2h不说了,继续编译,这里需要注意的是,因为我们改的是系统的lib,所以需要在device/xradio/xr806/xr_skylark$
,目录执行make lib -j
,让系统重新生成库4.3 内存不足让我心如死灰
终于是把两个大的拦路虎给搞定了,真开心,虽然时间已经晚上10点多了我可一点都不困哟,想着马上就可以大功告成赢取助手小姐姐
咳咳,呃,亲手发送的礼品了,迫不及待得编译,运行,结果刚上来就是闷头一棍,
执行wifi扫描都内存不:
, 虽然我知道这mbedtls费内存但也不至于到这步田地吧,连wifi扫描都不让那板子不废了嘛,苦于对芯片不熟,内存方面的资料是一点没有,于是我当机立断在论坛里面发帖控诉为什么只有这么一点内存:
https://bbs.aw-ol.com/topic/854/wifi扫描提示内存不足-288kb可用的有多少?_=1640440348789
想着第二天应该有人解答吧,结果等今天下午一看,没人理我,想了一下,小姐姐这么热情的邀请我把腾讯云对接出来,我得兑现我的承诺呀,继续磕吧.
突然我想到了我这个工程是官方的一个叫wlan_ble的proect上面弄个,会不会是ble蓝牙占了内存呀,因为是sram运行,会把code也给拷过来嘛
想到这里,我的毛孔全部都舒张起来了,一股头皮发麻的感觉涌上脚心,这就弄.于是我不慌不忙的就把ble给禁了,在device/xradio/xr806/xr_skylark$目录执行make menuconfig
:
小子还想阴我老人家,昨天是我大意了,没有闪,这招就送你下去.
弄起来一跑,爽歪歪5.就这样,腾讯云就对接成功了
就这样,一小时之前我终于成功把demo跑了起来:
看个动图一睹为快吧:
这是网页调试的效果,其实如果就这些还不足以我说腾讯云多好,还有一个东西就是腾讯连连,这个东西很有用,大家可以了解一下6.总结
对接云平台其实说起来一点不复杂,难的在于各种细节,跟系统,编译器,sdk斗智斗勇,其乐无穷.
其实说起结果来,那是很开心了,但是过程那是相当曲折,其实我本人已经对接过很多次腾讯云了,这次之所以能在短时间内把腾讯云这个整明白也得益于以前的经验,所以积累很重要. -
@cszzlsw 在 【XR806开发板试用】全网首发,对接腾讯云平台的血泪史 中说:
后,论坛里的反响平平,好评没有,点赞更无,抱着已完成任务成功白嫖一块板子的心态,把板子收在了盒子里,第二天,助手小姐姐跟我说为何不把腾讯云的做了,对于这个要求我其实是拒绝的,但是小助手姐姐说写的好的话,会有奖励,当
反响平平可能是因为你走得太快了,其它人都还在编译电灯,而你都上云了,走在时代的前列线上,给你点赞!
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号