LV01-01-AliOSThings-04-mk3080

本文主要是mk3080开发板简介与mk3080工程创建、编译和烧写运行的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
Windows版本 windows11
Ubuntu版本 Ubuntu22.04的64位版本
VMware® Workstation 16 Pro 16.2.3 build-19376536
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
点击查看本文参考资料
分类 网址 说明
官方网站 阿里云 阿里云官网主页
阿里生活物联平台 生活物联网平台(飞燕平台)主页
AliGenie 天猫精灵开放平台AliGenie主页
阿里物联网平台 阿里物联网平台主页
Bluetooth 技术网站 蓝牙协议规范什么的可以来这里找
Telink Telink | Chips for a Smarter IoT (telink-semi.com)
Telink中文官网
开发手册 AliOS Things开发指南 AliOS Things开发指南,这里是最新版本,可以直接从官网找到
AliOS Things开发指南 AliOS Things应用开发指南,这里应该是3.3版本的完整开发文档
AliOS Things开发指南(3.0) AliOS Things应用开发指南,这里应该是3.0版本的完整开发文档
生活物联网平台开发文档 生活物联网平台(飞燕平台)开发文档
《设备端开发指南》
Wi-Fi IoT品类定义与功能开发 天猫精灵IoT开放平台——Wi-Fi IoT品类定义与功能开发
硬件平台 mk3080 WiFi开发板 WiFi开发板使用指南-阿里云开发者社区
esp8266开发板 一个教程:ESP8266-NodeMCU开发板详解-太极创客 (taichi-maker.com)
TLSR8258 Datasheet Datasheet for Telink BLE + IEEE802.15.4 MultiStandard Wireless SoC TLSR8258
参考资料 AliOS Things 3.0 应用开发指南 这个只是一篇参考文章,里面是一些环境搭建相关的,可以参考
IP知识百科 - 华为 (huawei.com) IP的一些相关知识点
点击查看相关文件下载
分类 网址 说明
蓝牙规范相关文档 Core Specification 5.2 核心规格 5.2,该规范定义了创建可互操作的Bluetooth 设备所需的技术。
《Core_v5.2.pdf》
Mesh Model(v1.1) 本Bluetooth 规范定义了模型(以及它们所需的状态和消息),这些模型用于在mesh 网络中的节点上执行基本功能,超出了Bluetooth Mesh 配置文件 规范中定义的基础模型。
本规范包括定义跨设备类型标准功能的通用模型,以及支持关键mesh 场景的模型,如照明控制、传感器、时间和场景。
《MshMDL_v1.1.pdf》
Mesh Profile(v1.0.1) 该Bluetooth 规范定义了基本要求,以实现可互操作的mesh 网络解决方案,用于Bluetooth 低能量无线技术。
《MshPRFv1.0.1.pdf》
Mesh Device Properties 本规范包含Bluetooth Mesh 配置文件 和Bluetooth Mesh 模型规范所要求的设备属性的定义。
但是跟之前的有些区别,我主要看的之前的版本:《MMeshDeviceProperties_v1.2.pdf》
GATT Specification Supplement GATT Specification Supplement | Bluetooth® Technology Website。
好像可以在线看:《GATT Specification Supplement》
Assigned Numbers GATT的一些类型定义可以在这里找。
AliOS Things alios-things/AliOS-Things Gitee上的AliOSThings SDK源码仓库
alibaba/AliOS-Things GitHub上的AliOSThings SDK源码仓库
天猫精灵蓝牙Mesh协议栈 alibaba-archive/genie-bt-mesh-stack GitHub上的天猫精灵蓝牙Mesh协议栈源码仓库。
之前是在alibaba/genie-bt-mesh-stack这个仓库。
写笔记的时候最新提交为faf523618a6a2560090fc423222b9db80984bb7a
蓝牙Mesh设备开发指南 阿里云生活服务平台开发手册——蓝牙设备开发一节中的内容

一、mk3080平台

1. mk3080开发板

mk3080 指的是这个开发板的名称,内部有一个基于wifi SOC芯片,我们可以在这里看到相关资料:WiFi开发板使用指南-阿里云开发者社区 (aliyun.com),实际的开发板如下图:

image-20231105202910612

上图中的WiFi开发板是基于RTL8710BN方案的WiFi模块。该模块已经将所有可供用户使用的IO资源引出,便于客户使用。用户可直接通过USB口对开发板进行调试和烧录,并可使用开发板引出的各种接口进行功能开发和测试。

2. 产品特性与参数

产品特性如下:

  • WiFi模块:WIFI8710-2400
  • PCB板尺寸:53.5 x31mm
  • PCB板厚:1.6mm
  • USB转UART主芯片:FTDI FT232RL,SSOP-28。这个USB转串口的主芯片需要我们在windows电脑上安装相关的驱动。
  • 焊接工艺:设计为A面SMT工艺+A面焊接工艺(或波峰焊)

主要参数

  • 典型供电电压:5.0V ±0.5V,500mA(供电接口刚好是笔记本电脑USB输出口的标准参数)
  • 耐温:-20℃~+85℃
  • 通信距离:≥30米

3. 开发板接口

