【鸿蒙开发】Hi3861学习笔记-从经典的 Hello World 开启鸿蒙世界 ...

打印 上一主题 下一主题

主题 987|帖子 987|积分 2961

00. 目次


  
01. OpenHarmony简介

OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目的是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联财产的繁荣发展。
内核层


  • 内核子系统:接纳多内核(Linux内核或者LiteOS)设计,支持针对不同资源受限设备选用恰当的OS内核。内核抽象层(KAL,Kernel Abstract Layer)通过屏蔽多内核差异,对上层提供底子的内核能力,包括历程/线程管理、内存管理、文件系统、网络管理和外设管理等。
  • 驱动子系统:驱动框架(HDF)是系统硬件生态开放的底子,提供同一外设访问能力和驱动开发、管理框架。
系统服务层
系统服务层是OpenHarmony的核心能力聚集,通过框架层对应用程序提供服务。该层包罗以下几个部分:


  • 系统基本能力子系统集:为分布式应用在多设备上的运行、调度、迁移等操作提供了底子能力,由分布式软总线、分布式数据管理、分布式任务调度、公共底子库、多模输入、图形、安全、AI等子系统组成。
  • 底子软件服务子系统集:提供公共的、通用的软件服务,由事件通知、电话、多媒体、DFX(Design For X) 等子系统组成。
  • 增强软件服务子系统集:提供针对不同设备的、差异化的能力增强型软件服务,由智慧屏专有业务、穿着专有业务、IoT专有业务等子系统组成。
  • 硬件服务子系统集:提供硬件服务,由位置服务、用户IAM、穿着专有硬件服务、IoT专有硬件服务等子系统组成。
根据不同设备形态的摆设情况,底子软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。
框架层
框架层为应用开发提供了C/C++/JS等多语言的用户程序框架和Ability框架,适用于JS语言的ArkUI框架,以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,设备支持的API也会有所不同。
应用层
应用层包括系统应用和第三方非系统应用。应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。此中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及同一的数据访问抽象。基于FA/PA开发的应用,可以大概实现特定的业务功能,支持跨设备调度与分发,为用户提供同等、高效的应用体验。
02. 编写Hello World程序源代码

2.1 打开名为 helloworld.c 的文件
在工程项目 src/applications/sample/wifi-iot/app/demolink 目次下,点击打开名为 helloworld.c 的文件,将内里的内容替换成以下内容:
  1. #include <stdio.h>
  2. #include "ohos_init.h"
  3. void Helloworld(void)
  4. {
  5.   printf("\n\n\n--------------   Hello, World!   --------------------\n\n\n");
  6. }
  7. SYS_RUN(Helloworld);
复制代码
在上述代码实例中,ohos_init.h 是 HarmonyOS 特有的头文件。SYS_RUN 是 ohos_init.h 中定义的一个宏,它的作用是让一个函数在系统启动时自动实行。
2.2 编写用于将业务构建成静态库的 BUILD.gn (应用级编译脚本)
修改工程项目 src/applications/sample/wifi-iot/app/demolink 目次下的 BUILD.gn 文件,将内容修改为:
  1. static_library("example_demolink") {
  2.     sources = [
  3.         "helloworld.c"
  4.     ]
  5.     include_dirs = [
  6.         "//utils/native/lite/include",
  7.         
  8.     ]
  9. }
复制代码
BUILD.gn文件由三部分内容(目的、源文件、头文件路径)构成,需由开发者完成填写。


  • static_library中指定业务模块的编译结果,为静态库文件libmy_example.a,开发者根据实际情况完成填写。
  • sources中指定静态库.a所依赖的.c文件及其路径,若路径中包罗"//“则表示绝对路径(此处为代码根路径),若不包罗”//"则表示相对路径。
  • include_dirs中指定source所需要依赖的.h文件路径。
2.3 编写模块 BUILD.gn 文件,指定需参与构建的特性模块(模块级编译脚本)
修改 OpenHarmony 源代码的 applications/sample/wifi-iot/app 目次下的 BUILD.gn 文件,将内容修改为:
  1. import("//build/lite/config/component/lite_component.gni")
  2. lite_component("app") {
  3.     features = [
  4.         "demolink:example_demolink",
  5.     ]
  6. }
复制代码
为什么有两个 BUILD.gn 文件?这里读者可以先不消管,我们会在下一小节中进行详细解说。(着实,这两个 BUILD.gn文件所处的路径和作用是不一样的。第一个 BUILD.gn 文件路径为:src/applications/sample/wifi-iot/app/demolink,用于将业务构建成静态库。第二个 BUILD.gn 文件路径为:src/applications/sample/wifi-iot/app,指定需参与构建的特性模块。两个 BUILD.gn 文件的路径如下图所示:)



第二个 BUILD.gn 文件 features 字段指定业务模块的路径和目的,demolink 是相对路径,是第一个 BUILD.gn 文件所在的路径,即 src/applications/sample/wifi-iot/app/demolink。example_demolink 是目的,指向:
src/applications/sample/wifi-iot/app/demolink/BUILD.gn 中的static_library(“example_demolink”)。
03. 将源代码编译成二进制文件

3.1 在 VS Code 的左侧按钮中,打开 DevEco Device Tool 开发工具,在开发工具中先点击“Clean”,再点击“Build”进行源代码编译。

编译范例说明Clean清除中间文件和目的文件。Build只编译已修改的文件。Rebuild全量编译代码。 ​ 假如源代码只是小范围的修改,功能没有发生变化,编译代码时可以只点击 Build,如许编译就会比较快,假如源代码修改范围比较大,功能已经发生了改变,则编译时需要先点击 Clean,然后再点击 Build 进行编译。作者本人前期编译代码时,习惯于只是点击 Build,导致出现一个现象就是程序烧录进去后的结果和自己预想的不同等,此中主要缘故原由就是没有点击 Clean 清除中间文件和目的文件。后来点击了 Clean,再点击 Build 进行编译,出现的结果就和自己预想的同等了。
3.2 编译完成后,会在VS Code 终端中提示“SUCCESS”字样,说明编译乐成。
   src/out/hispark_pegasus/wifiiot_hispark_pegasus/Hi3861_wifiiot_app_allinone.bin
  

04. 将二进制文件烧录到开发板

在 VS Code 的左侧按钮中,在开发工具中点击“Upload”进行源代码烧录,当看到“please reset device…”时,按下开发板复位按键,对开发板进行复位。然后程序就会自动进行烧录,当出现“SUCCESS”字样时,程序烧录乐成。

05. 通过串口检察程序的运行结果

有两种方式可以通过串口检察程序的运行结果,一种是通过 DevEco Device Tool 的 Monitor 检察,别的一种是通过串口调试助手检察。
5.1 通过 DevEco Device Tool 的 Monitor 检察

点击右边的“接纳箱”图标,克制 Monitor。

5.2 通过串口调试助手检察
打开串口调试助手,选择正确的端标语,波特率设置为115200,点击打开串口,按下开发板的 RST 复位键,即可在串口调试助手上检察到程序运行结果。

留意:下次烧录程序前,需要关闭 DevEco Device Tool 的 Monitor 或者串口调试助手,否则会由于串口被占用,导致程序烧录任务无法乐成。
06. 附录


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表