在VxWorks系统下进行驱动或者应用程序开发,通常有两种情形,一种是源码开发,拥有所有的源代码,建工程和编译生成应用或者系统镜像,都基于源码。另外一种是基于库的开发,可能是一些商业的库,也可能是自己为了保护知识产权,特意制作成库文件提供给使用方。

最近一个项目中开发了几块CPCI板卡,驱动已经驾轻就熟,可是这次甲方需要将驱动封装成库,这个以前没做过,研究了一下,现于大家分享。

最简单的办法,是新建一个download工程,把所有源文件加进去。

以Tornado2.2为例,可以在工程管理树那里选Builds选项卡(另外两个是files和vxworks),再右键点你所用的Buid模式,选 properties,然后再rules选项里选输出格式。选archive输出.a文件,选object输出.o文件。

同样,在需要包含.o和.a文件的那个工程里,在Builds->properties->macros里选择PRJ_LIBS,如果是vxworks,则选EXTRA_MODULES,然后填入需要包含的.o和.a文件的全路径。然后编译就OK了。

注:实际应用中将Builds->properties->rules 中选择输出格式为archive就OK了 ,编译后库文件的名字就是创建工程的名字。

使用方法:

1. 创建.h头文件
#ifndef __CPCIDRIVER_H__
#define __CPCIDRIVER_H__

#ifdef __cplusplus
extern "C" {
#endif

typedef  struct
{
 DEV_HDR   devHdr; /* 必须 */

}
CPCI16IO_DEV;

/* 其他定义 */

IMPORT STATUS cpci32ioInit(void); //声明外部函数
IMPORT STATUS cpci32ioDrv(void);
IMPORT STATUS cpci32ioDevCreate(char *devName);

#ifdef __cplusplus
}
#endif

#endif /* __INCcpci16iodev */
2. Makefile文件修改

LIB_EXTRA 中添加相应.a文件