Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
5355677c
D
Docs
项目概览
OpenHarmony
/
Docs
大约 2 年 前同步成功
通知
161
Star
293
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
5355677c
编写于
5月 09, 2022
作者:
O
openharmony_ci
提交者:
Gitee
5月 09, 2022
浏览文件
操作
浏览文件
下载
差异文件
!3745 【OpenHarmony开源贡献者计划2022】相关格式及表达问题
Merge pull request !3745 from king_he/master
上级
088f303d
70937f16
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
17 addition
and
17 deletion
+17
-17
zh-cn/device-dev/subsystems/subsys-aiframework-guide.md
zh-cn/device-dev/subsystems/subsys-aiframework-guide.md
+3
-1
zh-cn/device-dev/subsystems/subsys-aiframework-tech-interface.md
...evice-dev/subsystems/subsys-aiframework-tech-interface.md
+3
-3
zh-cn/device-dev/subsystems/subsys-aiframework-tech-name.md
zh-cn/device-dev/subsystems/subsys-aiframework-tech-name.md
+3
-5
zh-cn/device-dev/subsystems/subsys-application-framework-demo.md
...evice-dev/subsystems/subsys-application-framework-demo.md
+1
-1
zh-cn/device-dev/subsystems/subsys-application-framework-envbuild.md
...e-dev/subsystems/subsys-application-framework-envbuild.md
+1
-1
zh-cn/device-dev/subsystems/subsys-application-framework-guide.md
...vice-dev/subsystems/subsys-application-framework-guide.md
+6
-6
未找到文件。
zh-cn/device-dev/subsystems/subsys-aiframework-guide.md
浏览文件 @
5355677c
# 概述
# 概述
AI业务子系统是OpenHarmony提供原生的分布式AI能力的子系统。AI业务子系统提供了统一的AI引擎框架,实现算法能力快速插件化集成。框架中主要包含插件管理、模块管理和通信管理等模块,完成对AI算法能力的生命周期管理和按需部署。插件管理主要实现插件的生命周期管理及插件的按需部署,快速集成AI能力插件;模块管理主要实现任务的调度及管理客户端的实例;通信管理主要实现客户端和服务端之间的跨进程通信及引擎与插件之间的数据传输。后续,会逐步定义统一的AI能力接口,便于AI能力的分布式调用。同时,提供适配不同推理框架层级的统一推理接口。AI引擎框架如下图所示。
AI业务子系统是OpenHarmony提供原生的分布式AI能力的子系统。AI业务子系统提供了统一的AI引擎框架,实现算法能力快速插件化集成。
AI引擎框架主要包含插件管理、模块管理和通信管理模块,完成对AI算法能力的生命周期管理和按需部署。插件管理主要实现插件的生命周期管理及插件的按需部署,快速集成AI能力插件;模块管理主要实现任务的调度及管理客户端的实例;通信管理主要实现客户端和服务端之间的跨进程通信管理及AI服务与插件之间的数据传输。后续,会逐步定义统一的AI能力接口,便于AI能力的分布式调用。同时,框架提供适配不同推理框架层级的统一推理接口。
AI引擎框架结构如下图所示。
**图1**
AI引擎框架
**图1**
AI引擎框架
...
...
zh-cn/device-dev/subsystems/subsys-aiframework-tech-interface.md
浏览文件 @
5355677c
...
@@ -89,7 +89,7 @@ retCode = ProcessDecode(dataInfo, arg1, arg2, arg3) //可以接收任意多个
...
@@ -89,7 +89,7 @@ retCode = ProcessDecode(dataInfo, arg1, arg2, arg3) //可以接收任意多个
## 规则:在SDK中,对以编解码返回的出参数据类型,需要进行内存释放,否则会出现内存泄漏
## 规则:在SDK中,对以编解码返回的出参数据类型,需要进行内存释放,否则会出现内存泄漏
编码得到的通用数据,本质上是将不同类型数据封装在同一块内存中,然后将这块内存的首地址与长度封装到结构体中。通过编码返回到SDK中的出参数据,在插件中申请了内存,但插件无法释放
,否则SDK将无法拿到数据;因此SDK在拿到数据之后,需要对内存进行释放
。
编码得到的通用数据,本质上是将不同类型数据封装在同一块内存中,然后将这块内存的首地址与长度封装到结构体中。通过编码返回到SDK中的出参数据,在插件中申请了内存,但插件无法释放
;因此SDK在拿到数据之后,需要对内存进行释放,否则SDK将无法拿到数据
。
内存释放示例:
内存释放示例:
...
@@ -115,7 +115,7 @@ Server端管理的插件内部接口实现逻辑各不相同,为了统一插
...
@@ -115,7 +115,7 @@ Server端管理的插件内部接口实现逻辑各不相同,为了统一插
## 规则:plugin需要使用AI引擎提供的统一数据通道
## 规则:plugin需要使用AI引擎提供的统一数据通道
AI
Engine
在server与插件之间,提供了一个统一的数据通道,用来处理来自SDK的推理请求和来自插件的结果返回;plugin在推理接口中,需按数据通道完成请求数据的获取以及推理结果的封装。
AI
引擎
在server与插件之间,提供了一个统一的数据通道,用来处理来自SDK的推理请求和来自插件的结果返回;plugin在推理接口中,需按数据通道完成请求数据的获取以及推理结果的封装。
数据通道使用示例:
数据通道使用示例:
...
@@ -142,4 +142,4 @@ return RETCODE_SUCCESS;
...
@@ -142,4 +142,4 @@ return RETCODE_SUCCESS;
}
}
```
```
示例中request和response是数据通道的内容主体
,
server端会将数据封装在request中,传递到插件,插件进行算法处理之后,则需要将结果封装成response进行返回。
示例中request和response是数据通道的内容主体
。
server端会将数据封装在request中,传递到插件,插件进行算法处理之后,则需要将结果封装成response进行返回。
zh-cn/device-dev/subsystems/subsys-aiframework-tech-name.md
浏览文件 @
5355677c
...
@@ -3,15 +3,13 @@
...
@@ -3,15 +3,13 @@
## SDK命名规则:领域_关键词<_其他信息1_其他信息2_…>_sdk.so
## SDK命名规则:领域_关键词<_其他信息1_其他信息2_…>_sdk.so
关于领域,建议使用当前主流简称,比如图片视频相关的使用"cv",语音识别相关的使用“asr”,翻译相关的使用“translation”等,存在其他领域的可增加定义;关键词则需要恰当准确的描述所对应插件的算法能力,比如唤醒词识别,则使用keyword_spotting;对于其他信息,比如插件支持的芯片类型、国内海外等信息,可在关键词与“
SDK”之间依次添加,每个信息之间以下划线连接;北向SDK命名,必须以“SDK
”结尾。
关于领域,建议使用当前主流简称,比如图片视频相关的使用"cv",语音识别相关的使用“asr”,翻译相关的使用“translation”等,存在其他领域的可增加定义;关键词则需要恰当准确的描述所对应插件的算法能力,比如唤醒词识别,则使用keyword_spotting;对于其他信息,比如插件支持的芯片类型、国内海外等信息,可在关键词与“
sdk”之间依次添加,信息之间以下划线连接;SDK命名,必须以“_sdk
”结尾。
例如:唤醒词识别插件对应
的SDK,只支持麒麟9000芯片,适用于中国国内地区适用,则对应的SDK命名为:asr_keyword_spotting_kirin9000_china_sdk.so
例如:唤醒词识别插件对应的SDK,只支持麒麟9000芯片,适用于中国国内地区适用,则对应的SDK命名为:asr_keyword_spotting_kirin9000_china_sdk.so
## 插件命名规则:领域_关键词<_其他信息1_其他信息2_…>.so
## 插件命名规则:领域_关键词<_其他信息1_其他信息2_…>.so
插件命名的领域、关键词、其他信息等名词解释与要求,均与SDK命名要求保持一致。
插件与SDK存在一一对应的关系,故插件命名的领域、关键词、其他信息等名词解释与要求,均与SDK命名要求保持一致。两者唯一的不同之处在于SDK命名多了个“_sdk”结尾;比如插件命名为“asr_keyword_spotting.so”,则对应SDK命名为“asr_keyword_spotting_sdk.so”。
插件与SDK存在一一对应的关系,故两者命名在领域、关键词、其他信息上要保持一致,两者唯一的不同之处在于SDK命名多了个“_sdk”结尾;比如插件命名为“asr_keyword_spotting.so”,则对应北向SDK命名为“asr_keyword_spotting_sdk.so”。
例如:唤醒词识别插件对应的SDK,只支持麒麟9000芯片,适用于中国国内地区适用,则对应的插件命名为:asr_keyword_spotting_kirin9000_china.so
例如:唤醒词识别插件对应的SDK,只支持麒麟9000芯片,适用于中国国内地区适用,则对应的插件命名为:asr_keyword_spotting_kirin9000_china.so
zh-cn/device-dev/subsystems/subsys-application-framework-demo.md
浏览文件 @
5355677c
# 开发实例
# 开发实例
开发实例可参考
[
开源项目中的示例
](
https://gitee.com/openharmony/aafwk_aafwk_lite/tree/master/frameworks/ability_lite/example
)
开发实例可参考
[
开源项目中的示例
](
https://gitee.com/openharmony/aafwk_aafwk_lite/tree/master/frameworks/ability_lite/example
)
。
zh-cn/device-dev/subsystems/subsys-application-framework-envbuild.md
浏览文件 @
5355677c
# 搭建环境
# 搭建环境
-
开发板:Hi3516DV300
-
准备
开发板:Hi3516DV300
-
[
下载源码
](
../get-code/sourcecode-acquire.md
)[
下载源码
]
(../get-code/sourcecode-acquire.md)
-
[
下载源码
](
../get-code/sourcecode-acquire.md
)[
下载源码
]
(../get-code/sourcecode-acquire.md)
...
...
zh-cn/device-dev/subsystems/subsys-application-framework-guide.md
浏览文件 @
5355677c
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
-
不带界面的Ability应用,比如:音乐播放器能在后台播放音乐、后台提供计算服务、导航服务的各类应用等。
-
不带界面的Ability应用,比如:音乐播放器能在后台播放音乐、后台提供计算服务、导航服务的各类应用等。
-
不管是带界面的Ability应用还是不带界面的Ability应用,都要打包成Hap包,最终发布到应用市场,用户通过应用市场下载安装相应的应用。
不管是带界面的Ability应用还是不带界面的Ability应用,都要打包成Hap包,最终发布到应用市场,用户通过应用市场下载安装相应的应用。
## 接口说明
## 接口说明
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
| 接口名称 | 接口描述 |
| 接口名称 | 接口描述 |
| -------- | -------- |
| -------- | -------- |
| Want
\*WantParseUri(const
char
\*
uri) | 反序列化接口,由字符串生成Want对象。 |
| Want
\*WantParseUri(const
char
\*
uri) | 反序列化接口,由字符串生成Want对象。 |
| const
char
\*WantToUri(Want
want) | 序列化,把Want对象生成字符串。 |
| const
char
\*WantToUri(Want
want) | 序列化
接口
,把Want对象生成字符串。 |
| void
SetWantElement(Want
\*want,
ElementName
element); | 设置ElementName对象。 |
| void
SetWantElement(Want
\*want,
ElementName
element); | 设置ElementName对象。 |
| void
SetWantData(Want
\*want,
const
void
\*data,
uint16_t
dataLength) | 设置数据。 |
| void
SetWantData(Want
\*want,
const
void
\*data,
uint16_t
dataLength) | 设置数据。 |
| bool
SetWantSvcIdentity(Want
\*want,
SvcIdentity
sid) | 设置SvcIdentity。 |
| bool
SetWantSvcIdentity(Want
\*want,
SvcIdentity
sid) | 设置SvcIdentity。 |
...
@@ -80,7 +80,7 @@
...
@@ -80,7 +80,7 @@
};
};
```
```
2.
调用REGISTER_AA宏将ServiceAbility注册到应用框架中,以便应用框架实例化
的
MyServiceAbility。
2.
调用REGISTER_AA宏将ServiceAbility注册到应用框架中,以便应用框架实例化MyServiceAbility。
```
```
#include "my_service_ability.h"
#include "my_service_ability.h"
...
@@ -303,7 +303,7 @@
...
@@ -303,7 +303,7 @@
```
```
const uint32_t WAIT_TIMEOUT = 30;
const uint32_t WAIT_TIMEOUT = 30;
sem_init(&g_sem, 0, 0);
sem_init(&g_sem, 0, 0);
std::string installPath = “/storage/bundle/demo.hap”; //
h
ap包的存储路径
std::string installPath = “/storage/bundle/demo.hap”; //
H
ap包的存储路径
bool result = Install(installPath.c_str(), &installParam, InstallCallback);
bool result = Install(installPath.c_str(), &installParam, InstallCallback);
struct timespec ts = {};
struct timespec ts = {};
clock_gettime(CLOCK_REALTIME, &ts);
clock_gettime(CLOCK_REALTIME, &ts);
...
@@ -389,7 +389,7 @@
...
@@ -389,7 +389,7 @@
| 命令参数 | 对应的资源文件 | 说明 | 是否可缺省 |
| 命令参数 | 对应的资源文件 | 说明 | 是否可缺省 |
| -------- | -------- | -------- | -------- |
| -------- | -------- | -------- | -------- |
| --mode | - | 为“hap”字段,打包生成
h
ap | 否 |
| --mode | - | 为“hap”字段,打包生成
H
ap | 否 |
| --json-path | 清单文件config.json | - | 否 |
| --json-path | 清单文件config.json | - | 否 |
| --resources-path | 资源文件resources | - | 是 |
| --resources-path | 资源文件resources | - | 是 |
| --assets-path | 资源文件assets | - | 是 |
| --assets-path | 资源文件assets | - | 是 |
...
@@ -397,7 +397,7 @@
...
@@ -397,7 +397,7 @@
| --shared-libs-path | 共享库文件 | 针对系统应用的共享库,特殊情况下使用 | 是 |
| --shared-libs-path | 共享库文件 | 针对系统应用的共享库,特殊情况下使用 | 是 |
| --ability-so-path | 主功能so文件 | - | 是 |
| --ability-so-path | 主功能so文件 | - | 是 |
| --index-path | 资源索引 | 资源索引文件由资源生成工具生成,由资源流水线会集成该工具 | 是 |
| --index-path | 资源索引 | 资源索引文件由资源生成工具生成,由资源流水线会集成该工具 | 是 |
| --out-path | - | 生成的
h
ap包输出路径,默认为当前目录 | 是 |
| --out-path | - | 生成的
H
ap包输出路径,默认为当前目录 | 是 |
| --force | - | 是否覆盖原有同名文件,默认为false | 是 |
| --force | - | 是否覆盖原有同名文件,默认为false | 是 |
-
打包示例
-
打包示例
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录