3.1 结构尺寸图

TOP图 PCB板的顶层如下:

image.jpeg

除非另有规定,所有尺寸公差均满足GB/T1804-m。

3.2 引脚分配图

BOTTOM PCB板的底层如下图:

image.png

3.3 引脚接口描述

image.png

二、创建mk3080工程

1. 创建工程

我们执行以下命令创建工程:

1
aos create project -b mk3080 -t helloworld_demo helloworld_mk3080

创建完成后如下图所示:

image-20231105203920814

2. 编译工程

2.1 编译命令

我们通过以下命令进行编译:

1
aos make

不出意外,直接报错了,就很离谱:

image-20231105205825775

前面还会有两个警告,这倒是无所谓:

image-20231105205853372

那上边的报错原因是什么?原来是脚本内部存在大量的语法错误:

image-20231105220308005

这是合并版本的时候没有解决导致的,似乎只出现于mk3080开发板,我试了esp8266,没有问题,这也就是rel3.1.0分支后来的提交中产生的,但是并未解决,由于该版本已经比较老了,似乎并没有人在维护,连官方文档都不知道去哪里了,到这里,放弃了自己拉取分支,直接使用课程提供的SDK源码。等后边学习的差不多,对SDK有一定的了解后再看看呢能否解决上述问题吧。为什么不直接,拉取课程中使用的源码版本?因为课程中的.git目录被删除,无法得知是哪一次的提交。当更换了SDK后,我们重新创建并编译,编译成功会有以下打印信息:

image-20231105221916063

2.2 编译信息简析

接下来分析一下编译过程产生的打印信息吧,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
hk@vm:~/6AliOS$ cd helloworld_mk3080/
hk@vm:~/6AliOS/helloworld_mk3080$ aos make
# 打印aos版本号
aos-cube version: 0.5.11
# 检查目标板目录和组件
Check if required tools for mk3080 exist
Parsing all components ...
# 开始编译,打印编译的配置信息 app是什么 开发板是什么
Build Configuration:
====================
App: helloworld_mk3080
Board: mk3080
====================

Making config file for first time
# 检查工程当中使用的组件是否完整
processing components: helloworld_mk3080 mk3080 app_adapter
boot version:boot-1.0.0-20231106.071817
# 下面都是我们编译helloworld工程,所需要的AliOS Things提供的组件 重点分析helloworld工程的原因
*** All Components: helloworld_mk3080 mk3080 app_adapter osal_aos mcu_rtl8710bn kernel_init network rhino arch_armv7m newlib_stub lwip netmgr debug ulog lib_rbtree vfs kv yloop bootloader
boot version:boot-1.0.0-20231106.071817
Build AOS Now
# 获取编译工具链路径
TOOLCHAIN_PATH=
# 根据工程中使用的组件进行编译----生成.o文件
Compiling helloworld_mk3080
Compiling board_mk3080
Compiling app_adapter
Compiling osal_aos
Compiling mcu_rtl8710bn
Compiling kernel_init
Compiling rhino
Compiling arch_armv7m
cc1: warning: /home/hk/AliOS-Things-SDK/platform/mcu/rtl8710bn/sdk/component/common/mbed/targets/cmsis/rtl8711b: not a directory
cc1: warning: /home/hk/AliOS-Things-SDK/platform/mcu/rtl8710bn/sdk/component/common/mbed/targets/cmsis/rtl8711b: not a directory
Compiling lwip
Compiling newlib_stub
Compiling netmgr
Compiling debug
Compiling ulog
Compiling lib_rbtree
Compiling vfs
Compiling kv
Compiling yloop
# 根据不同的组件生成 不同组件的.a 静态库
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/helloworld_mk3080.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/board_mk3080.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/app_adapter.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/osal_aos.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/mcu_rtl8710bn.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/kernel_init.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/rhino.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/arch_armv7m.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/newlib_stub.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/lwip.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/netmgr.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/debug.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/ulog.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/lib_rbtree.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/kv.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/vfs.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/yloop.a
# 生成可执行程序
Making helloworld_mk3080@mk3080.elf

Making helloworld_mk3080@mk3080.bin # 重点关注这个.bin ,它最终要烧录到开发板中
Making helloworld_mk3080@mk3080.hex

AOS MEMORY MAP
|=================================================================|
| MODULE | ROM | RAM |
|=================================================================|
| arch_armv7m | 2173 | 0 |
| board_mk3080 | 624 | 36 |
| debug | 3471 | 24 |
| helloworld_mk3080 | 141 | 12 |
| kernel_init | 90 | 0 |
| kv | 2325 | 24 |
| libc_nano | 11395 | 464 |
| libgcc | 3384 | 0 |
| lib_platform | 5068 | 3256 |
| lib_wlan | 321 | 4 |
| mcu_rtl8710bn | 9139 | 1156 |
| newlib_stub | 306 | 0 |
| osal_aos | 986 | 0 |
| rhino | 12205 | 7688 |
| ulog | 377 | 7 |
| vfs | 1092 | 1113 |
| yloop | 1306 | 32 |
| *fill* | 99 | 32 |
|=================================================================|
| TOTAL (bytes) | 54502 | 13848 |
|=================================================================|
Linux64 /home/hk/AliOS-Things-SDK helloworld_mk3080 mk3080 /home/hk/AliOS-Things-SDK/build/compiler/gcc-arm-none-eabi/Linux64/bin/
Generate Standard Images: /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/binary/helloworld_mk3080@mk3080.bin
Generate Raw OTA image: /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/binary/helloworld_mk3080@mk3080_ota.bin ...
Generate Compressed OTA image: /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/binary/helloworld_mk3080@mk3080_ota.bin.xz ...
57924
0da747f54f8f8d8136a5a3a29d4bffa2
36272
1ee8d42fdd197d79c026f3fc4c049bcb
# 编译完成信息
Build complete: helloworld_mk3080@mk3080

