当前位置: 首页 > news >正文

TuyaOS开发学习笔记(1)——NB-IoT开发搭建环境、编译烧写(MT2625)

一、搭建环境

1.1 官方资料

TuyaOS

1.2 安装VMware


官网下载:https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_0
百度网盘:https://pan.baidu.com/s/1oN7H81GV0g6cD9zsydg6vg 提取码:mrn9
阿里云盘:https://www.aliyundrive.com/s/bLRLG49hSJq

1.3 安装Ubuntu


官网下载:https://ubuntu.com/download/desktop
阿里云镜像:http://mirrors.aliyun.com/ubuntu-releases/
百度网盘:https://pan.baidu.com/s/1LzE–l-5k7PLQWhIp-ktBw 提取码:347p

1.3.1 设置网络

VMware Workstation 中,点击虚拟机>>设置

然后在网络适配器中,改成NET 模式,点击确定

确保网络连接正常,可以在终端ping一下百度

1.4 安装Visual Studio Code

官网下载:https://code.visualstudio.com
百度网盘:https://pan.baidu.com/s/1R62HT0PVmVzMwOXtCmIQwA 提取码:g9fb

1.4.1 SSH免密钥设置

Linux 开启 SSH 服务器

  1. 检查SSH是否已安装。
dpkg -l | grep ssh

如果输出中包含"openssh-server"或"ssh"等关键词,表示SSH已安装。如果没有安装,您可以使用以下命令安装SSH:

sudo apt-get install openssh-server
  1. 启动SSH服务
    一旦SSH安装完成,您可以使用以下命令启动SSH服务:
sudo service ssh start

Windows 10/11 默认安装了 SSH 客户端

Windows 主机,可以使用 PowerShell 进行如下设置。

  • 假定虚拟机的用户名为:vscode
  • 虚拟机的 IP 地址为:192.168.56.105
  1. 生成 SSH Key。
ssh-keygen -t rsa -b 4096
  1. 填写虚拟机的用户名及密码(IP 地址和用户名,根据自己的情况做更改)。
$USER_AT_HOST="vscode@192.168.56.105"

3.指明要上传的公钥所在位置。

$PUBKEYPATH="$HOME\.ssh\id_rsa.pub"
  1. 传到并设置,需要输入服务器用户密码。
$pubKey=(Get-Content "$PUBKEYPATH" | Out-String); ssh "$USER_AT_HOST" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '${pubKey}' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

1.4.2 安装Remote SSH插件

  1. 在插件市场选择并安装 Remote SSH 插件。


  2. 设置并连接 SSH,示例中的 IP 地址为 192.168.56.105。

1.5 安装Tuya Wind IDE

  1. 启动 Visual Studio Code 后,参考下图流程在插件市场搜索并安装 Tuya Wind IDE。

  2. 按下图箭头顺序所示,打开 Tuya Wind IDE 登录页面,登录的账号和密码为 涂鸦 IoT 开发平台 的账号和密码。

1.6 下载开发框架

登录后,选择 主页 > 新建开发框架

下载对应的 TuyaOS 开发框架。并且在对应的开发环境下使用。单击 完成,可下载开发包。

二、编译

2.1 创建应用

展开左侧 software/TuyaOS/apps 目录,并在右键单击 apps 目录后选择 Create Project

2.2 编译应用

  1. 展开左侧 software/TuyaOS/apps/xxx 目录,并在右键单击 xxx 目录后选择 Build Project。如果路径选择不正确,会在右下角报错提示。

  2. 选择 Build Project 后,在跳出的文本框内输入编译固件的版本号(格式为 x.x.x)后,按回车键确认。其中需注意,蓝牙 Mesh 和 Beacon 相关应用版本格式为 x.x,其它应用版本格式为 x.x.x。

  3. 等待 IDE 终端开始自动下载工具链,下载完成后自动编译生成固件产物并告知固件产物路径。

    提示错误要加mt2625gl_前缀,因为对于NM1-GL这个平台来说,必须带mt2625gl_这个前缀,否则编译会失败。但 Build Project 脚本没有帮我们添加,这时我们要手动执行编译脚本 build_app.sh

右键 build_app.sh,选择在集成终端打开

执行编译脚本 build_app.sh,第一个参数“apps/xxx/”表示app所在的路径,“mt2625gl_xxx”表示app名称,第三个参数“1.0.0”表示版本号。

