没有合适的资源?快使用搜索试试~ 我知道了~
嵌入式系统中的模块动态加载技术
需积分: 9 22 下载量 105 浏览量
2017-02-18
13:45:05
上传
评论 2
收藏 201KB DOCX 举报
温馨提示
试读
4页
本文系统介绍了嵌入式行业设计中常见的动态加载技术,并详细介绍了模块动态加载技术的原理及其应用。特别适合于那些对动态加载技术或者模块动态加载技术不太了解的同学
资源推荐
资源详情
资源评论
摘 要
提出一种适用于嵌入式系统的模块动态加载技术,设计实现简单,占用资源少,开销小,并且成功运用于
DeltaOS.可提高系统的灵活性和扩属性.介招加载与动态链接的原理和应用情况,解释相关术语,描述基本设计
思路:详细说明该技术的核心。即模块声明、调用库、两级重定位表,最后给出结论。
引 言
随着电子技术的飞速发展,嵌人式设备应用越来越广泛,复杂度也越来越高。这使得硬件和软件设计比例发生
了很大变化,软件开发的比重越来越大。然而传统嵌入式开发过程中需要将应用与操作系统编译链接成一个整体,
然后下载到目标机上运行。如果在调试过程中发现问题,需要重新编链接然后重复下载运行的过程。这样的开发
流程周期长而且繁琐,已经越来越不适应快速市场化的需要。
为了适应多样化的嵌入式应用和加快嵌入式系统的开发过程,除了需要可靠的基础平台软件的支持,如带有文
件系统、网络协议栈的 RTOS 和配套的集成开发环境,更重要的是需要可以动态扩展的系统平台。近年来,新一
代的嵌入式操作系统已经开始使用动态扩展技术:将基本系统(包括操作系统以及其他共享功能调用库)和应用程序
开发分开处理,支持模块更新和动态加载技术。很多主流的传统嵌入式操作系统厂商,如 windRiver、Green
HilIs、Lynxworks,都推出了面向航空航天、基础通信设备等领域的高可靠、高性能的 RTOS 版本,支持应用和
系统组件的动态加载和更新;而在消费电子领域,相关的操作系统厂商,如 symbian、Palm、Microsoft,更是积
极推出了具有相应功能的操作系统,在新一代移动设备上得到了广泛应用。
为了成为可动态扩展系统平台,大部分嵌入式操作系统需要使用动态加载技术。总的来说,动态加载是指应用
或者系统在运行过程中需要使用某模块的服务,于是通过一系列预定的动作将指定模块加载到系统中,让调用者
继续顺利工作。它实现的关键就是加载与动态链接技术。因为加载和动态链接互相依赖,关系紧密,所以将两者
放在一起进行讨论。
1 加载与动态链接机制
加载主要负责将模块程序从二级存储设备(比如硬盘或者 Flash)搬移到指定内存空间,并且将模块交由系统加
载器统一管理。
程序链接分为静态链接、加载时链接和运行时链接。
静态链接就是将程序和它运行所需的全部库链接成一个执行文件。它的优点是可以独立运行、速度快,
但是它链接生成的代码尺寸比较大。
加载时链接是指程序在编译链接时不会把它用到的库链接到执行程序中,而是在它被加载器加载时才解
析执行文件,依次把用到的库装载到系统中让其运行。它的优点是程序本身代码量减小,但运行时程序
占的内存并没有减小,同时增加了加载器的工作量。
动态链接是加载时链接的进一步发展,它是指将库的加载过程延迟到程序运行时执行。这种方式不会给
程序引入额外的代码,也不会增加加载器的开销,只有当应用真正使用某库时才会加载该库,减少了不
必要的空间占用。它的缺点是可能会有一些运行开销。
嵌入式系统中动态加载和普通的动态链接概念类似,但是嵌入式系统中的加载链接器有其自身的特点:它是交
叉加载,主机端做一部分工作,比如程序的重定位,执行文件的解析等等;而目标机端相对简单,主要做模块搜
索定位和空间分配,以及指定物理地址或者映射虚拟地址让其运行。一部分嵌入式系统不支持虚拟内存,应用和
内核共享存储空间。当系统加载了多个应用到系统中时,一般需要使用 overlap 技术来解决内存空间有限的问题,
即是当多个应用的运行地址空间冲突时,加载器会冻结当前暂时不运行的应用,让新加载的应用使用指定的地址
空间,PairnOS 中就采用了这样的设计。对于支持虚拟内存的嵌入式系统,加载器的工作被大大简化,每个应用
都有可以运行在同样的虚拟的空间,不需要加载器为其重定位或使用 overlap 技术,因此提高了工作效率。
Vxworks6.0,WinCE 都使用了这种设计。两种方式在不同的领域都有比较多的应用。
资源评论
leon1741
- 粉丝: 1695
- 资源: 112
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功