Vxworks学习资料整理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Vxworks学习资料整理
Vxworks学习资料整理 (1)
1 基于硬盘启动的Vxworks环境搭建 (3)
2 Vxworks引导盘制作 (6)
2.1 通过DOS加载VxWorks方法 (6)
2.2 Bootrom三种类型 (7)
2.3 VxWorks映象 (7)
2.4 Bootrom.sys最快制作方法 (8)
2.5 从网络引导 (8)
2.6 从本地硬盘引导 (9)
2.7 制作bootrom文件 (9)
2.8 Bootrom编译步骤 (11)
2.9 用BSP生成Bootable工程(即我们的程序文件) (12)
2.10 FTP Server下载VxWorks (14)
3 Tornado调试环境的建立 (17)
3.1.1 配置文件config.h (17)
3.1.2 网络连接 (18)
6 从主机搭接(attach)到目标机 (21)
7.1.3 串口连接 (21)
4 4.Config.h文件注释说明 (22)
4.1 启动行说明 #define DEFAULT_BOOT_LINE \: (22)
4.2 Config.h 文件说明 (23)
4.3 启动参数结构体 BOOT_PARAMS (35)
4.4 booting过程介绍,比较详细 (39)
5 sysClkRateGet();返回系统时钟每秒的tick数量, tick详解 (43)
6 中断应用设计要点 (44)
7 驱动程序设计 (49)
8 缩短vxworks的启动时间 (52)
9 调试篇 (55)
10 驱动编程步骤 (55)
10.1 将驱动程序增加到“系统驱动程序列表”中 (55)
10.2 将设备增加到“系统设备列表”中 (55)
10.3 打开设备,得到文件描述符 (55)
10.4 SELECT机制的使用 (56)
10.4.1 select( )函数翻译 (58)
11 VxWorks系统的网络驱动(END) (60)
12 VXworks操作系统中信号量用于多任务同步与互斥的讨论 (62)
12.1 二进制信号量实现互斥和同步 (64)
12.1.1 互斥的实现: (64)
12.1.2 同步的实现: (65)
12.2 互斥信号量 (67)
13 Tornado的文件目说明录 (68)
14 Shell 内置命令说明 (72)
14.1 任务管理 (72)
14.2 任务状态信息 (72)
14.3 系统修改和调试 (73)
14.4 对象命令( WindSh Commands for Object Display ) (73)
14.5 WindShell and Browser, Shell 命令 (74)
15 驱动篇 (82)
16 中断篇 (83)
16.1 中断服务程序ISR编写注意事项 (83)
16.2 中断号与中断向量的转换 (84)
16.3 安装中断服务程序 intConnect() (84)
16.4 调试中断服务程序方法 (84)
17mkboot批处理命令详细解释 (84)
18 MakeFile 说明 (86)
19 VxWorks5.4中的输入输出重定向 (89)
19.1 vxworks屏幕输出, 一般来说用printf都是串口/shell输出,串口输出就可以
到屏幕上了? (89)
19.2 20.2 VxWorks中针对X86开发时标准输入输出的重定向? (90)
20 怎样加入外部.o文件? (93)
21 如何在Vxworks中使用 cd ,pwd , ls 命令:启用File System and Disk Utilities 组件(INCLUDE_DISK_UTIL),可在shell下用pwd/cd/ls等命令 (94)
22 Error: image is larger than 524288 bytes (94)
23 proxyArpDefaultOn()未定义解决方法? (95)
24 如何将VxWorks的系统定时间隔或系统Ticks设置为1ms (95)
25 read/write、fread/fwrite、fopen/open有什么区别 (96)
26 快速启动 (100)
27 启动时报ATA0a和硬盘启动相关问题 (100)
28 如何安装USB2.2新版本及编译USB驱动? (101)
29 WindML、图形界面相关问题 (102)
29.1 WindML,ugldemo出错? (102)
29.2 5101 VxWorks黑屏问题? (102)
29.3 添加ugldemo.c后,编译报undefined reference to “ugltextdraw”错误
一大堆? (103)
29.4 WindML 中文字库显示? (103)
30 VxWork6.8相关问题 (105)
30.1 ELF和bin文件的区别? (105)
30.2 diab和GNU的区别? (106)
31 No such file or directory错误? (108)
专业术语:
WTX协议:(Wind River Tool eXchange): 用于开发机内部Tornado工具与Target Server 之间通信.
WDB协议:(Wind DeBug): 用于主机Target Server与目标机之间的通信.
1基于硬盘启动的Vxworks环境搭建
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS)。

它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。

在美国的 F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。

下面我们将详细讲述VxWorks环境的搭建。

步骤一:安装Tornado开发环境,我在实际开发的时候使用的是Tornado2.2,安装过程比较简单,在这里不再赘述。

步骤二:将CPU板的BSP放在Tornado2.2\target\config目录下。

