当前位置: 首页 > news >正文

网站建设总体规划信和财富网站开发

网站建设总体规划,信和财富网站开发,网站做二级域名干什么用,网站推广100种方法基本概念 在硬件资源有限的小设备中,需要通过算法的动态部署能力来解决无法同时部署多种算法的问题。以开发者易用为主要考虑因素,同时考虑到多平台的通用性,LiteOS-M选择业界标准的ELF加载方案,方便拓展算法生态。LiteOS-M提供类…

基本概念

在硬件资源有限的小设备中,需要通过算法的动态部署能力来解决无法同时部署多种算法的问题。以开发者易用为主要考虑因素,同时考虑到多平台的通用性,LiteOS-M选择业界标准的ELF加载方案,方便拓展算法生态。LiteOS-M提供类似于dlopen、dlsym等接口,APP通过动态加载模块提供的接口可以加载、卸载相应算法库。如图1所示,APP需要通过三方算法库所需接口获取对应信息输出,三方算法库又依赖内核提供的基本接口,如malloc等。APP加载所需接口,并对相关的未定义符号完成重定位后,APP即可调用该接口完成功能调用。目前动态加载组件只支持arm架构。此外,待加载的共享库需要验签或者限制来源,确保系统的安全性。

图1 LiteOS-M内核动态加载架构图

1

运行机制

符号表导出

共享库调用内核接口需要内核主动暴露动态库所需的接口,如图2所示,该机制将符号信息编译到指定段中,调用SYM_EXPORT宏即可完成对指定符号的信息导出。符号信息通过结构体SymInfo描述,成员包括符号名和符号地址信息,宏SYM_EXPORT通过__attribute__编译属性将符号信息导入.sym.*段中。

typedef struct {CHAR    *name;UINTPTR addr;
} SymInfo;#define SYM_EXPORT(func)                                            \
const SymInfo sym_##func __attribute__((section(".sym."#func))) = { \.name = #func,                                                  \.addr = (UINTPTR)func                                           \
};

图2 导出的符号表信息

2

ELF文件加载

加载过程中,根据ELF文件的句柄以及程序头表的段偏移可以得到需要加载到内存的LOAD段,一般有两个段,只读段及读写段,如下所示,可以用readelf -l查看ELF文件的LOAD段信息。如图3所示,根据相应的对齐属性申请物理内存,通过每个段的加载基址及偏移将代码段或数据段写入内存中。

$ readelf -l lib.soElf file type is DYN (Shared object file)
Entry point 0x5b4
There are 4 program headers, starting at offset 52Program Headers:Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg AlignEXIDX          0x000760 0x00000760 0x00000760 0x00008 0x00008 R   0x4LOAD           0x000000 0x00000000 0x00000000 0x0076c 0x0076c R E 0x10000LOAD           0x00076c 0x0001076c 0x0001076c 0x0010c 0x00128 RW  0x10000DYNAMIC        0x000774 0x00010774 0x00010774 0x000c8 0x000c8 RW  0x4Section to Segment mapping:Segment Sections...00     .ARM.exidx01     .hash .dynsym .dynstr .rel.dyn .rel.plt .init .plt .text .fini .ARM.exidx .eh_frame02     .init_array .fini_array .dynamic .got .data .bss03     .dynamic

图3 ELF文件的加载过程

3

ELF文件链接

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

图4 ELF文件的链接过程

4

ELF支持规格

ELF支持类型

编译共享库时,添加-fPIC可以编译出位置无关代码(-fPIC为编译选项),此时共享库文件类型为ET_DYN,其可以加载至任意有效的地址区间。

例:arm-none-eabi-gcc -fPIC –shared –o lib.so lib.c

ELF共享库编译链接选项

  1. “-nostdlib”编译链接选项:不依赖编译器中lib库。
  2. “-nostartfiles”编译链接选项:不依赖编译器中启动相关的文件。
  3. “-fPIC”编译选项:可编译位置无关的共享库。
  4. “-z max-page-size=4”链接选项:二进制文件中可加载段的对齐字节数为4,可节约内存,可用于动态库。
  5. “-mcpu=”需要指定对应的CPU架构。

以上就是本篇文章所带来的鸿蒙开发中一小部分技术讲解;想要学习完整的鸿蒙全栈技术。可以在结尾找我可全部拿到!
下面是鸿蒙的完整学习路线,展示如下:
1

除此之外,根据这个学习鸿蒙全栈学习路线,也附带一整套完整的学习【文档+视频】,内容包含如下

内容包含了:(ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、鸿蒙南向开发、鸿蒙项目实战)等技术知识点。帮助大家在学习鸿蒙路上快速成长!

鸿蒙【北向应用开发+南向系统层开发】文档

鸿蒙【基础+实战项目】视频

鸿蒙面经

2

为了避免大家在学习过程中产生更多的时间成本,对比我把以上内容全部放在了↓↓↓想要的可以自拿喔!谢谢大家观看!
3

http://www.yayakq.cn/news/29845/

相关文章:

  • 餐饮加盟网网站建设网站建设提供商
  • 电商型网站开发多少钱重庆网站制作公司
  • 网站网站开发成本网店代运营的公司有哪些
  • 浙江网站建设流程企业+网站+wordpress
  • 婚纱摄影东莞网站建设技术支持影视传媒网站设计
  • 网站悬浮窗广告潍坊网站建设wancet
  • 网站开发签呈如何写wordpress培训班
  • 高端网站建设公司哪家好php mysql网站开发实例教程
  • 怎样才能制做免费网站直播软件排名
  • 酒店网站建设设计网站开发所需要的时间 知乎
  • 响应式网站难做网站的seo相关指标
  • 在大网站做网页广告需要多少钱烟台H5网站设计公司
  • 临海建设局网站广州网站排名优化服务
  • 站长工具官网域名查询向wordpress提交插件
  • 英文网站建全网营销型网站建设模板
  • 网站被别人做镜像四川省建筑施工企业安管人员考试
  • 南海区建设局网站做网站的logo
  • 简单网页制作素材谷歌seo需要做什么
  • 公司网站制作第一步是什么深圳宝安通网站建设
  • 阿里巴巴国际站邵阳学院研究生与学科建设处网站
  • 实时网站制作关键词排名怎么上首页
  • 怎样选择网站的关键词做淘客的网站关键词有哪些
  • 怎么选择邯郸做网站营销型网站跟云网站
  • 如何建设wap网站做教育培训网站
  • 网站显示正在建设中聊城网站建设首选天成网络
  • 网站建设的主要目标如何建立网站模板
  • 网站更新了域名如何找到织梦做的网站 xampp
  • 长春微信网站建设公司做网站文案怎么写
  • 如何建三网合一网站wordpress兼职
  • 焦作网站制作公司南京网站建设