嵌入式VxWorks学习总结报告
完成以上两项配置,点击“Launch”按钮,就可以启动Target Server了。 再回到Tornado开发环境,在工具条上的Target Server下拉框列表中选择“192.168.80.254@your_host_name”。这时您会发现工具条中一些原先处于“禁用”状态的工具按钮,现在都已经处于“激活”状态了。
现在您就可以开始联机调试您的VxWorks应用程序了。
2.4 PC机上安装VxWorks
2.4.1 概述
在PC机上安装VxWorks,基本步骤和在Vmware上安装相同。只是在连接方式上略有不同,PC机开发时,主机与目标机中间使用网络交叉线,购买不值得,可能需要自己制作一根,网上有很多制作的图解和步骤,很容易就可以制作一根。第二点,就是网卡驱动,在主机与目标机连接中,具有通信能力之前,PC机的网卡应该保证可以使用,就要在BSP中修改或添加部分代码,在初始化中完成对网卡的驱动设置。主要的网卡驱动代码,可以根据不同的网卡型号,在网络上下载,之后根据需要再自己改写。
18
嵌入式VxWorks学习总结报告 2.4.2 开发前准备
安装VxWorks之前,需要搭建PC机,可以选用奔三架构主机,并且将其硬盘格式化为FAT16,这是VxWorks基于DOS 指令所必须的位数;准备网络交叉线,用于主机与目标机的连接,可以自己制作(见下图);目标机上保证有软驱可用,因为一般奔三机器上都会自带软驱,同时,主机上最好有虚拟软驱或者实体软驱(安装软驱或者移动软驱,个人推荐自己安装,找一台旧机器拆一个软驱就可以安装,排线很好找,即使自己去买也不会超过十元钱;而移动软驱相对较贵,一般要一百元左右);另外,准备一张格式化好的软盘,用于Bootrom的反复存储,这里必须说明的是,软盘第一次格式化的时候,最好在纯DOS下,但是Windows XP操作系统中的DOS已经并不是纯DOS,可以使用Vmware中的DOS系统,这个是纯DOS,format操作很方便,也很实用。
2.4.3 修改BSP
VxWorks中
BSP
的
配
置
头
文
件
为
config/all/configAll.h和
config/bspname/config.h.当运行配置VxWorks的初始化时,这些文件被程序usrConfig.c\\bootConfig.c\\bootInit.c调用。在开发环境中,用户可能要测试几种不同的配置,或者用户想在不同情况下指明不同的目标代码。为了编译VxWorks满足不同情况,用户必须调整使用环境。
用户Tornado环境包括三部分:主机代码、目标代码和配置文件。缺省配置文件为:
Host code $WIND_BASE/host/hosttype/bin
19
嵌入式VxWorks学习总结报告 Target code TGT_DIR=$WIND_BASE/target Configuration code CONFIG_ALL = TGT_DIR/config/all
用户可修改通用配置文件configAll.h和具体的目标板配置文件config.h。许多可选特性和设备驱动用户在文件config/all/usrConfig.c模块中可按需调整。
宏
选择
Ada支持
各种ANSI C函数库选择
缓冲支持 各种C++支持
INCLUDE_ADA
INCLUDE_ANSI_XXX INCLUDE_BOOTP INCLUDE_CPLUS INCLUDE_DEMO INCLUDE_HW_FP INLCUDE_LOADER
BOOTP支持 C++支持
使用简单的demo程序
FTP服务器支持
驻留目标机目标模块加载包 注册工具
MMU支持
硬件浮点支持
INCLUDE_CACHE_SUPPORT INCLUDE_CPLUS_XXX INCLUDE_FTP_SERVER
INCLUDE_LOGGING INCLUDE_MMU_BASIC INCLUDE_MSG_Q
INCLUDE_NETWORK INCLUDE_POSIX_XXX INCLUDE_RLOGIN INCLUDE_RPC
消息队列支持
网络支持
各种POSIX选择 用rlogin远端注册 二进制信号量
计数信号量 互斥信号量
远程过程调用
INCLUDE_SEM_BINARY INCLUDE_SEM_COUNTING INCLUDE_SEM_MUTEX INCLUDE_SHELL INCLUDE_SPY INCLUDE_WDB
C语言解释器 任务活动监视器
看门狗
目标机代理
INCLUDE_WATCHDOGS
2.4.4 网卡配置
本次开发选用的奔三架构网卡为RTL8139系列,但是因为主机出厂时间比较早,选择网卡的出场日期也应该较早,否则较新的网卡安装在比较早的主机上,是驱动不起来的,不能够使用。
网卡设置修改主要在BSP中进行,包括: 在config.h中修改
20
嵌入式VxWorks学习总结报告 /* Default boot line */ #elif
(CPU == PENTIUM3)
#define DEFAULT_BOOT_LINE \\
\l(0,0)host:vxWorks h=192.168.1.152 e=192.168.1.79 u=target pw=vxworks tn=target\
/* Network driver options */
#define INCLUDE_END /* Enhanced Network Driver Support */ #undef INCLUDE_DEC21X40_END /* (END) DEC 21x4x PCI interface */ #undef INCLUDE_EL_3C90X_END /* (END) 3Com Fast EtherLink XL PCI */ #undef INCLUDE_ELT_3C509_END /* (END) 3Com EtherLink III interface */ #undef INCLUDE_ENE_END /* (END) Eagle/Novell NE2000 interface */ #undef #undef
INCLUDE_FEI_END /* (END) Intel 8255[7/8/9] PCI interface */ INCLUDE_GEI8254X_END /* (END) Intel 82543/82544 PCI interface */
#undef INCLUDE_LN_97X_END /* (END) AMD 79C97x PCI interface */ #undef INCLUDE_ULTRA_END /* (END) SMC Elite16 Ultra interface */ #undef
INCLUDE_DM_9102_END /* (END) Davicom 9102A PCI interface */
#define INCLUDE_RTL_81X9_END
/* Include PCI support for drivers & libraries that require it. */
#if defined (INCLUDE_LN_97X_END) || defined (INCLUDE_EL_3C90X_END) || \\ defined (INCLUDE_FEI_END) || defined (INCLUDE_DEC21X40_END) || \\ defined (INCLUDE_GEI8254X_END) || defined (INCLUDE_AIC_7880) || \\ defined (INCLUDE_WINDML) || defined (INCLUDE_USB) || \\ defined (INCLUDE_DM_9102_END) || defined (INCLUDE_RTL_81X9_END) # define INCLUDE_PCI #endif
configNet.h中修改:
/* RTL 81x9 PCI (dm) driver defines */ #ifdef INCLUDE_RTL_81X9_END
#define RTL_81X9_LOAD_FUNC sysRtl81x9EndLoad #define RTL_81X9_LOAD_LOAN TRUE #define RTL_81X9_LOAD_STRING \
IMPORT END_OBJ * RTL_81X9_LOAD_FUNC (char *, void *); #endif /* INCLUDE_RTL_81X9_END */
END_TBL_ENTRY endDevTbl [] = {
21
嵌入式VxWorks学习总结报告 #ifdef INCLUDE_EL_3C90X_END
{0, EL_3C90X_LOAD_FUNC, EL_3C90X_LOAD_STR, EL_3C90X_BUFF_LOAN, NULL, FALSE},
#endif /* INCLUDE_EL_3C90X_END */ #ifdef INCLUDE_ENE_END
{0, END_ENE_LOAD_FUNC, END_ENE_LOAD_STRING, END_ENE_BUFF_LOAN, NULL, FALSE},
#endif /* INCLUDE_ENE_END */ #ifdef INCLUDE_RTL_81X9_END {0,
RTL_81X9_LOAD_FUNC,
RTL_81X9_LOAD_STRING,
RTL_81X9_LOAD_LOAN, NULL, FALSE},
#endif /* INCLUDE_DM_9102_END */
{0, END_TBL_END, NULL, 0, NULL, FALSE} };
sysLib.c中修改:
/* include rtl81x9End driver support routines */ #ifdef INCLUDE_RTL_81X9_END
IMPORT STATUS sysRtl81x9PciInit (void); #endif /* INCLUDE_RTL_81X9_END */
同时,可将网络下载或者自己编写的RTL8139驱动文件:rtl81x9.c、rtl81x9.h、sysRtl81x9End.c,将此三个文件直接拷贝到pcPentium3目录下即可。至此,就完成了BSP的初步修改和网卡的配置。
2.4.5 制作启动盘
启动盘主要是启动软盘的制作。软盘插拔方便,制作简便,而且有必要的时候,每次制作启动盘时,最好先再次格式化,这个软盘就很有优势。下载制作的VxWorks启动盘类似于Windows操作系统中的DOS引导区,主要是VxWorks在目标机上运行前的引导和初始化工作,包括网络加载VxWorks Image的IP地址,网卡的初始化等。
启动盘的制作是通过Build bootroom实现的。详细过程可参考Vmware上安装VxWorks中的具体实现步骤,现在只简单介绍如下:
(1)打开Tornado开发工具,然后选择菜单中的build->build boot rom生成:选择一个BSP如pcPentium3,生成文件格式可选bootrom,编译工具为gnu,之后确认OK就可以重新建立bootrom了。
22