这里简单介绍一下Tornado2.2的目录树结构。

在线的HTML 文档Tornado 的主机驻留工具SETUP 程序共享的XDR 代码VxWorks OS ,板支持包
Tornado 目录树
的支持文件host 目录树
Tornado 和GNU 的可执行文件Tornado 工具库函数Host-os 命名跟硬件和操作系统有关,有效的名字为:
x86-win32 所有Windows 主机
sun4-solaris2 Solaris 主机
VxWorks 的文件
工程target 目录树
源代码通用的配置文件板级支持包Vxworks 组件描述文件和配置
从上面的目录树中我们可以很清楚的看到,BSP 应该放在Tornado\target\config 下,在这次实验中,我们还将使用host\ x86-win32\bin 下的文件,所以将host 目录一并介绍。

问:BSP 为何物,用来做什么用?和VxWorks 操作系统的关系如何?
答:BSP 是(Board Support Package ),也叫板级支持包,它为在目标板上运行Vxworks 提供初始环境,并为VxWorks 内核必须使用的与目标板硬件相关的系统调用提供函数库。

问:BSP 和驱动程序有什么区别?
答:主要作用:
BSP :
1. 初始化CPU
2. 初始化内存
3. 初始化外设到一个确定的状态
4. 完全驱动BSP 必须的设备
a) 必须设备:定时器,串口
b) 可选设备:中断控制器(一般也是必备),网络接口设备
5. 提供与目标板相关的底层函数
驱动程序:
完全驱动设备到一个可用的状态
初始化工作:
BSP:
1. 确定设备的I/O 地址
2. 确定中断向量
3. 初始化外设到一个确定的状态,因为有些设备在上电的时候状态是未知
的。

4.关闭该设备的中断
驱动程序:
1.编写初始化程序
2.编写使用该设备的驱动程序
3.编写ISR(中断服务程序)
4.编写使能程序(可选)
运行环境:
BSP:
1.原始环境,没有任何可用的资源,全部过程和状态由自己控制。

2.启动完成后,会向VxWorks提供与硬件相关的函数库。

a)使用串口的系统调用
b)使用系统定时器的系统调用
c)使用系统中断控制器调用
驱动程序:
1.基于VxWorks
2.是VxWorks的标准任务
3.可使用基于VxWorks的各种标准函数和标准服务。

4.调用ISR(中断服务程序)时需要特别注意
5.当时用VxWorks的系统调用时,可能使用BSP提供的代码。

2Vxworks引导盘制作
2.1通过DOS加载VxWorks方法
1)将CF卡或硬盘制作成DOS6.22的启动盘。

2)将上面的5个文件拷贝到CF卡或硬盘中。

3)使用时, 将bootrom.sys或Vxworks拷贝到CF卡或硬盘中。

2.2Bootrom三种类型
1. Bootrom
压缩型,占用flash 空间小,其中大部分被压缩过 A compressed boot image
2. bootrom_uncmp
非压缩型,较bootrom 型占用flash 大些,完成将自身从flash到ram的搬运过程,无需解压
3. bootrom_res
非压缩型,较bootrom 型占用flash 大些,完成将自身从flash到ram的搬运过程,无需解压
无后缀: ELF可执行文件格式
.hex后缀:Motorola S-record文件格式
.bin 后缀:二进制输出, 一般烧到ROM/Flash零地址处。

3、romStart() (bootInit.c)
bootrom 型:将code 段、data 段从flash 中拷贝到ram中,清内存,之后对code段进行解压缩。

bootrom_uncmp 型:将code 段、data 段从flash 中拷贝到ram中,清内存。

bootrom_res 型:将data 段从flash 中拷贝到ram。

2.3VxWorks映象
1 VxWorks映象的组成
VxWorks映象由文本段(.text/.code),数据段(.data)和BSS段(.bss)组成。

文本段相当于代码段,是由一些指令组成的;数据段就是由一些初始化过的全局和静态变量组成;BSS段也是由全局变量和静态变量组成,只不过他们都没有经过初始化。

2.4Bootrom.sys最快制作方法
生成bootrom时,选择bootrom.bin。

生成后将bootrom..bin改名为bootrom.sys,直接拷贝到上面2.1中制作的引导盘中就可以。

2.5从网络引导
修改BSP中的config.h文件。

为了自定义你的开发环境的启动程序,你必须编辑文件“安装目录\target\config\bsp名\config.h”,这个配置文件在BSP中。

这个文件中包含了对DEFAULT_BOOT_LINE的定义,在定义中,确定了启动设备,主机和目标机的IP地址,要加载的Vxworks镜像的位置等等。

在VxWorks的开发过程中,用户需要反复的修改VxWorks程序,这个时候,我们可以采用网络加载VxWorks的方式,也就是说,用主机作为服务器,做好引导程序后,系统会自动
通过ftp协议,在主机上的ftp server上下载VxWorks镜像。

