
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统中的模块动态加载技术提出一种适用于系统的模块动态加载技术,设计实现容易,占用资源少,开销小,并且胜利运用于deltaos可提高系统的灵便性和扩属性.介招加载与动态链接的原理和应用状况,说明相关术语,描述基本设计思路:具体解释该技术的核心。即模块声明、调用库、两级重定位表,最后给出结论。随着技术的飞快进展,嵌人式设备应用越来越广泛,复杂度也越来越高。这使得硬件和软件设计比例发生了很大变幻,软件开发的比重越来越大。然而传统嵌入式开发过程中需要将应用与操作系统编译链接成一个整体,然后下载到目标机上运行。假如在调试过程中发觉问题,需要重新编链接然后重复下载运行的过程。这样的开发流程周期长而且
2、繁琐,已经越来越不适应迅速市场化的需要。为了适应多样化的嵌入式应用和加快嵌入式系统的开发过程,除了需要牢靠的基础平台软件的支持,如带有文件系统、网络协议栈的rtos和配套的集成开发环境,更重要的是需要可以动态扩展的系统平台。近年来,新一代的嵌入式操作系统已经开头用法动态扩展技术:将基本系统(包括操作系统以及其他分享功能调用库)和应用程序开发分开处理,支持模块更新和动态加载技术。无数主流的传统嵌入式操作系统厂商,如windriver、green hilis、lynxworks,都推出了面对航空航天、基础通信设备等领域的高牢靠、高性能的rtos版本,支持应用和系统组件的动态加载和更新;而在消费电子
3、领域,相关的操作系统厂商,如symbian、palm、microsoft,更是乐观推出了具有相应功能的操作系统,在新一代移动设备上得到了广泛应用。为了成为可动态扩展系统平台,大部分嵌入式操作系统需要用法动态加载技术。总的来说,动态加载是指应用或者系统在运行过程中需要用法某模块的服务,于是通过一系列预定的动作将指定模块加载到系统中,让调用者继续顺当工作。它实现的关键就是加载与动态链接技术。由于加载和动态链接相互依靠,关系紧密,所以将两者放在一起举行研究。1 加载与动态链接机制加载主要负责将模块程序从二级存储设备(比如硬盘或者flash)搬移到指定内存空间,并且将模块交由系统加载器统一管理。程序链
4、接分为静态链接、加载时链接和运行时链接。静态链接就是将程序和它运行所需的所有库链接成一个执行文件。它的优点是可以自立运行、速度快,但是它链接生成的代码尺寸比较大。加载时链接是指程序在编译链接时不会把它用到的库链接到执行程序中,而是在它被加载器加载时才解析执行文件,依次把用到的库装载到系统中让其运行。它的优点是程序本身代码量减小,但运行时程序占的内存并没有减小,同时增强了加载器的工作量。动态链接是加载时链接的进一步进展,它是指将库的加载过程延迟到程序运行时执行。这种方式不会给程序引入额外的代码,也不会增强加载器的开销,惟独当应用真正用法某库时才会加载该库,削减了不须要的空间占用。它的缺点是可能会
5、有一些运行开销。嵌入式系统中动态加载和一般的动态链接概念类似,但是嵌入式系统中的加载链接器有其自身的特点:它是交错加载,主机端做一部分工作,比如程序的重定位,执行文件的解析等等;而目标机端相对容易,主要做模块搜寻定位和空间分配,以及指定物理地址或者映射虚拟地址让其运行。一部分嵌入式系统不支持虚拟内存,应用和内核分享存储空间。当系统加载了多个应用到系统中时,普通需要用法overlap技术来解决内存空间有限的问题,即是当多个应用的运行地址空间矛盾时,加载器会冻结当前临时不运行的应用,让新加载的应用用法指定的地址空间,pairnos中就采纳了这样的设计。对于支持虚拟内存的嵌入式系统,加载器的工作被大
6、大简化,每个应用都有可以运行在同样的虚拟的空间,不需要加载器为其重定位或用法overlap技术,因此提高了工作效率。vxworks6o,wince都用法了这种设计。两种方式在不同的领域都有比较多的应用。文中提出的模块动态加载技术是基于支持mmu(memory management unit)的32位嵌入式操作系统,采纳了加载与动态链接技术。用法该技术构建的嵌人式系统面对高端市场,特殊是对系统牢靠性、平安性要求很高的领域。在deltaos新一代高牢靠的版本har(high available reliable system)的研发过程中,即胜利地实现了基于该设计的加载器lambdaloader,
7、达到了预期的性能要求。2 模块动态加载的设计2.1 设计思路首先定义一些概念:模块、目标程序、接口函数地址表和调用库(call library)。模块,主要是指加载器加载的一个单位,并且这里模块的概念主要是强调它是为应用或者系统提供一系列服务的提供者。目标程序,是指模块的用法者。它可以是应用,也可以是另一个模块。接口函数地址表(文中也称之为模块重定位表),指在模块中有一个数组表,该数组表的内容是该模块对外提供的函数接口的地址。调用库,是供模块调用者链接用法的专有库。它与相关模块一一对应,将封装了的模块接口供目标程序用法。除此以外,它还有一个运行时才确定的模块重定位表地址指针和模块动态查找定位的
8、代码。假如在系统中要实现动态加载,首先需要一种模块定位机制,使得调用者能够在系统中动态定位需要的模块,第二是要能让模块与目标程序动态的关联在一起,协调工作。为了解决这些问题,需要一系列相关的设计:规定模块的声明方式;简化目标机端模块地址空间定位的工作;重定位表的机制等等。基于这样的设计,系统可以比较顺当地实现动态加载。模块动态加载的工作流程l所示。这里描述的主要是目标机端的工作。2.2 模块的声明模块首先要定义它的相关属性。这里用法模块声明文件来完成这个工作。模块声明文件中需要定义:模块名字、版本、对外提供的api接口。在系统编译模块程序后,会调用一系列的script代码。这些script会按
9、照模块名字查找模块对应的模块声明文件,并按照该文件生成供模块调用者用法的调用库和与模块一起链接的附加库。附加库包含系统后台通过调用script生成的接口函数地址表和模块注册函数。在每个模块的初始化函数中,会调用一个模块的注册函数(该函数主要工作是向系统注册模块的名字和接口函数地址表地址)。当模块被加载时,初始化函数会被系统调用,向系统注册模块信息,此后模块交由加载器统一管理。2.3 调用库每个模块在提供一个模块重定位表的同时,必需提供一个与之对应的模块调用库。别的目标程序必需并且只能通过调用库来用法这个模块提供的服务。每个调用库都有一个存储本模块重定位表的地址指针变量。该变量在模块被目标程序第
10、一次用法时会被初始化为相应模块重定位表地址。在模块第一次被目标程序用法即开头动态加载过程时,首先运行的是调用库的库初始化代码(library initialcode),它通过指定的系统调用来初始化库中的模块重定位表基地址指针。此后每次目标程序用法模块提供的函数接口时,都通过以下公式得到该接口的实际地址:模块接口实际地址=模块重定位表基地址+函数index%26;215;4在该公式中,函数index是指对应函数在模块重定位表中的数组下标值。由于按照模块声明文件生成的调用库中已经包含了每个函数的索引信息(index),同时在32位系统中需要乘以4得到精确的偏移量,所以当调用库中重定位表地址被初始化
11、后,可以通过这样一个容易计算得到指定接口实际地址,完成函数调用。当一个目标程序用法了模块,并正确动态加载后,其关系2所示。目标程序中链接了调用库,包含了函数跳转表和指向模块重定位表基地址的指针(modulebase);模块中则链接了附加库,包含了函数接口地址表(模块重定位表)。调用模块函数时,经过动态加载模块的过程以后,目标程序的模块重定位表基址指针指向了对应模块的函数接口表,然后函数调用就可以顺当举行了。2.4 两级重定位表在嵌入式领域,为了降低性能开销和增强确定性,目标机端加载器不会做程序重定位,而将相关工作在主机端完成,所以目标机端加载的全部程序都是肯定定位后的程序为了实现系统动态扩展,
12、必需使各个模块能够单独链接生成执行程序,并且运行时不用关怀彼此的定位,这样即使一个模块被动态替换后也能同其他程序一起协调运行。这里通过两级重定位表机制来完成这个协调性的工作。对于内核、操作系统组件模块或提供服务给其他目标程序用法的模块,要维护一张本模块提供的接口函数地址表(即模块重定位表,这里称之为二级重定位表)。为了保证本模块的向后兼容性,模块必需保证其接口函数在模块重定位表中的相对位置固定。即使今后不能提供这个接口函数,也需要将其保留,以保证同以前版本的二进制兼容性。在模块的初始化代码中,模块通过系统调用向加载器注册这个模块重定位表的地址,注册时需提供模块名和模块重定位表的地址。加载器中管理着一个称为一级重定向表的表格。这个表的表项是“模块名”到“模块重定位表地址”的映射。由于这只是一个映射关系,所以各个模块对应的表项在一级表中的详细位置是可以转变的。二级重定位表3所示。用法两级重定位表的规章如下:模块可通过模块重定位表向其他目标程序提供接口函数;目标程序要用法别的模块提供的接口函数必需通过对应模块的调用库来实现;目标程序在用法别的模块提供的接口函数之前,必需通过加载器提供的系统调用服务猎取对应模块重定位表来基地址初始化对方的调用库。结 语该设计实现了在嵌入式系统中的模块动态加载与更新,使得在嵌入式软件开发过程中,开发人
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025春季【高二】【蛇启新航 蜕变前行】开学第一课-文字稿
- 2025年合同会审单模板
- 二年级上册数学教案-第五单元第6课时回家路上 北师大版
- 五年级上册数学教案-2.1 《平行四边形的面积》 ︳西师大版
- 五年级下册数学教案 - 露在外面的面 北师大版
- 《长方体和正方体的体积》(教案)青岛版五年级下册数学
- 第6课 猫抓老鼠(教学设计)2023-2024学年五年级上册信息技术粤教版B版
- 部编版九年级上册古诗欣赏中考试题汇编(截至2023年)
- 《茅屋为秋风所破歌》历年中考古诗欣赏试题汇编(截至2024年)
- 2025年河南省鹤壁市单招职业倾向性测试题库完整
- 技术规范书柴油发电机组
- 青岛科技大学成人大专《工商企业管理实训报告》
- 低钾血症最新版本最新课件
- 兽医外科手术学与兽医外科学章节测试及答案
- 2023年陕西延长石油矿业有限责任公司招聘笔试题库及答案解析
- YY/T 1792-2021荧光免疫层析分析仪
- GB/T 39235-2020猪营养需要量
- GB/T 30799-2014食品用洗涤剂试验方法重金属的测定
- 染厂公司简介(4个范本)
- PPT用中国地图(可编辑)
- 基于德育的农村中小学校园欺凌现象的解决对策优秀获奖科研论文
评论
0/150
提交评论