# 第二次编译 编译生成的目标为boot程序,这是RTL8710的特性,也是AliOS Things做的bootloader,做OTA使用
Making config file for first time
processing components: mk3080 mcu_rtl8710bn
boot version:boot-1.0.0-20231106.071822
*** All Components: mk3080 mcu_rtl8710bn bootloader
boot version:boot-1.0.0-20231106.071822
Build AOS Second Boot Now
TOOLCHAIN_PATH=
Compiling board_mk3080
Compiling mcu_rtl8710bn
Compiling bootloader
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/board_mk3080_2ndboot.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/mcu_rtl8710bn_2ndboot.a
Making /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries/bootloader.a
Making helloworld_mk3080@mk3080.2ndboot.elf

Making helloworld_mk3080@mk3080.2ndboot.hex
Making helloworld_mk3080@mk3080.2ndboot.bin

AOS MEMORY MAP
|=================================================================|
| MODULE | ROM | RAM |
|=================================================================|
| board_mk3080_2ndboot | 372 | 0 |
| bootloader | 3145 | 64 |
| libc | 148 | 0 |
| mcu_rtl8710bn_2ndboot | 1826 | 1192 |
| ota_updater | 12013 | 20 |
| *fill* | 24 | 12 |
|=================================================================|
| TOTAL (bytes) | 17528 | 1288 |
|=================================================================|
Linux64 /home/hk/AliOS-Things-SDK helloworld_mk3080 mk3080 /home/hk/AliOS-Things-SDK/build/compiler/gcc-arm-none-eabi/Linux64/bin/
Generate Second Boot Images: /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/binary/mk3080.2ndboot.bin
Generate ALL Standard Flash Images: /home/hk/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/binary/helloworld_mk3080@mk3080.2ndboot.bin
# 编译完成
Build 2nd boot complete: helloworld_mk3080@mk3080

3. 烧写到开发板

3.1 要烧写哪一个文件?

我们编译完成后,在 out/helloworld_mk3080@mk3080/binary目录中生成了很多文件:

image-20231106072455660

我们烧写到开发板中的是哪一个?我们暂时只需要关注这个 helloworld_mk3080@mk3080.bin 文件即可,我们要将它烧录到开发板中。

3.2 开发板配置

3.2.1 连接电脑

通过USB线连接开发板与电脑,然后就会发现在【此电脑】→【管理】→【设备管理器】→【端口(COM和LPT)】中会出现一个串口:

image-20231106073241404

我这里是直接识别到了,其实按理来说应该是会有一个驱动的,忘记是自动安装的还是手动安装了,这个没有深究,要是没有识别的话(挂个感叹号)就可以装一个CH340串口驱动试一下,一般USB转串口的驱动都是装的这个。

3.2.2 进入烧录状态

然后就是配置开发板进入烧录模式:

  • (1)使用杜邦线短接PA30和GND。
image-20200617163051678

(2)按下复位键,复位键旁边有一个RST的标识。

image-20231106073722314

(3)打开串口,这一步是在烧写软件中进行(打开串口后才能正长进入烧录模式),成功进入烧录模式的话,会有一个绿灯开始快闪。

image-20231106073806381

(4)成功进入烧录模式后,就可以断开PA30与GND连接了。

(5)然后对烧录软件进行配置,可以看3.3节,最后点击烧写软件中的download进行烧录。

image-20231106074030239

3.3 烧写bin文件

在这里我们使用的烧写软件是amebaz-image-tool,这个软件在网上似乎很难找,但是有人上传到了github(caowent/amebaz-image-tool-v2.2: ),我下载下来了,放在自己的gitee仓库了:AliOS-Things-Prj: AliOS-Things学习 - Gitee.com,我们下载后解压。会得到这样一个可执行文件:

image-20231106214158818

我们双击打开,界面如下:

image-20231106214218366

对工具配置如下:

image-20231106214759910

然后就会开始烧录bin文件,烧录完成后会有如下提示:

image-20231106214928361

烧录结束会自动关闭串口。

3.4 串口查看打印信息

这里使用串口调试工具连接串口查看打印信息,可以使用SecureCRT,我这里使用的是MobaXterm,创建会话的时候参数如下:

image-20231106215222481

然后我们复位开发板,就会看到如下打印信息啦:

image-20231106215330983

下边的就是我们的demo的打印信息,其他的我们先不关心。