LV01-01-AliOSThings-06-HelloWorld工程目录
本文主要是mk3080的HelloWorld工程目录分析的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。
点击查看使用工具及版本
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设备开发指南 | 阿里云生活服务平台开发手册——蓝牙设备开发一节中的内容 |
一、工程顶层目录
接下来就是分析一下我们工程顶层目录 helloworld_mk3080 下的文件都是什么。我们使用ls -a
简单查看一下这个 helloworld_mk3080 目录下都有哪些文件:
我们还可以安装tree命令来查看:
1 | hk@vm:~/6AliOS/helloworld_mk3080$ tree -a -L 1 |
各个目录具体说明如下:
二、board目录
接下来我们来看一下board目录,我们使用下面的命令查看:
1 | hk@vm:~/6AliOS/helloworld_mk3080$ tree -a board/ |
三、out目录
我们先来看一下out目录下有什么:
1 | hk@vm:~/6AliOS/helloworld_mk3080$ tree -a out -L 1 |
后边学习源码以及编译原理的时候会再学习config目录,这里我们先来了解一下 helloworld_mk3080@mk3080 目录。
1. 几个常用命令
1.1 file
我们可以使用man命令查看file命令的说明,此命令用于查看文件信息:
1 | SYNOPSIS |
1.2 readelf
此命令用于查看elf文件详情
1 | SYNOPSIS |
这个命令选项有很多,用到了再查就好了。
1.3 hexdump
此命令用于查看hex、bin文件详情:
1 | SYNOPSIS |
2. config
这个目录后边学习编译原理的时候会再学习,这里先忽略。
3. helloworld_mk3080@mk3080
我们先看一下 helloworld_mk3080@mk3080目录下的文件:
1 | hk@vm:~/6AliOS/helloworld_mk3080/out$ tree -a helloworld_mk3080@mk3080 -L 1 |
3.1 binary目录
我们看一下都有哪些文件:
1 | hk@vm:~/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080$ tree -a binary/ -L 1 |
这里简单介绍一下这些文件,具体详细的可以看单片机的相关笔记,在学习单片机的过程中,有详细了解过bin文件、hex文件和elf文件的内容。
- (1)bin文件
.bin 就是二进制文件,cpu就是从这个.bin文件中取值,它存放在flash里面 是data数据。
- (2)elf文件
elf 是linux系统特有的。.elf文件可以直接在linux系统里直接执行,里面包括很多跟linux,跟硬件架构相关的信息,但是在mk3080上,是不能执行的。在遇到很难解决的bug时,会查看elf文件进行分析,我们可以通过file命令查看elf文件的一些信息:
1 | hk@vm:~/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/binary$ file helloworld_mk3080@mk3080.elf |
上边我们会发现还有一个elf文件,名字为helloworld_mk3080@mk3080.stripped.elf,这个stripped是什么意思?这个文件其实是由strip命令处理得到的,这个命令的功能是用于从文件中去除指定符号或调试信息,可以针对一般文件与函数库文件进行操作,能够减少文件占用空间大小。
我们还可以通过带选项的readelf命令来查看elf文件信息:
1 | hk@vm:~/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/binary$ readelf helloworld_mk3080@mk3080.elf -h |
- (3)hex文件
51、STM8等单片机中经常烧录的就是.hex文件 ,它是包含描述信息的bin文件 ,必须通过专用工具进行烧录。
- (4).csv文件
在AliOS Things编译输出的成果物中这个文件是整个可执行程序,占用的ROM 和 RAM空间:
1 | hk@vm:~/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/binary$ cat helloworld_mk3080@mk3080_map.csv |
3.2 libraries目录
Alios Things 包含很多功能组件,为了便于编译管理,它会把每个组件生成.a文件,之后进行统一链接:
这些就是一些静态库文件,后边学习编译的时候会了解什么是静态库。如何查看静态库信息?我们可以通过readelf命令:
1 | hk@vm:~/6AliOS/helloworld_mk3080/out/helloworld_mk3080@mk3080/libraries$ readelf app_adapter.a -h |