通过网络下载时,config.h 中的DEFAULT_BOOT_LINE按如下配置修改:
#define DEFAULT_BOOT_LINE \
"fei(0,0) host:vxWorks h=192.168.0.33 e=192.168.0.18 u=user pw=user"
解释:
fei:Intel 82559 EtherExpress网卡。

Host:主机名,让VxWorks知道的主机的名字。

vXworks 从主机加载的VxWorks文件
h=192.168.0.33 主机的IP地址
e=192.168.0.18 目标机的IP地址,若网络启动Target Server时,这个IP必须和主机上Target Server配置的Target IP地址一致,且设置Back End选项为wdbrpc
u=xxx 用户名,pw=xxx 密码: 若通过网络加载调试时,主机的Ftp服务器和目标机的用户名和密码必须相同
2.6从本地硬盘引导
如果用户的程序开发完成,要脱离开发环境,这个时候需要将VxWorks的镜像直接放在目标机的硬盘上,config.h中的DEFAULT_BOOT_LINE按如下配置修改:
#define DEFAULT_BOOT_LINE \
"ata=0,0(0,0)host:/ata0/vxWorks h=192.168.0.33 e=192.168.0.18 u=user pw=user"
注意: lock c:, vxsys c:
2.7制作bootrom文件
首先,执行“开始->运行->输入cmd”,回车。

然后进入Tornado的host下可执行目录下,执行torvars.bat,为可执行文件设置路径。

过程如下图:
接下来,进入BSP目录,make bootrom_uncmp,过程如下图所示:
制作Bootrom文件还有一种很方便的方法,就是直接在Tornado环境下制作。

选择菜单build->build Boot ROM,然后选择你要build的BSP和Bootrom类型,选择OK即可。

如下图所示:
步骤五:将做好的启动文件,mkboot到目标盘。

如下图:
注意: i: 与 bootrom_uncmp 之间有空格!
这里的i:表示的是我们要制作的VxWorks引导的硬盘的活动分区。

执行完后会在i盘生成bootrom.sys文件。

问:怎么我mkboot的时候,提示“‘mkboot’不是内部或外部命令,也不是可运行的程序或批处理文件”?
答:这是因为找不到mkboot.bat文件,所以在这一步之前你需要执行torvars.bat对文件路径进行设置(详见步骤四),然后在不退出cmd命令窗口的情况下,执行mkboot,如果退出了cmd命令窗口,就需要重新执行torvars.bat,才可以mkboot。

问:我按照步骤做了,怎么还是启动不起来:
答:请按如下步骤检查:
1.生成的bootrom.sys文件所在盘的格式是否是FAT格式,如果不是,请将格式改为FAT。

2.该盘是否是活动分区,如果不是,把该分区修改为活动分区。

3.重新mkboot,启动一次,如果还是不能启动,用Format /s命令把这个分区做个DOS
启动盘,看Dos能否启动,如果Dos不能启动,这个时候很有可能就是该磁盘的主引导记录有问题了,把盘上的数据全部备份出来,然后用DM工具对主引导记录信息进行重写。

在mkboot之前,要确保目标盘是FAT格式,否则启动不起来。

2.8Bootrom编译步骤
1. 将CPU1462板的 BSP 文件拷贝到 target的CPU1460下面。

注意:将config.h中的引导行,要改成需要的启动方式!
2. 将工程的关联属性重来一遍。

3. 重新REBUILD!
4. 从菜单中,编译Bootrom!
5. 运行torvars.bat , mkboot 命令!
2.9用BSP生成Bootable工程(即我们的程序文件) 详细过程如下列图所示:
上面这一步需要选中指定的BSP。

到现在VxWorks操作系统生成,用户也可以在生成的操作系统上对系统进行裁剪。

裁剪完成后,可以build一个VxWorks。

问:bootable工程和downloadable工程有什么不同?
答:bootable工程用来配置和建立VxWorks镜像,downloadable工程用来管理和生成动态链接应用模块,允许动态开发。

2.10F TP Server下载VxWorks
本文介绍了两种启动VxWorks的方法,硬盘启动和网络启动。

硬盘启动方式比较简单,只需要将build出来的vxWorks放在执行mkbootrom 所指定的目标盘即可。

这种方式一般在产品发布的时候使用,在调试的时候,一般采用ftp下载的方式,也就是说VxWorks操作系统不放在启动盘上,是系统在引导起来后,通过ftp从主机上下载VxWorks镜像,然后执行VxWorks。

要通过ftp下载VxWorks到目标机,首先要设置Tonado中的ftp server。

如果在启动ftp server时,出现“WSAEADDRINUSE – Address already in use”错误,需要卸载Windows IIS组件中的ftp服务,因为系统的ftp会和tornado 的ftp产生冲突。

