Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
ac48721a
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看板
未验证
提交
ac48721a
编写于
4月 06, 2022
作者:
A
Austin
提交者:
Gitee
4月 06, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update zh-cn/device-dev/kernel/kernel-mini-extend-dynamic-loading.md.
Signed-off-by:
N
Austin
<
liaozhiqi7@huawei.com
>
上级
1dd4a9bc
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
4 addition
and
0 deletion
+4
-0
zh-cn/device-dev/kernel/kernel-mini-extend-dynamic-loading.md
...n/device-dev/kernel/kernel-mini-extend-dynamic-loading.md
+4
-0
未找到文件。
zh-cn/device-dev/kernel/kernel-mini-extend-dynamic-loading.md
浏览文件 @
ac48721a
...
...
@@ -14,6 +14,7 @@
在硬件资源有限的小设备中,需要通过算法的动态部署能力来解决无法同时部署多种算法的问题。以开发者易用为主要考虑因素,同时考虑到多平台的通用性,LiteOS-M选择业界标准的ELF加载方案,方便拓展算法生态。LiteOS-M提供类似于dlopen、dlsym等接口,APP通过动态加载模块提供的接口可以加载、卸载相应算法库。如图1所示,APP需要通过三方算法库所需接口获取对应信息输出,三方算法库又依赖内核提供的基本接口,如malloc等。APP加载所需接口,并对相关的未定义符号完成重定位后,APP即可调用该接口完成功能调用。目前动态加载组件只支持arm架构。此外,待加载的共享库需要验签或者限制来源,确保系统的安全性。
**图1**
LiteOS-M内核动态加载架构图

...
...
@@ -38,6 +39,7 @@ const SymInfo sym_##func __attribute__((section(".sym."#func))) = { \
```
**图2**
导出的符号表信息

...
...
@@ -67,6 +69,7 @@ Program Headers:
```
**图3**
ELF文件的加载过程

...
...
@@ -75,6 +78,7 @@ Program Headers:
如图4所示,通过ELF文件的.dynamic段获取重定位表,遍历表中每一个需要重定位的条目,再根据需要重定位的符号名在共享库和内核提供的导出符号表中查找相应符号并更新相应的重定位信息。
**图4**
ELF文件的链接过程

...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录