苏亚娟 荣音
摘要:在嵌入式计算机系统中,一般包含上位机与下位机控制板卡;这种系统一般是一种型号的控制板卡对应一款上位机软件,优点是功能简洁明了,缺点是用户需要针对不同板卡安装不同的软件,对用户要求较高或增加额外的软件成本。本文提出一种通用的统一抽象板卡概念,通过抽象API,可以支持多种型号的控制板卡,实现软件使用一致性,方便应用软件工程师的编程。
关键词:嵌入式;计算机系统;多型号;统一抽象板卡;API
中图分类号:TP273.5 文献标识码:A 文章编号:1007-9416(2019)11-0132-02
0 简介
一般控制板卡的上位机软件最初总是对应初始版本的硬件板卡,当板卡成系列、多型号发展时,原先各自的独立上位机软件不便于管理与使用,就需要设计统一的程序,以便管理多种型号的设备,如在文献[1]中设计了一种同时支持PCI与USB板卡的控制软件。本文也是工作需要,根据需求设计了一种通用的统一抽象板卡API,以支持多型号的控制板卡。
1 软件需求
随着公司业务的发展,研发的板卡需要定制化、多樣化与系列化,因此迫切需要设计一种接口来隐藏这种硬件多样性,提出开发需求如下:
(1)从应用程序角度看,能够隐藏硬件特定信息;(2)支持多型号的控制板卡;(3)支持每种型号的多个数目的控制板卡。
应用开发人员可以用这个抽象板卡的API,编制程序而无需考虑实际板卡类型。单个应用程序可以控制多个板卡,而且当有新的板卡加入时,无需大的改动,就能支持。
抽象板卡的API,设计上不能直接操控硬件板卡,必须借助原先控制板卡的提供的API。因此,软件工程的角度看,统一抽象控制板卡API,只有两个外部接口,一边是上层的主机程序,另一边是下层具体的激光控制板卡API。统一建模语言(Unified Modeling Language,UML)[2-3]是软件工程中一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,UML是面向对象设计的建模工具。抽象板卡API的UML用例图如图1所示。
2 抽象接口组成分解
抽象接口的功能分解图如图2所示。
抽象接口由三个层级的动态库成分组成,从上至下依次为:
(1)LC.HWInterface.dll。(2)LC.HWMgr.dll。(3)LC.B1Mgr.dll, LC.B2Mgr.dll。
2.1 LC.HWInterface.dll
LC.HWInterface.dll包含了直接由上位机软件调用的API函数,在该DLL中会引用下层的LC.HWMgr.dll。LC.HWInterface.dll包含三个类:Job、DeviceStatus与HWController。
Job类提供了上层应用软件访问特定激光控制器的便利途径,从而隐藏了多种激光器控制板卡的复杂性。每个打标任务必须对应一个Job对象,而每个Job对象又绑定了一个控制板卡。Job对象还包含当前任务的完成情况、错误状态等。
DeviceStatus对象提供了上层软件对特定激光器状态的单点访问。在DeviceStatus对象的整个生命周期内可以对激光器的状态随时查询。
HWController则对连接的设备进行各种控制管理提供方法。比如,初始化硬件、创建Job对象与DeviceStatus对象、关闭硬件等。
2.2 LC.HWMgr.dll
LC.HWMgr.dll包含了公共接口,这些接口从LC.B1Mgr. dll,LC.B2Mgr.dll或其他新的板卡支持Dll里实现的函数抽象出来的。所以,如果需要整合新的控制板卡,就需要实现LC.HWMgr.dll中定义的接口。LC.HWMgr.dll就是为了隐藏控制卡的类型而引入的,LC.HWInterface.dll并不需要知道控制卡的信息,仅仅有接口的引用信息。
LC.HWMgr.dll包含了一个类:HWCreator.和三个接口:
ILaserHW、IHWMgr、和IStatusUpdate。
具体实现参考第4节抽象接口类图。
2.3 LC.B1Mgr.dll
LC.B1Mgr.dll中实现了LC.HWMgr.dll中定义的各个接口,且调用特定的控制板卡API。如果需要整合新的控制板卡,同样的需要实现上面定义的接口。LC.B1Mgr.dll在编译时候并不需要链接到API中,而是在LC.HWMgr.dll中根据配置文件动态的加载进。所以,对于新的控制板卡,同样需要新写一个动态库,且在配置文件中给出必要的信息,根据需要动态加载。
包含三个类:B1HWMgr、B1Controller、和NetDevice Mgr。具体实现参照第4节抽象接口类图。
3 抽象接口类图
上位机应用程序需要创建一个HWController实例,一个或多个打标Job实例,对应每个打标激光设备的DeviceStatus实例。
HWCreator会根据配置文件来创建B1HWMgr或B2HWMgr的实例。在配置文件中需要指定控制板卡的类型。
抽象接口类图,如图3所示。
4 重要的公共方法整理(表1)
其他类略。
5 结论
该设计成功整合了目前公司的两种型号的控制板卡,并实现了统一管理与使用接口。虽然本文仅以某激光公司的软件开发为例,设计了支持多种类型控制板卡的接口函数库,但是该设计方法,适用于各类用途的支持多控制板卡的接口设计,具有很强的借鉴意义。
参考文献
[1] 赵文路.多模式多接口激光标记控制软件的设计与实现[D].华中科技大学,2011.
[2] 宋雨,赵文清.软件工程[M].中国电力出版社,2007.
[3] Grady Booch,等著.UML用户指南(第2版)[M].人民邮电出版社,2012.