卸载方法:控制面板->添加或删除程序->添加/删除Windows 组件->Internet信息服务(IIS),点击“详细信息”按钮,去掉“文件传输协议(ftp)”服务前面的对钩。

确定即可,如下图所示。

打开ftp server,进入“security->users/rights…”,添加用户和密码,用户和密码和步骤三中的配置信息要一致,其中的Home Directory中填写的就是生成的VxWorks所在的文件夹的路径,可以通过查看vxWorks文件的属性,得到其生成的位置。

启动目标机,VxWorks就可以启动。

步骤八:启动target server
Target server是Tornado的一个组件,Tornado中的开发工具(例如:windsh、debugger)通过它可以和远程的目标系统进行通讯。

Target server的配置如下:
Target Name/IP Address栏内填写步骤三中配置的target IP即可。

这里的文件栏内填写的是VxWorks的全路径。

配置好后,选择“Launch”,即可启动Target server,如果启动成功,Windows 右下角就会出现图标,否则图标为,表示启动不成功。

步骤九:这是你就可以生成一个Downloadable工程,写自己的应用程序,然后下载执行了。

2.7 Bootable和Downloadable工程有什么不同?
Tornado以工程(project)为单位组织软件开发,工程中包括源代码信息、VxWorks配置和编译配置等。

Tornado提供了工作空间(workspace)机制,用于工程的组织和管理。

Tornado可以创建多个工作空间,每一个工作空间可以包含多个工程。

每个工程又能引用多个源代码文件,组成层次结构。

工作空间主要用在主机上安装有多个不同版本的Tornado时,每个工作空间可以以Torndao的版本命名。

Tornado能创建两种工程类型:Bootable和Downloadable。

前者用于生成VxWorks程序映像,包括基本的操作系统组件,经过完全连接,可以独立运行。

后者生成程序模块目标映像,只是部分连接,不能独立运行,但这种映像支持动态加载和连接,为VxWorks特有,能进行应用代码的快速开发和调试,而对系统其他部分不会造成影响。

在项目的开发中,采用创建Downloadable工程来调试自己开发的应用模块。

3Tornado调试环境的建立
3.1.1 配置文件config.h
目标机运行的程序包括两部分:引导文件bootrom.sys和操作系统影像文件VxWorks。

引导文件bootrom.sys的主要作用类似于BIOS,一般它存放在一张软盘或目标机硬盘或目标机FLASH盘上,由Vxld或其他程序加载到内存,用于初始化目标机上的包括引导硬件在内的硬件,建立VxWorks运行的环境,从引导设备上加载VxWorks操作系统影像,并将CPU 的控制权移交给操作系统。

VxWorks是操作系统的影像文件。

它是应用程序和目标代理程序(调试环境的目标机部分)
运行的软件平台,一般存放在bootrom.sys所在软盘或目标机硬盘或目标FLASH盘或主机硬盘上,由bootrom.sys的引导程序加载到目标机内存。

bootrom.sys和VxWorks这两个可以利用Tornado提供的工具,按照配置文件config.h有关设置自动生成。

特定BSP的配置文件config.h在该BSP目录下。

如pc486的配置文件是Tornado\target\config\pc486\config.h。

配置文件config.h主要定义了引导行,目标机操作系统包含的主要成分,如软驱、IDE硬盘、SCSI设备、网络等设备驱动,文件系统(DOSFS,TFFS,CDROMFS等),调试方式,内
存地址等及有关参数。

引导行(boot line)定义了引导设备、引导路径、操作系统文件名、主机/目标机IP地址、子网掩码、FTP用户名和口令等参数。

对于X86平台目标机,引导设备可以是软盘(fd),硬盘(ata或ide),FLASH盘(tffs),网卡(elt、ene等)等。

一般采用通过以太网或通过RS232或RS422标准串口连结进行调试。

在X86平台上,首先确定调试手段,是通过网络还是串口调试?然后按下面的步骤建立调试环境:
1 修改配置文件
2 生成bootrom_uncmp引导文件和VxWorks影像文件
3 制作启动软盘
4 配置主机环境
5 用启动软盘启动目标机
6 从主机搭接(attach)到目标机
下面详细介绍。

3.1.2 网络连接
使用以太网连结调试方式,通过网口使用FTP协议从主机下载VxWorks映像。

在X86平台上一般使用启动软盘来启动目标机。

首先要确定目标机使用的网卡型号。

VxWorks5.4支持的网卡可以参考config.h文件。

需要包含相应的INCLUDE_XXX。

常用的如下表:
表7.1 VxWorks5.4支持的几种常用网卡
INCLUDE_XXX 网络接口卡备注
INCLUDE_ENE Eagle/Novell NE2000接口卡包括兼容卡,不支持即插即用
INCLUDE_ELT 3COM EtherLink III接口卡包括兼容卡,不支持即插即用
INCLUDE_EL_3C90X_END 3com fast etherLink XL PCI网卡3Com3c905系列
INCLUDE_FEI Intel Ether Express PRO100B PCI接口卡
INCLUDE_LN_97X_END AMD 79C972网卡
1 修改config.h
修改config.h最重要的一步是修改引导行。

