鸿蒙嵌入式系统开发原理与实战 课件 第3章 OpenHarmony开发入门_第1页
鸿蒙嵌入式系统开发原理与实战 课件 第3章 OpenHarmony开发入门_第2页
鸿蒙嵌入式系统开发原理与实战 课件 第3章 OpenHarmony开发入门_第3页
鸿蒙嵌入式系统开发原理与实战 课件 第3章 OpenHarmony开发入门_第4页
鸿蒙嵌入式系统开发原理与实战 课件 第3章 OpenHarmony开发入门_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章OpenHarmony开发入门Openharmony源码结构开发示例——第一个程序HelloWorld程序设计流程代码的执行流程Openharmony源码结构

OpenHarmony设计比较合理,实现了ARCH(架构)、SOC(芯片)、Board(开发板)三层隔离,降低了代码的耦合性。Openharmony源码结构

目录名描述applications应用程序样例,包括camera等,是开发者添加自定义应用的主要目录arkArkUI/ArkTS框架(应用开发核心)base基础软件子系统(核心服务与库)build构建系统(编译、链接、打包工具链)developtools开发工具(IDE插件、调试工具)device设备硬件适配层(芯片/开发板源码)docs说明文档domains增强软件服务子系统集drivers驱动子系统foundation系统基础能力子系统集interface接口定义层(跨子系统统一接口)kernel内核子系统out编译输出目录(编译后生成,非源码自带)prebuilts预编译工具链(编译器、链接器等)productdefine产品定义配置(设备类型、组件选择)test测试子系统third_party第三方开源组件(如:JSON、MQTT库)utils常用的工具集vendor厂商配置层(芯片厂商定制化配置)build.py编译脚本文件Openharmony源码结构开发示例——第一个程序HelloWorld程序设计流程代码的执行流程程序设计流程

1.创建自定义app目录和文件

首先在applications/sample/wifi-iot/app目录下创建一个名为myfirstapp文件夹。程序设计流程

在该文件夹下,新建helloworld.c和BUILD.gn文件。程序设计流程

编写helloworld.c的程序:#include<stdio.h>

#include"ohos_init.h"

//在OpenHarmony中,避免使用main作为自定义函数名voidHelloWorld(void){printf("Helloworld!\n");}

SYS_RUN(HelloWorld);//系统启动后,调用自定义的函数//省略此句,自定义函数无法运行程序设计流程

编写用于将业务构建成静态库的BUILD.gn文件:#自定义名为mylibrary的静态库static_library("mylibrary"){#静态库所包含的源码sources=["helloworld.c"#代码应缩进4个空格]

#源文件中头文件的路径include_dirs=["//utils/native/lite/include",#ohos_init.h文件所在位置] //代表源码根目录}程序设计流程

2.修改配置

在applications/sample/wifi-iot/app目录下打开BUILD.gn,这个文件是系统自带的构建脚本,与myfirstapp中新建的gn文件同名,这个文件可以聚合该目录下所有子应用的构建目标,作为统一编译入口将多个应用集成到系统镜像中。简而言之,此文件可以告诉系统哪个文件要被编译。import("//build/lite/config/component/lite_component.gni")lite_component("app"){features=[#只修改此处"myfirstapp:mylibrary", #冒号之前为所在文件夹名称,冒号后为静态库名称#"startup",]}程序设计流程

3.编译

参考2.2.4节的方法在VSCode的终端输入指令完成编译。如果编译过程中提示有错,则根据提示修改程序,再重复该步骤。4.烧写程序

参考2.2.5节的方法,使用HiBurn程序将编译好的镜像烧录到开发板。完成编译。如果编译过程中提示有错,则根据提示修改程序,再重复该步骤。5.调试程序

参考2.2.6节的方法,使用串口助手进行程序的调试。程序设计流程

从调试结果可见,串口助手调试窗口显示出“HelloWorld!”。Openharmony源码结构开发示例——第一个程序HelloWorld程序设计流程代码的执行流程代码的执行流程

hi3861的内核liteos_m启动运行过程如下:1.内核启动后,第一个入口函数是hi_voidapp_main(hi_void),此函数会打印sdk的版本号,其最后一行调用OHOS_Main();2.OHOS_Main()会调用OHOS_SystemInit();3.OHOS_SystemInit()会进行OpenHarmony系统的初始化;4.OHOS_SystemInit()中的MODULE_INIT(run)

批量执行所有用SYS_RUN()宏注册的函数,如:前面helloworld.c程序中SYS_RUN()宏注册的HelloWorld函数。代码的执行流程

函数hi_voidapp_main(hi_void)和OHOS_Main()所在的c文件位于OpenHarmony/device/hisilicon/hispark_pegasus/sdk_liteos/app/wifiiot_app/src目录下,包括以下文件:代码的执行流程

函数OHOS_SystemInit()所在的c文件位于OpenHarmony/base/startup/bootstrap_lite/services/source目录下,包括以下文件:代码的执行流程

以下是hi_voidapp_main(hi_void)的源代码:代码的执行流程

以下是hi_voidapp_main(hi_void)的源代码:代码的执行流程

以下是hi_voidapp_main(hi_void)的源代码:代码的执行流程

以下是h

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论