嵌入式设备驱动程序独立加载技术研究

2016-05-30 01:30刘彦龙
科技风 2016年5期
关键词:驱动程序嵌入式

刘彦龙

摘要:想要实现对嵌入式系统驱动程序代码的独立加载和升级,就要在了解嵌入式软件开发特点的基础上,通过使用独立加载等技术,完成相关的升级任务。该技术颠覆了以往对于多个嵌入式文件合成的传统模式。该技术的应用原理主要是将软件模块进行分离,通过硬件引擎扫描设备对硬件进行全面扫描,在通过程序加载器构建相对应的驱动程序链表以及设备链表,最后通过每个软件模块的位置信息,将其分别加载到不同的应用程序和驱动程序之中,以此来完成加载合成任务。该技术的研究与应用为各软件的独立应用和开发提供了十分便捷的条件,也为软件模块的动态扩展增加了优势,最大限度的降低了协作嵌入式软件时人力与物力的投入。

关键词:嵌入式;独立加载;驱动程序;独立升级

以往在进行嵌入式系统软件的开发时,一般是将多个不同的模块进行编译以及合成,变成一个目标文件、操作系统目标或者应用程序目标文件,该方法的目的就是为了将文件进行固化。这种做法的优点是简单便捷易操作。但是计算机系统的全面发展,嵌入式系统作为整体的一个分支,也变得越来越复杂,传统的方法在如今庞大的软件规模之下显得越来越力不从心。另外,现在的嵌入式系统大多数都不是由同一个单位进行研制,而是由多个单位共同协作完成,因此当对一个软件模块进行修改时,我们无法确定该处修改是否会对其他软件模块以及整个系统产生影响,在最后的调试与检测阶段就会投入更大的精力,严重影响进度。

如果将传统的手段进行颠覆,将各个模块都作为独立的个体,分别对其进行编译和加载,这将大大保护了各个模块的开发安全性和可靠性。通过研究,在VxWorks5.5操作系统下,驱动模块与应用程序代码的分离以及独立加载可以成为现实。该方法的出现为嵌入式软件的开发以及提高开发研制效率提供了有效的途径。

一、模块分离

想要真正实现不同的驱动模块与程序代码的独立加载,前提是不同的模块之间可以被单独分离出来,自成一体,并且将各个模块编译成相对独立的有效文件。以往使用的方法是目标机直接将驱动程序库,并将程序库连接到应用程序里,同时在主机上编译出目标文件,最后再在目标机上执行该目标文件。该方法叫做紧耦合式目标文件方式。

为了实现将各个软件模块分离和独立,我们需要将以往的紧耦合式目标文件方式变成松耦合式目标文件方式。将紧变成松就是为了能够保证各个驱动程序从各个不同的应用程序中分离开,继而各自生成不同的目标文件。在该项任务完成后,我们需要将不同的目标文件保存在目标机中对应的位置,并且对现有文件进行优化和完善,为其以后的加载以及运行提供有效的选项以及运行参数。

二、独立加载方案

在整个独立加载方案中,最为核心以及关键的内容是设备管理器。当硬件自动扫描引擎检测到硬件设备时,就会马上将该设备信息通知给程序加载器。程序加载器会按照接收到的信息在整个设备信息库中进行搜索,当找到想匹配的配置文件后,就可以根据配置文件的位置进而获得存放驱动程序目标文件的具体位置,这样就可以实现自动加载。整个任务的执行过程就是硬件设备被逐个扫描的过程,当所有设备的驱动程序都按照对应的配置文件找到目标文件的存储位置并且完成独立加载后,该项任务完成。

三、软件实现

(一)硬件自动扫描

首先,将系统启动,操作系统被赋予执行控制权。首先,操作系统要在制定的目录中搜索并完成设备管理器的加载,以便其能够执行接下来的任务。在一般操作中,有两类设备可能需要设备管理器扫描加载:其一是PCI设备,其二是非PCI设备。对于PCI设备,如果设备管理器能够根据PCI的总线号以及设备号等查找到该设备,那么就可以将其调价到设备链表之中;对于非PCI设备,则需要给设备管理器预设非PCI设备信息,然后才能对该设备进行查找以及添加设备链表的工作。

设备链表中的所有设备,都可以通过设备链表进行依次查找,并且对查找到的设备进行驱动,真正实现独立加载以及驱动的目的。

(二)驱动加载

驱动描述文件和驱动目标码是所有驱动程序都需要的两个文件。驱动目标码指的就是驱动程序中的可执行代码。当系统获取设备信息以后,可以开始分析程序的描述文件,并且根据根据想跟文件以及加载驱动程序码对相应的执行相应的入口函数。

驱动描述文件可以等同为一个格式化的文本文件。文件中包含许多与设备相关的重要信息,例如支持操作系统、文件格式、驱动版本号等等的信息。不同的设备命名格式也不一样。例如PCI设备的安装文件的命名方式就比非PCI设备的要繁琐一些,在具体的操作中要注意检查和区分。

四、结束语

对于嵌入式软件模块独立加载的整个课题来说,驱动程序与应用程序代码的分离以及独立加载只是该课题中的一个特例,但该方法也能用在多个应用程序模块的分离以及独立加载,有举一反三的效果。该技术的实现,大大改进了传统加载模式的弊端,将硬件的升级以及部分的改进都变成一件简单的事情,大大缓解了相关从业人员的从业压力,并且更是为软件模块的独立升级提供了便捷的方法。对于软件模块的开发与研制更是起到了不可小觑的积极推动作用。

目前为止,嵌入式设备驱动程序独立加载技术在许多产品中都由广泛的应用,这也大大验证了该方法的有效性和实用性,相信该方法在未来将完全取代传统方法,成为一次新的颠覆。

参考文献:

[1]Wind River 公司Workbench Online Help(SystemWorkbench 3.2 在线帮助)[M].Wind River 公司,2010.

[2]张杨,于银涛.Vxworks 内核、设备驱动与BSP 开发详解[M].第2 版.北京:人民邮电出版社,2011.

[3]VxWorks 启动解析B/OL].[2009-09-21].http://blog.csdn.net/bianhonglei/archive/2009/09/21/4576534.aspx.

[4]VxWorks 动态加载.out 文件[EB/OL].[2010-04-09].http://blog.sina.com.cn/s/blog_4e6f376d0100huhr.html

[5]孔祥营,张宝山,俞烈彬. VxWorks 驱动及分布式编程[M].北京: 中国电力出版社,2007.

[6]VxWorks 系统中映像及其加载过程[EB/OL].[2006-07-26] .http://denven.blog.hexun.com/4813569_d.html.

[7]用函数jump 表解决模块加载顺序问题[EB/OL]. [2007-01-03].http://blogold.chinaunix.net/u/20871/showart_223263.html.

猜你喜欢
驱动程序嵌入式
阻止Windows Update更新驱动程序
TS系列红外传感器在嵌入式控制系统中的应用
嵌入式系统通信技术的应用
计算机硬件设备驱动程序分析
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器
基于MPC8280的CPU单元与内部总线驱动程序设计
基于WDM的 USB键盘驱动程序开发*