引导文件bootrom.sys根据引导行来确定引导设备、引导路径、操作系统文件,并且引导行存放在固定的位置。

操作系统访问引导行来确定网络的配置,系统reboot时也将访问引导行。

bootrom.sys和VxWorks将它转换为一个特定的引导参数结构BOOT_PARAMS 。

在config.h中,引导行定义为有特定格式的字符串。

BOOT_PARAMS定义在h\bootlib.h中。

解释如下:
typedef struct /* 引导参数结构BOOT_PARAMS */ {
char bootDev [BOOT_DEV_LEN]; /* 引导设备代码 */
char hostName [BOOT_HOST_LEN]; /* 主机名 */
char targetName [BOOT_HOST_LEN]; /* 目标机名 */
char ead [BOOT_TARGET_ADDR_LEN]; /* 目标机以太网地址*/
char bad [BOOT_TARGET_ADDR_LEN]; /* 底板以太网地址 */
char had [BOOT_ADDR_LEN]; /* 主机以太网地址 */
char gad [BOOT_ADDR_LEN]; /* 以太网网关 */
char bootFile [BOOT_FILE_LEN]; /* 引导文件名 */
char startupScript [BOOT_FILE_LEN]; /* 启动脚本文件名*/
char usr [BOOT_USR_LEN]; /* 用户名 */
char passwd [BOOT_PASSWORD_LEN]; /* 口令 */
char other [BOOT_OTHER_LEN]; /* 留给应用程序使用 */
int procNum; /* 处理器号*/
int flags; /* 配置标示*/
int unitNum; /* 网络设备编号 */
} BOOT_PARAMS;
以ISA 3COM3c509b网卡为例,网卡需要设置为非即插即用方式,中断号为5,IO端口为0x300。

主机IP地址为222.1.5.169,目标机IP地址为222.1.5.36。

主机名为VxHost,有一FTP 用户VxMe,口令为isMe。

对应的引导行应为:
“elt(0,0)VxHost:\tornado\target\config\pc486\vxWorks h=222.1.5.169 e=222.1.5.
36 u=VxMe pw=isMe tn=VxTarget”
解释如下:
ene /* 启动设备名,为ISA3COM3c509网卡,ne2000网卡应为ene */
VxHost /* 主机标名,可以任意填写,不影响启动过程 */ \tornado\target
\config\pc486\vxWorks /* 需要从主机加载的路径及映像文件名*/
h=222.1.5.169 /* 主机的IP地址 */
e=222.1.5.36 /* 目标机的IP地址 */
u= VxMe /* 用户名,主机的Ftp服务器必须有相应的同名用户 */
pw= isMe /* 口令,必须与主机的Ftp服务器相应的同名用户的口令相同*/
tn= VxTarget /*目标名,可以任意设置,不影响启动过程*/
将下面的一行
#undef INCLUDE_ELT /* uninclude 3COM EtherLink III interface */
该为:
#define INCLUDE_ELT /* include 3COM EtherLink III interface */
还要修改下面的定义
#define IO_ADRS_ELT 0x240
#define INT_LVL_ELT 0x0b
为:
#define IO_ADRS_ELT 0x300 /* 网卡I/O地址 */
#define INT_LVL_ELT 0x05 /* 网卡中断号 */
config.h 修改完毕,下一步是生成目标文件bootrom.sys和VxWorks。

2 生成目标文件bootrom.sys和VxWorks
先生成bootrom_uncmp。

在Tornado集成环境中执行菜单命令Build-〉Build Boot ROM…,在弹出的对话框中,左边框中选择BSP,选中pc486,右边框中选择要生成的影像文件,选择bootrom_uncmp,然后点击OK确认。

Tornado将生成bootrom_uncmp。

再生成VxWorks。

在Tornado集成环境中执行菜单命令Build-〉Standard BSP Builds…。

(如果没有该项

请执行菜单命令Tools-〉Options…,在弹出的对话框中,选中Project页,选择Show Tornado 1.0.1 menu items,点击OK确认)。

与生成bootrom_uncmp类似,在弹出的对话框中, BSP 选择pc486,影像文件,选择VxWorks。

然后点击OK确认。

Tornado将生成VxWorks。

