论文部分内容阅读
嵌入式系统的广泛应用需要良好的软件系统支撑。随着嵌入式系统的深入发展,系统的动态可扩展能力已经成为一个基本的需求,迫切需要一种机制能在运行状态下配置系统,也就是系统在运行状态下可以动态地添加模块,这种机制就是本论文要研究的动态加载机制。本论文中所研究的动态加载机制是从零开始的加载机制。这样系统只需要一个动态加载机制,就可以动态地加载模块配置适合不同应用需要的嵌入式系统。本文对比分析了目前存在的几种加载方式:基于Java的动态加载方式、Windows的动态链接库原理以及嵌入式Linux的动态加载方式,在此基础上,提出了一般意义下的动态加载机制的原理,并给出了动态加载机制的过程模型以及该过程模型的算法。动态加载机制的原理要求系统具有动态的加载和动态的解析的能力。动态加载机制运用动态链接原理,模块只有在调用执行时才被链接入系统。动态加载分为下载、加载和卸载三个操作,下载完成从远程下载目标模块到本地,在加载操作里要完成读入模块到内存,然后对模块的未解决的外部引用进行解析。当模块不再使用时就从内存中卸载。通过对一般意义的动态加载原理和动态加载过程中的关键问题进行深入地分析和研究后,本文提出了一种基于.COM文件格式的动态加载机制(文中称为DLoader)。论文在深入分析了作为可加载模块——.COM文件模块格式、.COM文件模块的名字空间管理方案以及.COM文件的加载方式等动态加载的关键问题后,给出了一个基于特殊环境下的动态加载系统的原型方案的设计。该方案采用了μC/OS-Ⅱ的实时内核来管理动态加载系统的任务,用我们设计的动态加载机制模块来加载可加载模块。尽管该动态加载方案还不是完全意义上的从零开始动态加载的系统,但是,它为我们最终实现本文要研究的动态加载机制提供了理论和技术经验的积累,为我们最终实现论文所构想的动态加载机制提供了很好地借鉴作用。最后,论文在远程自动监控系统平台上验证了该动态加载方案的有效性。本论文设计的动态加载方案在保证嵌入式实时性和安全性的前提下,使得系统具备高度的灵活性和扩展性,整个系统具有较小的固定框架,可以动态地加载模块以满足不同应用的需求,这对系统的实时更新以及软件升级等方面有很大的应用价值。