梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门

星如雪_梭如月
发布于 2022-7-16 21:45
浏览
0收藏

1.OpenHarmony快速入门

1.1.写hello world

1.1.1.把环境弄好(打开)

(1)用VMware打开虚拟机,先看一看地址有没有发生变化,发生变化的话,需要之后连接服务器以及映射文件进行修改

(2)从外部连接虚拟机(MobaXterm),可以用于写命令,如果地址改了,需要重新创建连接

(3)将文件映射到pc文件管理器(Raidrive),如果地址变了,也要相应改变。

1.1.2.写相应代码

(1)创建app实例,在“项目名\applications\BearPi\BearPi-HM_Nano\sample”文件下创建实例文件夹,my_app。

(2)在实例文件夹下面创建两个文件hello_world.c,BUILD.gn

(3)写主要代码,以下两个图分别是在.c文件和BHULD.gn中写的代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

(4)在example中对BUILD.gn进行配置,除了最后一行,其他注释(写上去的是需要运行的)

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

(5)对整个项目进行编译

在MobaXterm中输入cd project先进入项目文件中,然后输入hpm dist对项目文件进行编译,之后运行到小熊派上(由于没有板子,之后的操作无法展示)

1.2.点亮LED灯

过程与写helloworld相似,以下展示不同处

(1)创建文件

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

(2).c文件

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

(3)实例文件下BUILD.gn

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

(4)example下BUILD.gn,将原来hello world的注释,写上“my_led:myled”,引号后面有逗号。my_led是实例文件夹的名,myled是实例文件夹下面的BUILD.gn括号内写的。

2.OpenHarmony编译架构介绍

2.1.ninja编译工具

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

2.2.项目如何编译

在vscode的终端输入“ssh bearpi@你的地址”,连接虚拟机终端,对项目进行编译后找到start build前面的文件路径

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

从vscode中打开相应文件

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

以applications为例,由路径可知执行的是example中的app,这个app就是example的BUILD.gn中lite_component中的参数

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

2.3.代码如何运行

找到main.c文件,路径在下图顶部

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

通过vscode,F12查找功能

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

sys_init(service)注释掉后,hello world无法打印,代表这个代码在运行当中很关键。

找到sys_init,通过ctrl shift f

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

通过f12找到sys_call

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

这是一个宏定义,继续向下找

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

从这里可以得知,函数指向".zinitcall.sys.service2.init“,name是第一步传入的service,2是第几个步骤

之后找到".zinitcall.sys.service2.init“怎么形成,看如下选中函数sys_service_init(init),找到出处,传入的func是init

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

继续向下找,有在最后传入了个2

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

继续向下找被定义的函数(就在上面),有下图可知定义了”.zinitcall.sys.service2.init"

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

在编译的时候会将init函数放在下图中,也就是之前找到的函数指针指向的地方

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

按照同样的步骤搜索init函数中的messageHandle函数,内部的init_app_call(feature)函数会指向“.zinitcall.app.feature2.init”

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

通过helo world的函数中的app_feature_init函数反向查找可知“.zinitcall.app.feature2.init”就是指向hello world函数

3.OpenHarmony SMSIS接口简介

3.1.什么是SIMSIS-RTOS2

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

3.2.OpenHarmony与CMSIS-RTOS2之间的联系

OpenHarmony在CMSIS-RTOS2中封装了LiteOS-m的内核代码

梅科尔工作室-看鸿蒙设备开发实战14天笔记(三)-快速入门-鸿蒙开发者社区

3.3.怎么使用接口

(1)引用库文件“cmsis_os2.h"

(2)通过调用函数使用相关功能

更多API:arm-software.github.io/CMSIS_5/RTOS2/html/index.html

 

/*****更多详细内容请在鸿蒙开发者学堂搜索鸿蒙设备开发实战*****/

分类
已于2022-7-16 21:45:59修改
3
收藏
回复
举报
回复
    相关推荐