注意,必要时先进行clean操作
3 制作启动软盘
拷贝 Tornado\target\config\pc486\bootrom_uncmp至 Tornado\host\bin下;
准备一张已格式化的空盘插入软驱;
在目录Tornado\host\bin下执行命令
mkboot a: bootrom_uncmp
注意,有时,我们需要改变配置参数,重新生成引导文件,如果软盘已经是可引导的,那么只需更换软盘上的引导文件即可,方法是:
del a:. (需要键入’y’确认删除)
vxcopy bootrom_uncmp a:bootrom.sys
4 配置主机环境
主机操作系统Win95安装目录下有一文件hosts.sam,向其中加入:
主机IP 主机名
目标机IP 目标机名
启动Tornado组件FTP Server,在WFTPD窗口中选择菜单Security中的User/right...,在其弹出窗口中选择New User...,根据提示信息输入登录用户名和口令,并且要指定下载文件 VxWorks所在根目录。

可能还需要选取主菜单Logging中Log options、Enable Logging、Gets 、Logins 、Commands 、Warnings选项。

5 用启动软盘启动目标机
将系统引导软盘插入目标机软驱,加电启动,目标机即通过FTP方式从主机下载VxWorkst
系统。

在控制台上可以看到启动信息。

如果需要修改,在等待用户配置时,按c键,进行相应修改。

(注意:配置信息要与主机配置、Ftp服务器配置一致),修改结束后,按@键重新启动目标机。

6 从主机搭接(attach)到目标机
在Tornado集成环境中点取Tools菜单,选取Target Server,选择config...;
在Configure Target Servers窗口中先给目标服务器命名;在配置目标服务器窗口中的“Target Servers Property”窗口中,选择BackEnd;在“A vailable Back”窗口中选择wdbrpc,在“Target IP/Address”窗口中输入目标机IP(本
例为222.1.5.36);在配置目标服务器窗口中的“Target Servers Property”窗口中,选择Core File and S ymbols, 选择File为BSP目标文件所在目录(本例为PC486目录)的VxWorks,并选取为All Symbols;在配置目标服务器窗口中的" Target Servers Property"窗口中的其它各项可根据需要
选择; 点击Launch按钮,连接主机和目标机,全部出现successed后即可进入应用程序调试;点击图形按钮中下拉框,选择和主机相连的目标机。

即可建立主机目标机连接。

这时Shell、Debugger等按钮可用。

7.1.3 串口连接
串口连接一般从启动软盘下载VxWorks映像。

其步骤如下:
1 修改通用配置文件
在config.h文件中加入以下宏定义:
#define INCLUDE_WDB
#define INCLUDE_WDB_TTY_TEST
#undef WDB_COMM_TYPE
#define WDB_COMM_TYPE WDB_COMM_SERIAL /*定义通信方式为串口联结*/
#define WDB_TTY_CHANNEL 1 /*通道号,目标机串口2*/
#define WDB_TTY_BAUD 9600 /*串口速率,VxWorks最高可设置至38400*/
#define WDB_TTY_DEV_NAME "tyCo/1"
#define CONSOLE_TTY 0
引导行为
#define DEFAULT_BOOT_LINE \
"fd=0,0(0,0)hostname:/fd0/vxWorks h=222.1.5.169 e=222.1.5.36 u=VxMe"
2 生成目标文件bootrom.sys和VxWorks
同网络连接。

3 制作启动软盘
同网络连接。

同时要把Tornado\target\config\pc486\VxWorks拷贝至软盘。

4 配置主机环境
不需要。

5 用启动软盘启动目标机
将系统制作盘插入目标机软驱,加电启动,目标机即由软盘下载VxWorks系统。

6 从主机搭接(attach)到目标机
在Tornado集成环境中点取Tools菜单,选取Target Server,选择config...;
在Configure Target Servers窗口中先给目标服务器命名;
在Configure Target Servers窗口中先给目标服务器命名;
在配置目标服务器窗口中的" Target Servers Property"窗口中选择Back End,在"Avail able Back"窗口中选择wdbserial,再在"Serial Port"窗口中选择主机与目标机连接所占用的串口号(COM1,COM2),再在"Speed(bps)"窗口中选择主机与目标机间串口速率;在配置目标服务器窗口中的" Target Servers Property"窗口中选择Core File and Symbols,选择File为BSP目标文件所在目录(本例为PC486目录)的VxWorks,并选取为All Symbols;在配置目标服务器窗口中的" Target Servers Property"窗口中的其它各项可根据需要选择;点击Launch按钮,连接主机和目标机,全部出现successed后即可进入应用程序调试;点击图形按钮中下拉框,选择和主机相连的目标机。

即可建立主机目标机连接。

这时Shell、Debugger等按钮可用。

4 4.Config.h文件注释说明
4.1启动行说明 #define DEFAULT_BOOT_LINE \:
配置目标机网卡,设置其中断号和输入输出范围(I/O地址);
修改通用配置文件\\Tornado\target\config\pc486\config.h.
针对不同的网卡,其名称不同,如NE2000及其兼容网卡为ENE,3COM以太网卡为ELT,
网卡为EEX。

