发明内容
本发明的目的在于提供一种对底层功能软件及操作系统均有屏蔽作用,即,能够屏蔽硬件的细节差别而实现与设备对象无关的目标设备硬件管理(DOHM)软件接口,从而为应用层软件提供一个标准的接口,便于系统的调试、维护和移植。
本发明提供一种实现与设备对象无关的DOHM软件接口,它连接在软件系统中的底层功能软件和应用层软件之间,包括:目标设备访问管理单元(Device Object Access Management=Doam),用于根据应用层软件读写操作要求,在已注册的底层功能软件接口中进行指配连接,从而间接完成应用层软件对底层功能软件的读写操作;目标设备事件访问单元(Device Object Event on Access=Doea),用于根据应用层软件对传输计数事件及错误事件的访问要求,在已注册的底层功能软件接口中进行指配连接;目标设备连接单元(Device Object Connection=Docx),用于根据应用层对设定目标的连接要求,在已注册的底层功能软件接口中进行指配连接;和目标事件连接单元(Device Object Eventon Connection=Doec),用于根据应用层对事件标识的连接要求,在已注册的底层功能软件接口中进行指配连接。
本发明所提供的实现与设备对象无关的DOHM软件接口还包括操作系统接口,用于任务管理、信号量处理和定时功能。
在上述的实现与设备对象无关的DOHM软件接口中,所述DOHM软件接口除了初始化函数以外均根据应用层软件访问类别和参数来连接应用层软件和底层功能软件。
在上述的实现与设备对象无关的DOHM软件接口中,所述各单元在完成初始化之后以及在底层功能软件初始化之前,把应用层软件调用均指向默认的动作,便于应用程序在底层功能软件完成之前进行开发调试。
采用了上述的技术解决方案,即,在底层功能软件和应用层软件之间增加了目标设备硬件管理(DOHM)软件接口。DOHM层用以屏蔽硬件细节差别,包括操作系统,为应用层软件提供一个标准的接口,也即允许硬件的改变,比如硬件元器件、结构,甚至功能、板卡、操作系统等的改变,而对应用层软件却提供不变的接口,从而使软件系统结构更加清晰明了,便于系统的调试、维护和移植。本发明所提供的DOHM软件接口适用于任何具有着硬件底层的功能软件(包括驱动程序)和应用层的软件的软件系统,尤其在较大的模块化软件系统中更能体现本发明解决方案的优越性。
具体实施方式
如图1所示,软件系统分为应用层软件1、DOHM软件接口2(简称DOHM层)和底层功能软件3。其中,应用层软件1包括错误定位程序11、板级测试程序12、调试程序13。
DOHM软件接口2的初始化包括二级内容,第一级为DOHM的初始化,这时把除了明确的信息类调用外的所有的应用程序的调用都指向一个默认动作。第二级为底层的初始化,底层中的每个功能模块都有一个初始化函数。在初始化时,首先,通过初始化好的DOHM层获取硬件板的类型及功能模块的个数,各功能模块的基地址等信息;然后,将各功能模块逐个初始化为默认状态;接着,再将应用程序所要调用的底层功能软件接口注册到DOHM层;最后,分配所需要的操作系统资源。这样应用层软件程序就可以利用标准的接口通过DOHM层来调用底层功能软件。
上述的DOHM层,其实上就是一个指针层,位于应用层和底层之间。它把应用层要执行的函数指向底层功能软件接口。作为指针层,它只起连接指向的作用,并不知道底层究竟为上层的命令做了什么硬件动作。另外,DOHM层相对比较独立,当底层的硬件环境变化时,仅仅只需改变配置文件就可以了。在DOHM初始化时,DOHM层向应用软件提供默认的动作。在底层功能软件进行初始化时,它把所有的向上接口分类的注册到DOHM层。只有注册到DOHM层的底层功能软件接口才有可能被应用层调用。底层功能软件的注册是通过标准的函数来实现的,如下:
dohmFdeclare(object,object_type,operation,attribute,logical_function)
第一个参数object就是访问单元,前面提到的Doam,Doea,Docx,Doec等;
第二个参数object_type是访问对象类型,比如:以太网交换,数字信号处理,串口等等;
第三个参数operation是操作类型,比如:读操作,写操作等;
第四个参数attribute是访问的属性,比如:设置回环,配置以太网MAC地址等;
最后一个参数logical_function是底层功能软件实际执行的函数。
注册后,应用层软件程序根据这些参数通过DOHM层调用底层功能软件。
下面来说明一下Doam的写操作,调用时,先根据访问类型和访问数得到一个访问号。如下:
accId=doamFid(<access type>,<access nbr>);
accId是一个带有前两个参数的数据结构,现在就可以对设备各类型进行读写操作,其它几种访问的方法也雷同,如下:
doamFwrite(&accId,doamCatt_...,&value)。
除了初始化函数,应用层对底层的所有调用都是通过DOHM层来实现,本发明DOHM软件接口是根据应用层软件访问类别和参数来连接应用层软件和底层功能软件的,向上采用标准的应用接口,向下采用标准的声明接口,实现与对象无关的软件接口。
如图1和2所示,DOHM层包括四类应用层软件访问,即:第一类,Doam(Device Object Access Management)为目标设备访问管理单元21;第二类,Doea(Device Object Event on Access)为目标设备事件访问单元22;第三类,Docx(Device Object Connection)为目标设备连接单元23;以及第四类,Doec(Device Object Event on Connection)为目标事件连接单元24。另外,为了独立于各种操作系统,DOHM还增加了一个操作系统接口25。DOHM层2根据这些访问类别来连接应用层软件1和底层功能软件3。
目标设备访问管理单元21,根据应用层软件1读写操作要求,在已注册(或配置)的底层功能软件接口中,例如以太网、TDM(时分多址)等类型的模块中进行指配连接,从而间接完成应用层软件1对以太网、TDM等类型的功能模块31的读写操作。
目标设备事件访问单元22,根据应用层软件1对传输计数事件及错误事件的访问要求,在已注册的底层功能软件接口中,例如以太网、TDM(时分多址)等类型的功能模块31中进行指配连接。
目标设备连接单元23,根据应用层1对两个目标(例如TDM的两个时隙)的连接要求,在已注册的底层功能软件接口中进行指配连接。
目标事件连接单元24,根据应用层对事件标识(例如计数器、状态等事件类型、ATM(异步传输模式)、Ethernet(以太网)等事件性质和事件号)的连接要求,在已注册的底层功能软件接口中进行指配连接。
操作系统接口25,用于任务管理(例如切换)、信号量处理和定时器(例如中断等管理)等。
当硬件信息改变,比如硬件元器件有所改变或升级,操作系统的改变,甚至板卡变更,只需改变DOHM层的配置文件和底层功能软件的注册函数。应用层软件无需改变。这样升级或移植时可以减少很多接口修改。减少人力成本及错误的发生。另外,为了节约开发时间,一般应用层软件、底层功能软件及硬件同步开发。为了隔离应用层软件、底层功能软件及硬件,DOHM层可以把所有的应用层软件调用都指向默认的动作而不是底层功能软件。这样便于应用软件独立调试。加速开发进程。
本发明在应用层和底层之间增加了DOHM层,因此肯定会增加代码量和存储器容量。而且应用程序不知道任何硬件信息,代码上看应用程序的调用不是很直观。所以在简单的系统里,或不存在系统硬件改变,升级,移植的软件结构里不适合使用本发明。
综上,本发明DOHM软件接口是位于应用层和底层之间实质上起一个指针层作用,即把应用层要执行的函数指向底层功能软件的接口。作为指针层的DOHM层,只起指向连接作用,并不涉及底层为上层命令所作动作的本身。另外,DOHM层相对比较独立,当硬件环境变化时只需改变其配置文件即可。因此DOHM层屏蔽了硬件细节差别和操作系统。
以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以作出各种变换或变型,因此所有等同的技术方案也应该属于本发明的范畴之内,应由各权利要求限定。