HelloWorld!物联网开发
相关的知识准备:
1. 使用的是润和满天星Pegasus智能家居开发套件(Hi3861v100):
主控板+底板+拓展板:
2. 相关的学习资料如下:
海思官方的相关学习资料:
https://developer.hisilicon.com/postDetail?tid=0206112614830760003 直达
Hihope相关资料:(Hihope是润和的海思官方社区,同时拥有自己的官网)http://www.hihope.org/download/download.aspx?mtt=47 直达
润和 HiHope 社区 开源项目集合:
https://gitee.com/hihopeorg 直达
润和满天星系列Pegasus智能家居OpenHarmony开发套件资料汇总:
https://gitee.com/hihope_iot/HiHope_Pegasus_Doc 直达
华清远见Hi3861鸿蒙开发板:
http://wiki.farsightdev.com/index.php?title=%E5%8D%8E%E6%B8%85%E8%BF%9C%E8%A7%81Hi3861%E9%B8%BF%E8%92%99%E5%BC%80%E5%8F%91%E6%9D%BF 直达
HiSpark Pegasus T1 HiSpark Pegasus T1开发板介绍及教程资料【初期的时候需要看这个里面的markdown文档】 https://gitee.com/HiSpark/hi3861_hdu_iot_application/tree/master/doc 直达
【会继续补充】
3. 学习进度:
2023年5月16日:
完成vscode环境搭建和第一个demo案例的下载
调试。点灯成功,如图:
2023年5月17日
确定了主要开发的方式,选用”hi3861_hdu_iot_application-master“作为开发的主要技术参考。并且将具体的下载引入到了个人csdn中的下载。
2023年5月19日
开始具体学习帮助文档中的相关内容:
(成功运行较多的例程,但是发现都是控制led的灯亮,都是控制传感器的程序,在部分架构上使用的函数是有区别的,这说明库函数中提供了很多实现相似功能的函数,还有我在主程序中并没有看到经典的main()函数,【这一定是我这种总是用c语言的菜鸟不明白的😭😮💨】为了进一步学习鸿蒙系统的架构和函数的剖析,购买了,已经列为支线学习任务。小编会另外单独开栏目,分享自己在学习harmonyos的过程和感悟哦。
这里补充:
2023年5月28日:通过学习==OpenHarmony设备开发入门【2022年最新版】==了解Hi3861 的启动流程,为了不让本文章看起来过于的冗长,具体学习请参见:
2023年5月28日
为了快速对协议和各种借口进行入门,先选择参考套件中附送的《Harmonyos IoT设备开发实战》开始学习。
海思Hi3861v芯片简介:
在下面的图中很好的简介了唱用的借口的名称的由来和简单介绍:
缩写 | 名称 | 简介 |
---|---|---|
SRAM | 待补充 | 待补充 |
GPIO | General Purpose Input/Output,GPIO | 通用输入/输出 |
ADC | Analog to DigitalConverter | 模数转换器 |
PWM | Pulse WidthModulation,PWM | 脉宽调制 |
UART | Universal Asynchronous Receiver and Transmitter,UART | 通用异步收发器 |
SPI | Synchronous Peripheral Interface,SPI | 串行外设接口 |
I2C | The Inter Integrated Circuit,I2C | 内部集成电路 |
SDIO | Secure Digital Input/Output,SDIO | 安全数字输入输出 |
I2S | Inter-IC Sound,12S,I2S | 内部集成电路音频 |
搭建Harmony环境的需要
- 硬件:需要套件,pc,一台编译服务器,一个无线路由器,一个可以访问互联网的有线网络
- 软件:需要Ubuntu(编译服务器系统),vscode,HUAWEI DevEco Device Tool, CH340 USB 转串口芯片驱动软件,PuTTY(支持SSH,Telnet等远程登录协议,同时也支持串口调试)。
【虽然现在只用到vdcode和HUAWEI DevEco Device Tool,CH340就能实现简单的开发环境功能,不知道随着学习会不会用到没有用到的内容】
映射samba服务的共享目录到本地磁盘
如果你的编译服务器Ubuntu20.4系统上已经成功的安装了samba服务,并且配置了共享的目录,那么在同一个网络中的Windows主机就可以将Samba服务的共享目录映射到本地磁盘。在映射到本地磁盘后,就可以使用Windows上的编辑器修改Samba服务中的共享目录中的文件,例如使用Vs code 编辑代码。
具体流程(虽然现在还没有用到)详情见本书P26;
用HarmonyOS控制I/O设备
- 从编写HelloWorld
【这一部分开始做好准备工作】
在这部分内容中最重要的是学会在哪里构建编译文件,还有要学会在BUILD.gn中构建脚本
开发者编写业务时,务必先在./applications/sample/wifi-iot/app 路径下新建一个目录(或
一套目录结构),用于存放业务源码文件。
例如:在 app 下新增业务 my_first_app,其中 hello_world.c 为业务代码,BUILD.gn 为编
译脚本,具体规划目录结构如下:
.└── applications
└── sample
└── wifi-iot
└── app
│── my_first_app
│ │── hello_world.c
│ └── BUILD.gn
└── BUILD.gn
在 hello_world.c 中新建业务入口函数 HelloWorld,并实现业务逻辑。并在代码最下方,
使用 HarmonyOS 启动恢复模块接口 SYS_RUN()启动业务。(SYS_RUN 定义在 ohos_init.h 文
件中)
#include<stdio.h>
#include<ohos_intit.h"
void hello(void)
{
printf("hello world!\n");
}
SYS_RUN(hello); //思考为什么在这个最简单的程序,程序运行的时候的调用是怎么开始的?
上述的这个问题需要在《沉浸式剖析OpenHarmonyi源代码》去找到相应的结果
待补充 (上面的黄字说明了一部分情况)
如规划目录结构展示,BUILD.gn 文件由三部分内容(目标、源文件、头文件路径)构成,需由
开发者完成填写。以 my_first_app 为例,需要创
建./applications/sample/wifi-iot/app/my_first_app/BUILD.gn,并完如下配置。
static_library("myapp")
{
sources = [ "hello_world.c"
]
include_dirs = [ "//utils/native/liteos/include"
]
}
static_library 中指定业务模块的编译结果,为静态库文件 libmyapp.a,开发者根据实际
情况完成填写。
sources中指定静态库.a所依赖的.c文件及其路径,若路径中包含"//“则表示绝对路径(此
处为代码根路径),若不包含”//"则表示相对路径。
include_dirs 中指定 source 所需要依赖的.h 文件路径
配置./applications/sample/wifi-iot/app/BUILD.gn 文件,在 features 字段中增加索引,使
目标模块参与编译。features 字段指定业务模块的路径和目标,以 my_first_app 举例,features
字段配置如下。
features = [
" my_first_app: myapp",
]
my_first_app 是相对路径,指向./applications/sample/wifi-iot/app/my_first_app/BUILD.gn。
myapp 是目标,指向./applications/sample/wifi-iot/app/my_first_app/BUILD.gn 中的
static_library(“myapp”)。
1.2 HarmonyOS对驱动函数的封装:
OpenHarmony 为轻量系统提供了一套简单的驱动封装接口,函数的定义相关头文件位
于“base\iot_hardware\peripheral\interfaces\kits (英语学习:peripheral【(计算机的)外部设备】 Enumerates【列举了】)
但是这里只有对头函数的定义,具体想找具体函数的实现在这里找:
总结:
在看相关驱动函数的时候如果看不懂@啥意思呢,就看这篇文章:C++ 以及keil qt等常见软件注释 @brief @param @return