./build_app.sh apps/tuyaos_demo_nb_sample mt2625gl_tuyaos_demo_nb_sample 1.0.0

编译成功:

如果提示错误找不到python命令

查看 解决方法:python: not found问题

编译生成固件产物在 software/TuyaOS/vendor/mtk2625_sdk281/mt2625_os/project/mt2625_evb/apps/tuya_alpha/output/mt2625gl_tuyaos_demo_nb_sample/1.0.0

  • mt2625gl_flash_download.cfg:下载配置文件
  • mt2625gl_tuyaos_demo_nb_sample_qio_1.0.0.bin:QIO 是生产固件, 其中有 bootloader
  • mt2625gl_tuyaos_demo_nb_sample_ug_1.0.0.bin:UG 是全量升级固件

可右键下载全部文件到到Windows中

2.3 清除编译内容

./build_app.sh apps/tuyaos_demo_nb_sample mt2625gl_tuyaos_demo_nb_sample 1.0.0 clean

三、烧录

pc/tools 目录中提供了相应芯片的烧写工具。右键下载到Windows中。

解压并打开 FlashTool

  1. 选择COM口,接UART0的串口
  2. 打开下载配置文件 mt2625gl_flash_download.cfg,必须跟固件在同一目录下
  3. 点击Start
  4. 短按POWER按键开机或RESET按键,开始烧录

烧录完成:

  1. 串口调试,接UART2的串口

• 由 Leung 写于 2023 年 9 月 2 日

• 参考:Tuya Wind IDE

相关文章:

TuyaOS开发学习笔记(1)——NB-IoT开发搭建环境、编译烧写(MT2625)

一、搭建环境 1.1 官方资料 TuyaOS 1.2 安装VMware 官网下载:https://customerconnect.vmware.com/en/downloads/info/slug/desktop_end_user_computing/vmware_workstation_pro/16_0 百度网盘:https://pan.baidu.com/s/1oN7H81GV0g6cD9zsydg6vg 提取…...

Css 将div设置透明度,并向上移50px,盖住上面的元素一部分

可以使用CSS中的opacity和position属性来实现。 首先,将div的opacity属性设置为小于1的值,比如0.5,这样就可以设置透明度了。其次,将div的position设置为relative,然后再将它向上移动50px,即可盖住上面的元…...

HTTPS安全通信和SSL Pinning

随着互联网的迅速发展,网络通信安全问题日益凸显。在这一背景下,HTTPS作为一种加密通信协议得到了广泛应用,以保障用户的数据隐私和信息安全。本文将介绍HTTPS的基本原理、发展历程,以及与之相关的中间人攻击和防护方法。 1. HTT…...

PHP自己的框架PDO数据表前缀、alias、model、table、join方法实现(完善篇九--结束)

一、实现功能,数据表前缀、alias、model、table、join方法实现 二、表前缀实现 1、config.php增加表前缀 DB_PEX>fa_,//数据库前缀 2、增加表前缀方法function.php function model($table){$modelnew ModelBase($table,config("DB_PEX"));return $m…...

华为OD:敏感字段加密

题目描述: 给定一个由多个命令字组成的命令字符串: 1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号; 2、命令字之间以一个或多个下划线_进行分割; 3、可以通过两个双引号”"来标识包含下划线…...

IDEA新建SpringBoot项目时启动编译报错:Error:java: 无效的源发行版: 17

文章目录 原因检查解决步骤修改jdk修改SpringBoot版本 原因 出现这种错误的原因可能是: 本机默认使用(编译)的jdk与该项目所使用的jdk版本不同。 jdk版本不适用于这个Idea,很典型的一个例子就是使用的Idea是2020的,而…...

【云原生进阶之PaaS中间件】第一章Redis-2.3.3集群模式

1 集群模式 Redis集群是一个提供在多个Redis节点之间共享数据的程序集。它并不像Redis主从复制模式那样只提供一个master节点提供写服务,而是会提供多个master节点提供写服务,每个master节点中存储的数据都不一样,这些数据通过数据分片的方式被自动分割到不同的master节点上…...

游戏发行商能够提供什么服务?

游戏发行商可以为游戏开发者提供广泛的服务,以帮助他们将游戏成功地引入市场并取得更好的业绩。以下是游戏发行商可能提供的一些服务: 市场营销和宣传:发行商通常具有丰富的市场营销经验,可以制定并执行有效的宣传和营销策略。他们…...