在config.h文件中修改相应网卡类型(如网卡为3COM网卡)的定义部分: #define IO_ADRS_ELT 网卡I/O地址
#define INT_LVL_ELT 网卡中断号
并且修改#define DEFAULT_BOOT_LINE的定义:
#define DEFAULT_BOOT_LINE \
"elt(0,0)主机标识名:C:\\tornado\\target\\config\\pc486\\vxWorks h=主机IP e=目机IP u=登录用户名 pw=口令 tn=目标机名"
DEFAULT_BOOT_LINE宏定义,使缺省配置符合自己的调试环境
#define DEFAULT_BOOT_LINE \
"ene(0,0)host:c:/tornado/target/config/pc486/vxWorks h=129.9.75.39 e=129.9.49.7 u=x86 pw=x86 tn=x86"
ene(0,0) /* 启动设备为网卡 */
host /* 主机标识,可以任意填写,不影响启动过程 */
c:\tornado\target\config\pc486\vxWorks /* 需要从主机加载的映象文件 */
h=129.9.75.39 /* 主机的IP地址 */
e=129.9.49.7 /* 目标机的IP地址 */
u=x86 /* 用户名,主机的Ftp服务器必须有相应的同名用户 */
pw=x86 /* 密码,必须与主机的Ftp服务器相应的同名用户的密码相同*/ tn=x86 /*目标名,可以任意设置,不影响启动过程*/
4.2Config.h 文件说明
/*
This file contains the configuration parameters for the CPU evaluation board.
*/
#ifndef INCconfigh
#define INCconfigh
/* BSP version/revision identification, before configAll.h */
#define BSP_VER_1_2 1
#define BSP_VER_1_1 1
#define BSP_VERSION "1.2" /* A Tornado 2.0 BSP */
#define BSP_REV "/3" /* 0 for first revision */
#include "configAll.h" /* 这个文件定义了VxWorks所有的缺省设置 */
/*
* Define ONE of the following to specify the revision of the PPC405GP chip * you are using. Undefine all others. sysModel() will return
* "Unknown processor" if the correct selection is not made.
*/
/*
* Default boot line
*/
/*
解释: 这一行对配置网络,连通Target Server及下载调试程序非常重要
DEFAULT_BOOT_LINE的原意是为没有NVRAM的target设计的,这样用户就不需要在每次系统启动是手工输入这些参数了.
系统启动网络时xxxEndLoad()会解释这一行并按这一行的定义进行加载. Emac(0,0) : 启动设备,可是是软盘,硬盘,PCMCIA卡等其他的设备名称如:
fd为软盘,(0,0)表示第一个软驱,3.5寸盘.
dc则表示从DEC 21x4x 芯片启动,即系统有NVRAM存在,这种方式现在已不采用. elpci表示启动设备为3COM EtherLink XL PCI网卡.
fei:Intel 82559 EtherExpress网卡.
ene: NE2000网卡
ELT: 3COM以太网卡
EEX: Intel网卡
ata: ATA/IDE 硬盘 ............
405GP: 主机名
vXworks 从主机加载的VxWorks文件
h=172.16.1.159 主机的IP地址
e=172.16.254.52 目标机的IP地址,若网络启动Target Server时,这个IP必须和主机上Target Server配置的Target IP地址一致,且设置Back End选项为wdbrpc
u=xxx 用户名,pw=xxx 密码: 若通过网络加载调试时,主机的Ftp服务器和目标机的用户名和密码必须相同
tn=vxTarget 目标机名称
*/
#define DEFAULT_BOOT_LINE \
"Emac(0,0)405GP:vxWorks h=172.16.1.159 e=172.16.254.52 \
u=xxx pw=xxx tn=vxTarget"
/*
* 内存设置.
* 如果定义了LOCAL_MEM_AUTOSIZE则SDRAM的大小会在Boot时指定
*/
#undef LOCAL_MEM_AUTOSIZE /* 运行时内存大小 */
#define LOCAL_MEM_SIZE 0x02000000 /* 32MB 内存缺省 */
#define LOCAL_MEM_LOCAL_ADRS 0x00000000 /* 内存基地址为 0 */ #define USER_RESERVED_MEM 0 /* see sysMemTop() */
/*
* Define SDRAM_ECC_ENABLE to enable ECC if an ECC SDRAM DIMM is detected * during SDRAM auto-configuration. If not defined, ECC will not be enabled * if an ECC SDRAM DIMM is detected, and the DIMM will be used as a normal DIMM.
*/
#undef SDRAM_ECC_ENABLE
/* 解释: 这里主要设置系统的内存分配定义,若分配不当,则系统不能正常加
载和运行.
ROM_TEXT_ADRS, ROM_SIZE, RAM_HIGH_ADRS, 和RAM_LOW_ADRS 在config.h和Makefile文件中都要定义,且必须要保持一致,这些地址的定义一定要参照VxWorks 加载执行过程,硬件手册,MMU和VxWorks的大小进行.主要原则是保证VxWorks image 在ROM和RAM中都要有一定的运行空间且高效运行,可参见VxWorks BSP和启动过程.
*/
#define ROM_BASE_ADRS 0xfff80000 /* ROM的基地址 */
#define ROM_TEXT_ADRS (ROM_BASE_ADRS + 0x100) /* 程序指针和堆栈指针 */
#define ROM_WARM_ADRS (ROM_TEXT_ADRS+0x0004) /* 热启动入口地址*/
#define ROM_SIZE
0x0007f000 /* ROM大小
512KB */
#define RAM_LOW_ADRS 0x00010000 /* RAM 低地址运行vxWorks */
#define RAM_HIGH_ADRS 0x00C00000 /*
RAM 高地址存储bootrom */
#define USER_RESERVED_MEM
0 /* 用户保留地址 */
/*
* Cache options 定义缓存
*/
#define INCLUDE_CACHE_SUPPORT
#define USER_D_CACHE_ENABLE
#define USER_I_CACHE_ENABLE
#undef USER_D_CACHE_MODE
#define USER_D_CACHE_MODE (CACHE_COPYBACK)
/*
* 405 timers (PIT, FIT, WDT) 可由外部时钟驱动或者CPU驱动
*/
#define TIMER_CLOCK_EXTERNAL
/*
* Optional timestamp support
*/
#undef INCLUDE_TIMESTAMP
/*
* Auxilliary Timer rates 定义辅助计时器频率
*/
#ifdef TIMER_CLOCK_EXTERNAL
#define AUX_CLK_RATE_MIN (EXT_TIMER_CLK_FREQ / (1 << 21) )
#define AUX_CLK_RATE_MAX (EXT_TIMER_CLK_FREQ / (1 << 9) )
#define AUX_CLK_RATE_DEFAULT (EXT_TIMER_CLK_FREQ / (1 << 17) )
#else
/* ZZZZZZZZZZZ todo put rates in for system clock derived timer clock */ #endif
/*
* Watchdog Timer rates
*/
#define WDT_RATE_MIN 1 /* minimum watchdog timer rate */
#define WDT_RATE_MAX 5000 /* maximum watchdog timer rate */
/* 实时时钟设置 */
#define INCLUDE_RTC
/* 去除不需要的网络驱动 */
#undef INCLUDE_EI
#undef INCLUDE_EX
#undef INCLUDE_ENP
#undef INCLUDE_LN
#undef INCLUDE_SM_NET
#undef INCLUDE_SM_SEQ_ADDR
/* #define for software floating point support */
#undef INCLUDE_SW_FP
/* 定义串口 Serial port configuration */
#define INCLUDE_SERIAL
/* PCI 设置,PCI configuration */
#define INCLUDE_PCI
#ifdef INCLUDE_PCI
/*
* Three programmable processor local memory address to PCI memory address * mappings. If a region is enabled, PMMx_LOCAL_ADRS must be between * PCI_MEMORY_START and PCI_MEMORY_END. If PMMx_PCI_HIGH_ADRS is non-zero in
* an enabled region, 64 bit dual cycle addresses will be generated on the * PCI bus for this region.
*/
//定义PCI设备的初始化地址参见PCI设备(网卡)初始化代码分析
# define PMM0_LOCAL_ADRS PCI_MEMORY_START // 定义PCI空间起始地址
# define PMM0_PCI_LOW_ADRS 0x80000000 // 定义PCI
空间低位地址
# define PMM0_PCI_HIGH_ADRS 0x00000000 // 定义PCI空间高位地址
# define PMM0_PCI_MASK_ATTRIB (PMM_MASK_512MB | PMM_ENABLE)
# define PMM1_LOCAL_ADRS PMM_UNUSED
# define PMM1_PCI_LOW_ADRS PMM_UNUSED
# define PMM1_PCI_HIGH_ADRS PMM_UNUSED
# define PMM1_PCI_MASK_ATTRIB PMM_UNUSED
# define PMM2_LOCAL_ADRS PMM_UNUSED
# define PMM2_PCI_LOW_ADRS PMM_UNUSED
# define PMM2_PCI_HIGH_ADRS PMM_UNUSED
# define PMM2_PCI_MASK_ATTRIB PMM_UNUSED
/*
* PCI memory address to processor local memory address mapping. If a region * is enabled, PTMx_LOCAL_ADRS must be within the two Local memory / peripheral
* regions (0x00000000-0x7FFFFFFF, or 0F0000000-0xFFFFFFFF)
*/
# define PTM1_LOCAL_ADRS LOCAL_MEM_LOCAL_ADRS
# define PTM1_SIZE_ATTRIB PTM_SIZE_2GB | PTM_ENABLE
# define PTM2_LOCAL_ADRS PTM_UNUSED。

相关文档
最新文档