快速业务通道

嵌入式系统中的模块动态加载技术 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
的嵌入式系统,加载器的工作被大大简化,每个应用都有可以运行在同样的虚拟的空间,不需要加载器为其重定位或使用overlap技术,因此提高了工作效率。Vxworks6.O,WinCE都使用了这种设计。两种方式在不同的领域都有比较多的应用。

文中提出的模块动态加载技术是基于支持MMU(Memory Management Unit)的32位嵌入式操作系统,采用了加载与动态链接技术。使用该技术构建的嵌人式系统面向高端市场,特别是对系统可靠性、安全性要求很高的领域。在DeltaOS新一代高可靠的版本HAR(High Available Reliable system)的研发过程中,即成功地实现了基于该设计的加载器LambdaLoader,达到了预期的性能要求。

2 模块动态加载的设计2.1 设计思路首先定义一些概念:模块、目标程序、接口函数地址表和调用库(call Library)。①模块,主要是指加载器加载的一个单位,并且这里模块的概念主要是强调它是为应用或者系统提供一系列服务的提供者。②目标程序,是指模块的使用者。它可以是应用,也可以是另一个模块。③接口函数地址表(文中也称之为模块重定位表),指在模块中有一个数组表,该数组表的内容是该模块对外提供的函数接口的地址。④调用库,是供模块调用者链接使用的专有库。它与相关模块一一对应,将封装了的模块接口供目标程序使用。除此以外,它还有一个运行时才确定的模块重定位表地址指针和模块动态查找定位的代码。

如果在系统中要实现动态加载,首先需要一种模块定位机制,使得调用者能够在系统中动态定位需要的模块,其次是要能让模块与目标程序动态的关联在一起,协调工作。为了解决这些问题,需要一系列相关的设计:规定模块的声明方式;简化目标机端模块地址空间定位的工作;重定位表的机制等等。基于这样的设计,系统可以比较顺利地实现动态加载。模块动态加载的工作流程如图l所示。这里描述的主要是目标机端的工作。

2.2 模块的声明模块首先要定义它的相关属性。这里使用模块声明文件来完成这个工作。模块声明文件中需要定义:模块名字、版本、对外提供的API接口。在系统编译模块程序后,会调用一系列的script代码。这些script会根据模块名字查找模块对应的模块声明文件,并根据该文件生成供模块调用者使用的调用库和与模块一起链接的附加库。 附加库包含系统后台通过调用script生成的接口函数地址表和模块注册函数。在每个模块的初始化函数中,会调用一个模块的注册函数(该函数主要工作是向系统注册模块的名字和接口函数地址表地址)。当模块被加载时,初始化函数会被系统调用,向系统注册模块信息,此后模块交由加载器统一管理。

嵌入式系统中的模块动态加载技术(2)

时间:2007-05-30 单片机及嵌入式系统应用

2.3 调用库 每个模块在提供一个模块重定位表的同时,必须提供一个与之对应的模块调用库。别的目标程序必须并且只能通过调用库来使用这个模块提供的服务。每个调用库都有一个存储本模块重定位表的地址指针变量。该变量在模块被目标程序第一次使用时会被初始化为相应模块重定位表地址。

在模块第一次被目标程序使用即开始动态加载过程时,首先运行的是调用库的库初始化代码(Library initialcode),它通过指定的系统调用来初始化库中的模块重定位表基地址指针。此后每次目标程序使用模块提供的函数接口时,都通过以下公式得到该接口的实际地址:模块接口实际地址=模块重定位表基地址+函数index×4

在该公式中,函数index是指对应函数在模块重定位表中的数组下标值。因为根据模块声明文件生成的调用库中已经包含了每个函数的索引信息(index),同时在32位系统中需要乘以4得到准确的偏移量,所以当调用库中重定位表地址被初始化后,可以通过这样一个简单计算得到指定接口实际地址,完成函数调用。

当一

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号