VIP,就是VxWorks Image Project,Workbench中最基本的工程了,用于构建系统镜像
在Workbench的Kernel Configuration里,可以通过图形化的方式来配置VIP的组件(Component)。这些组件将预先编译的库文件链接到系统镜像中,来实现不同的系统功能
创建VIP时,一般使用默认的配置;也可以根据特定需求,来选择预定义的一些profile,例如Development等
- PROFILE_SMALL_FOOTPRINT - 小内存、小内核,基本系统功能
- PROFILE_COMPATIBLE - 兼容VxWorks 5.5的最小配置
- PROFILE_DEVELOPMENT - 包含开发/调试组件,及RTP
- PROFILE_ENHANCED_NET - 典型的网络组件,例如DHCP客户端、DNS、Telnet Server等
- PROFILE_BOOTAPP - boot loader机制
创建后,还可以使用Bundle来添加一组相关的组件,例如POSIX
在开发过程中,还可以根据需求的变化,动态的调整组件。例如为了方便调试,添加Kernel Shell、EDR等组件
而到了产品交付阶段,为了减少内存消耗、加快引导速度,以及为了安全问题,很可能还会移除那些用于调试的组件,例如INCLUDE_WDB
另外,很多组件之间是有依赖关系的,Kernel Configuration会自动检测并关联它们
VIP中已经包含的组件会用粗体显示
组件的Macro Name多是以INCLUDE_开始的,少数以DRV_为前缀的是VxBus驱动
部分常见组件如下
- INCLUDE_ANSI_XXX - 多种ANSI C库
- INCLUDE_BOOTLINE_INIT - 解析引导设备配置信息
- INCLUDE_CACHE_SUPPORT - Cache的支持
- INCLUDE_CPLUS - C 的支持
- INCLUDE_CPLUS_XXX - C 的多种功能
- INCLUDE_DEBUG - Kernel Shell调试机制
- INCLUDE_EDR_XXX - EDR机制
- INCLUDE_DOSFS - DOS兼容文件系统
- INCLUDE_FLOATING_POINT - 浮点I/O
- INCLUDE_FORMATTED_IO - 格式化I/O
- INCLUDE_IPFTPS - FTP服务器
- INCLUDE_IO_SYSTEM - I/O系统及相关接口,目录与路径相关函数
- INCLUDE_LOADER - Kernel对象模块加载机制
- INCLUDE_LOGGING - 日志机制
- INCLUDE_MEM_MGR_BASIC - 内核内存分区管理
- INCLUDE_MEM_MGR_FULL - 全功能内存管理
- INCLUDE_MIB2_XXX - 多种MIB-2选项
- INCLUDE_MMU_BASIC - MMU的支持
- INCLUDE_MSG_Q - 消息队列
- INCLUDE_NETWORK - 网络系统
- INCLUDE_NFS - 网络文件系统NFS
- INCLUDE_NFS_SERVER - NFS服务器
- INCLUDE_PIPES - 管道驱动
- INCLUDE_POSIX_XXX - 多种POSIX功能
- INCLUDE_PROTECT_TEXT - 文本段写保护
- INCLUDE_PROTECT_VEC_TABLE - 像量表写保护
- INCLUDE_PROXY_CLIENT - Proxy ARP客户端
- INCLUDE_PROXY_SERVER - Proxy ARP服务器
- INCLUDE_RAWFS - Raw文件系统
- INCLUDE_RLOGIN - rlogin远程登录
- INCLUDE_ROMFS - ROMFS文件系统
- INCLUDE_RTP - 实时进程RTP
- INCLUDE_SCSI - SCSI支持
- INCLUDE_SCSI2 - SCSI-2扩展
- INCLUDE_SECURITY - 远程登录安全包
- INCLUDE_SELECT - Select机制
- INCLUDE_SEM_BINARY - 二进制信号量
- INCLUDE_SEM_COUNTING - 计数信号量
- INCLUDE_SEM_MUTEX - 互斥信号量
- INCLUDE_SHELL - Kernel Shell
- INCLUDE_XXX_SHOW - 多种系统对象的Show机制
- INCLUDE_SIGNALS - 信号Signal机制
- INCLUDE_SM_OBJ - 共享内存对象
- INCLUDE_SPY - 任务的活跃度监测
- INCLUDE_STDIO - 标准缓存I/O
- INCLUDE_SW_FP - 软件浮点
- INCLUDE_SYM_TBL - 符号表
- INCLUDE_TASK_HOOKS - Kernel调用的任务钩子
- INCLUDE_TASK_VARS - 任务变量
- INCLUDE_IPTELNETS - Telnet远程登录
- INCLUDE_TFTP_CLIENT - TFTP客户端
- INCLUDE_TFTP_SERVER - TFTP服务器
- INCLUDE_TIMEX - 测量函数执行时长的机制
- INCLUDE_TRIGGERING - 系统与用户事件的Trigger
- INCLUDE_UNLOADER - Kernel对象模块卸载机制
- INCLUDE_VXEVENTS - VxWorks事件机制
- INCLUDE_WATCHDOGS - 看门狗机制
- INCLUDE_WDB - WDB机制
- INCLUDE_WDB_TSFS - Target Server文件系统
- INCLUDE_WINDVIEW - System Viewer机制
除了组件,在VIP中还可以直接包含应用程序
也可以把应用程序编成库(.a文件),然后链接到VIP中。如果有多个.a文件,就用空格间隔开
还可以添加应用程序的头文件路径
Build VIP后,就会在工程目录里生成default/vxWorks文件。这就是最终的系统镜像,被boot loader加载到Target的RAM里执行后,就是VxWorks系统了
有了VIP,接下来就可以开发内核态应用(DKM)、用户态应用(RTP),包含内存文件系统(RomFS),创建共享库(SL)等等。我们的征途是星辰大海,从现在开始,一步步,慢慢来
这正是:
工欲善其事,必先利其器。
跬步至千里,基础VIP。