Tornado和VxWorks学习笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Tornado and vxWorks学习笔记-myc
环境配置相关:
1.tornado
2.2在启动时,弹出一个警告窗口如下:
Warning: Cannot find a valid Tornado Registry on host "".
You need to have access to a Tornado Registry to connect to any targets. For instructions on how to start the Tornado Registry, please refer to the documentation.
应该如何解决?
解决方法:启动Tornado后,选择Tool options→Tornado Registry→勾选Local registry。
问题原因:Tornado Registry即Tornado目标服务器注册表,这种注册表可以使主机通过名称连接目标服务器(运行主机工具的主机和运行目标服务器的机器可以不同)。也即说,这个注册表必须一致处于运行状态,否则主机工具就不能联系上运行目标服务器的机器,也就不能与目标机进行通信。
而由于我们的机器同时运行主机工具和目标服务器,因此,我们只需要将Tornado Registry建立为本地的就可以了。所以,要勾选Local registry。
(由于Tornado工具与目标机通信的方式无关,所以无论与目标机的通信方式是通过网络还是通过串口,注册表都是必须的。)
2.目标机代理执行的模式有三种:
㈠任务模式:目标机代理作为VxWorks的一个任务,用户可以再不影响目标系统运行的情况下隔离某个任务。
㈡系统模式
㈢双模式
3.Tornado Launch工具条是一个下拉列表,显示了当前运行的并注册过的目标服务器。如果没有目标服务器列出,
或没有用户需要的目标服务器,则用户必须配置和启动一个目标服务器。
4.目标服务器管理Tornado主机工具和VxWorks目标机代理间的通信。在主机工具与目标机交互前,必须针对该
目标机配置并启动目标服务器。
5.在Tornado内建立一个开发环境,具体步骤如下:
㈠设好目标机硬件
㈡定义主机环境变量,配置好网络软件;在\x86-win32\bin下,有torwars.bat脚本程序,用来设置环境变量;
网络要配置好TCP/IP协议,修改主机host文件。
㈢开启Tornado目标服务器注册表。
㈣指明目标机启动参数(boot parameters),并启动目标机。(最开始学习的时候,没有目标机的话,就用VxSim 吧)
㈤配置并启动目标服务器(target sever),目标服务器是管理主机开发工具和目标机通讯的。
6.VxWorks具有可移植性的原因是采用了模块化的设计,它将所有硬件的功能函数分别放到一系列库中,这些库
就称之为板级支持包BSP(Board support Package)。
7.BSP库为实现所有目标板上各种硬件的功能提供了相同的软件接口,包括如下功能:
㈠硬件初始化
㈡中断的产生与处理
㈢硬件时钟和定时器管理
㈣本地及总线存储空间映射
㈤设置存储空间大小
㈥等等
8.*在一块新的目标板上安装VxWorks操作系统是很困难滴,是因为我们不能无法使用VxWorks的开发工具,并且,
也没有相对应的BSP。但是,Tornado软件为我们提供了VxWorks的BSP开发工具包,这个BSP的开发工具包提供的一些策略可以使VxWorks的安装变得容易点。(BSP工具包的用户应该具备低级c语言和汇编语言的编程经验,熟悉设备驱动程序,熟悉中断处理程序以及软硬件之间的接口)
BSP工具包包含一套文献资料和一些软件。
其中,文献资料包括:①安装指南②用户手册
软件包括:
㈠BSP合法性测试包
㈡BSP模板
㈢驱动程序模板
㈣SCSI测试包(SCSI:small computer system interface,小型计算机系统接口)
9.在运行具有网络功能的vxsim full simulator的时候, 如果在启动targetServer时遇到如下错误:
Error: rpccore backend client Timed outfailed.
则需要检查以下几点:
1)检查ULIP虚拟网络适配器的ip地址是否配置为:192.168.255.254
2)VxWorks组件中, development tool components/WDB agent components/select WDB connection/中, 应当仅选
择WDB END driver connection选项.
同时, select WDB mode应当仅选择WDB task debugging选项.
3)Target Server的配置里面, Target Server Properties应当选择Back End(表示通过网口调试), Available Back处应
选择wdbrpc选项.
Target Name/Ip Address可以填目标机地址. 例如:192.168.255.1
(还有一次, 直接target server都打不开,之前一直好好的, 忽然间就出错了, 一直遇到这种错误:
error :simulator failed to initialize before timeout
我是这么解决的: 先新建了一个project, 然后重新编译了一个最原始的vxworks.exe, 然后打开.
再之后又重新开之前的那个vxworks.exe 然后居然就正常了)
10.如果想要能够有ping功能, 需要包含组件network conmponents/networking protocols/network applications/PING
client.
11.如果vxsim0和vxsim1不能互相ping通, 但vxsim0和vxsim1可以ping通主机, 则说明组件:
network conmponents/networking protocols/core TCP/IP conmponents/ICMPv4没有被包含进去.
12.Simulator与其它主机的通信
假设host0(你的主机, simulator运行于此机上)的Ip为10.12.9.113, host1的Ip为10.12.9.129. 如果host1想与simulator通讯, 只需在host1的路由表中增加一项:
Route add 192.168.255.1 10.12.9.113 metric 1
然后可以分别在host1上ping 192.168.255.1和simulator上ping 10.12.9.129进行验证.
网络编程相关:
Tcp(基于连接的)编程
1.相关概念:
端口: RFC1700规定常用的端口号从0-1023, 1024-49151是已注册的端口号.
这个端口号很重要, 比如在客户机/服务器模型下, 服务器端有一个任务在指定的端口等待客户来连接(在vxworks当中, 是先通过listen函数监听端口, 然后accept函数接受来自client端的连接来实现的), 一旦连接上之后, 就可以按设计的数据交换方法和格式进行数据传送.
2.客户机/服务器通信过程:
对server来说, 包括如下几个步骤(注意:结构体struct sockaddr_in和struct sockaddr是不一样滴两个结构):
1)创建一个tcp socket.
eg: int sd=socket(AF_INET,SOCK_STREAM,0); /*其中, sd是socket描述符, 由socket函数返回. AF_INET得看Help文件具体才知道是什么意思, 反正大多都用这个. SOCK_STREAM 说明是建立的一个基于连接的socket, 也即tcp socket. */
2)分配一个server的端口给第1步中创建的socket. 也即让创建的那个socket和某个端口绑定起来, 否则server到
哪监听想要连过来的client呢? 绑定了之后相当于server就在这个端口这里等待client的连接请求了.
VxWorks下面, 是通过bind函数绑定socket和分配的端口的, 如下:
bind(sd,(struct sockaddr *)&serverAddr,sizeof(struct sockaddr_in))