Linux 多进程解决客户端与服务器端通信

写一个服务器端用多进程处理并发,使两个以上的客户端可以同时连接服务器端得到响应。每当接受一个新的连接就fork产生一个子进程,让子进程去处理这个连接,父进程只用来接受连接。 与多线程相比的不同点:多线程如果其中一个线程操…...

Scala的模式匹配

Scala的模式匹配 Scala 中的模式匹配类似于Java 中的 switch 语法:下面是java中switch代码: int i 10 switch (i) {case 10 :System.out.println("10");break; case 20 :System.out.println("20");break; default :System.out.pr…...

HttPClient简介及示例:学习如何与Web服务器进行通信

文章目录 前言一、引入依赖二、使用步骤1.创建被调用者2.创建调用者三、结果被调用者服务:调用者服务: 总结 前言 欢迎来到本篇博客,这是一个关于HttPClient的入门案例的指南。🎉 在今天的网络世界中,与服务器进行数据…...

STS4 New 安装Spring Bean Configuration File

背景介绍 在创建spring项目后,如果想想创建spring bean Configuration的时候,发下菜单没有这个选项,需要通过下载Spring Roo插件可满足该操作。 参考案例 参考地址: STS4 New 菜单没有Spring Bean Configuration File选项_SQZHA…...

Java经典面试题(异或运算)

不爱生姜不吃醋⭐️⭐️⭐️ 🌻如果本文有什么错误的话欢迎在评论区中指正哦💗 🌻看完之后觉得不错的话麻烦动动小手点个赞赞吧👍 🌻与其明天开始,不如现在行动!💪 🌻大家…...

No primary or single unique constructor found for interface java.util.List

1.问题描述 前端 请求的参数 是 query形式, 参数在url中 报错信息: java.lang.IllegalStateException: No primary or single unique constructor found for interface java.util.List2.解决办法 controller中的 请求方法 参数 加上 RequestParam...

C#关于WebService中File.Exists()处理远程路径的异常记录

目录 前言方案一打开网站对应的程序池的高级设置按下图步骤设置凭据重启网站若方案一未能解决,请继续尝试方案二👇 方案二从控制面板进入到 凭据管理器为windows凭据添加凭据点击**Windows凭据**,并点击**添加Windows凭据**键入远程路径的地址…...

JavaWeb_LeadNews_Day10-Xxljob, Redis实现定时热文章

JavaWeb_LeadNews_Day10-Xxljob, Redis实现定时热文章 xxl-job概述windows部署调度中心docker部署调度中心 xxl-job入门案例xxl-job分片广播热点文章定时计算思路分析具体实现热文章计算定时计算 查询文章接口改造来源Gitee xxl-job概述 windows部署调度中心 运行 xxl-job\do…...

【WebRTC---源码篇】(二:二)视频源VideoSourceBase

作用 这个类继承自VideoSourceInterface<webrtc::VideoFrame>模板类,并且可以处理webrtc::VideoFrame class VideoSourceBase : public VideoSourceInterface<webrtc::VideoFrame> 重要成员变量 struct SinkPair {SinkPair(VideoSinkInterface<webrtc::Vid…...

Linux_8_磁盘存储和文件系统

1 磁盘结构 1.1 设备文件 一切皆文件: open(),read(),write(),close() 设备文件:关联至一个设备驱动程序&#xff0c;进而能够跟与之对应硬件设备进行通信 设备号码: ​ 主设备号 major number,标识设备类型​ 次设备号 minor number,标识同一类型下的不同设备 设备类型:…...

VS + QT 封装带UI界面的DLL

一、创建编译DLL的项目 1.新建Qt Class Liabrary 2.新建项目&#xff0c;选择Qt Widgets Class 3.新建C类&#xff0c;可以在此类里面写算法函数用于调用。 4.下面是添加完Qt窗体类和C类之后的项目截图 5.修改头文件并编译 将uidemo_global.h中的ifdef内容复制到dialog.h上…...

逆向工程-架构真题(二十)

结构化程序设计采用自顶向下、逐步求精及模块化程序设计方法&#xff0c;通过&#xff08;&#xff09;三种基本控制结构可以构造出任何单入口单出口程序。 顺序、选择和嵌套顺序、分支和循环分支、并发和循环跳转、选择和并发 答案&#xff1a;B 解析&#xff1a; 结构化设…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...