前言

forum.jpg


在上一篇文章中简单介绍了如何在涂鸦智能平台创建(创建涂鸦智能设备)我们自定义的智能设备,今天就来介绍如何搭建开发环境,sdk相关文件介绍,以及如何编译生成我们的应用固件等,为之后进一步开发做好准备。 文章所涉及的资料和源码,小伙伴可以在我的github:
https://github.com/astonb/tuya_platform中获取。好了,开始我们的主题吧,let‘s go~

开发环境搭建

首先说明的是,我们本次是基于涂鸦的一款wifi模组:TYWE1S(因为之前项目还有剩余几块芯片,大家可以自行选择或者其他模组), 这块模组其本质是esp8266~, 相信很多小伙伴再熟悉不过了,是不是倍感亲切~

forum.jpg


因此开发环境搭建其实和esp8266过程基本一致,可以选择在windows下msys32搭建或者直接在linux环境, 这里我选择在虚拟机Ubuntu中搭建(纯属个人爱好)。

下载

sdk

压缩包, 如:


tysdk_for_esp8266_3.0.1.tar.gz, 可以到涂鸦官方

github

https://github.com/TuyaInc/tysdk_for_esp8266

或直接到本人的github下载。下载后将sdk压缩包放到

虚拟机

Ubuntu和Windows的共享文件夹下(当然这里你也可以使用ssh等工具直接发送到Ubuntu中),

如图:

forum.jpg


在Ubuntu中使用使用解压命令:

CSS
      tar -zxvf tysdk_for_esp8266_3.0.1.tar.gz

forum.jpg


得到
tysdk_output/tysdk_for_esp8266

forum.jpg

这里我们直接将tysdk_for_esp8266直接拷贝出去,去掉没必要的一级目录(这个操作可有可无)

下载交叉工具链:xtensa-lx106-elf, 这个工具链是编译esp8266用的工具链是完全一样的,同样也把工具链放到共享文件夹中,然后再拷贝到Ubuntu中/opt目录下(这里目录可根据自己习惯),并解压:

CSS
tar -zxvf xtensa-lx106-elf-ty-4.8.2.tar.gz

得到工具链:xtensa-lx106-elf-ty-4.8.2, 如图:

forum.jpg

设置环境变量, 将工具链路径设置为环境变量,这样就可以在其他路径中直接使用工具链中的编译指令编译我们的工程代码了。

需要注意的是这里使用的工具链路径一定要是绝对路径,且指向工具链文件夹下的bin文件,如:
/opt/xtensa-lx106-elf-ty-4.8.2/bin

forum.jpg


然后,通过export命令导出环境变量,即设置:

Bash
export PATH=/opt/xtensa-lx106-elf-ty-4.8.2/bin:$PATH   

接着通过:echo $PATH命令,查看我们是否设置成功:

forum.jpg


编译示例工程

至此,开发环境搭建完毕,接着我们去尝试编译sdk中提供的几个示例工程代码,以此验证我们开发环境是否成功。

首先进入:

sdk

路径/app, 可以看到有如下文件,

forum.jpg


简单介绍下,各个文件作用:

build_app_release.sh: 编译工程脚本,且生成无调试信息版本的固件,产品正式发布版本,会屏蔽掉程序一些调试打印代码,以减少固件大小。

build_app.sh: 编译工程脚本,且生成有调试信息版本的固件,产品调试阶段版本

gen_misc.sh:设备配置脚本, 如spi速度,模式,大小等,这里我们无需关心

Makefile:工程主Makefile,build_app_release.sh或build_app.sh最终调用的目标

make_rule: Makefile的规则文件, 这里我们无需关心

package:像是一个测试文件,没用到,无需关心

tuya_common:里面存放了一些涂鸦提供的函数接口头文件,想了解涂鸦sdk有哪些相关api可以看看这里的头文件声明和介绍。

tuya_user: 存放了几个示例工程,之后我们就要基于示例工程来编写我们的应用程序

接着我们尝试,输入以下命令:

CSS
sh build_app.sh esp_12F_plug 1.0.0

forum.jpg


如果生成如下如图所示信息,表示编译成功:

forum.jpg

编译成功后,生成了我们的烧录固件,其地址在:sdk路径/bin/upgrade

forum.jpg


小结

前期的工作完成, 下一篇我会继续介绍相关代码,讲解对接涂鸦云需要主要哪些方面,当然这次是基于sdk来介绍的,后续我也会介绍另外一个对接方式:mcu串口对接