搜档网
当前位置:搜档网 › Dos引导VxWorks

Dos引导VxWorks

Dos引导VxWorks
Dos引导VxWorks

CF卡上引导VxWorks的三种方法

方法一. 直接引导:

引导扇区

>> bootrom.sys

>> VxWorks

这种方法最快,但要求bootrom.sys保持连续性(可用chkdsk检查)。

方法二. FreeDOS引导:

引导扇区

>> FreeDOS

>> https://www.sodocs.net/doc/1e6101169.html,

>> bootrom.sys

>> VxWorks

这种方法牺牲少量启动时间换取灵活性,因为你可以为FreeDOS增加菜单实现选择性启动,而且许多维护性工作也可在DOS下进行。

方法三. GRUB引导:

引导扇区

>> GRUB

>> FreeDOS启动盘映像

>> FreeDOS

>> https://www.sodocs.net/doc/1e6101169.html,

>> bootrom.sys

>> VxWorks

这种方法比上一种更进一步,你可以利用GRUB的强大功能实现多系统引导,不过不是所有的主板都支持GRUB。

grub> kernel --type=netbsd /vxWorks

一共两个分区,都是主分区。C盘为Fat32格式,设为活动分区。D盘为Fat格式,设为非活动分区。C盘装的Winxp,用XP引导Grub4DOS。把DOS的系统文件(IO.sys,MSDOS.sys,https://www.sodocs.net/doc/1e6101169.html,)拷贝到D盘根目录。

修改menu.lst如下:

title DOS6.22

root (hd0,1)

chainloader (hd0,1)/IO.SYS

title DOSDOS

find --set-root (hd0,1)/io.sys

chainloader (hd0,1)/io.sys

title FINDDOSACT

find --set-root (hd0,1)/io.sys

makeactive

chainloader (hd0,1)/io.sys

title HD0

rootnoverify (hd0,0)

makeactive

chainloader +1

title HD1HD1

rootnoverify (hd0,1)

makeactive

chainloader (hd0,1)/io.sys

都不能成功,显示错误为Error 13:Invalid or unsupported executable format。请问这是为什么。我能用什么方法实现双启动?另外还有一个问题,Grub4DOS能引导Vxworks的bootrom 吗?如果可以怎么做?谢谢各位了!

作者: realstephen 时间: 2009-12-2 21:56

看来我提的这个问题太幼稚。

DOS6.22只能安装在硬盘第一主分区吧。呵呵

作者: fujianabc 时间: 2009-12-3 17:24

ms-dos 6.22不支持直接用chainloader io.sys方式启动,必须chainloader启动扇区才能启动,因为msdos 6.22的io.sys与msdos.sys两个文件都是核心文件

[ Last edited by fujianabc on 2009-12-3 at 17:26 ]

作者: realstephen 时间: 2009-12-4 23:20

原来如此。谢谢。已经用chainloader(0,0) + 1的方法启动成功。我后来试着用grub4dos引导Vxworks的bootrom.sys,得到的也是Error 13:Invalid or unsupported executable format,请问是grub4dos不支持这种格式吗?

作者: fujianabc 时间: 2009-12-5 19:50

Quote:

Originally posted by realstephen at 2009-12-4 11:20 PM:

原来如此。

谢谢。已经用chainloader(0,0) + 1的方法启动成功。

我后来试着用grub4dos引导Vxworks的bootrom.sys,得到的也是

Error 13:Invalid or unsupported executa ...

bootrom.sys是什么东西?你为什么直接用chainloader来加载?

作者: realstephen 时间: 2009-12-5 23:14

bootrom.sys是Vxwroks系统的boot loader。我以前是用DOS6.22来引导它,由它引导Vxworks 的真正IMG。现在想尝试用Grub4DOS来直接引导它,这样我就可以摆脱DOS6.22了。

作者: realstephen 时间: 2009-12-5 23:18

是否应该用

kernel (hd0,0)/boot/grub/memdisk.gz

initrd (hd0,0)/boot/grub/bootrom.sys

这种方式?

作者: fujianabc 时间: 2009-12-6 18:29

Quote:

Originally posted by realstephen at 2009-12-5 11:14 PM:

bootrom.sys是Vxwroks系统的boot loader。

我以前是用DOS6.22来引导它,由它引导Vxworks的真正IMG。

现在想尝试用Grub4DOS来直接引导它,这样我就可以摆脱DOS6.22了。

grub又不是操作系统,grub只支持直接加载两类格式:

1、chainloader命令能直接加载bootsect类的文件以及ntldr和io.sys

2、kernel命令能直接加载linux内核类的文件

你的bootrom.sys显然不属于上面两类之一,所以grub不能直接加载。你dos下是怎样加载bootrom.sys的?

作者: realstephen 时间: 2009-12-6 22:53

Vxworks提供了一个DOS6.22调用的程序https://www.sodocs.net/doc/1e6101169.html,,DOS6.22启动后通过https://www.sodocs.net/doc/1e6101169.html,引导bootrom.sys,这个时候DOS就把控制权交给Vxworks的bootrom了,然后bootrom.sys 初始化基本的硬件信息(包括IO系统,网络等),将真正的操作系统映像Vxworks加载到内存,并把控制权交给Vxworks。这样就完成了启动。当然Vxworks也有其他的启动模式,比如利用vxsys将Vxworks的引导信息写到硬盘的引导扇区,然后上电后引导信息直接加载bootrom.sys。

作者: fujianabc 时间: 2009-12-7 02:33

Quote:

Originally posted by realstephen at 2009-12-6 10:53 PM:

当然Vxworks也有其他的启动模式,比如利用vxsys将Vxworks的引导信息写

到硬盘的引导扇区,然后上电后引导信息直接加载bootrom.sys

那你就按照此方法,用vxsys将Vxworks的引导信息写到硬盘的引导扇区,然后用grub chainloader加载引导扇区

作者: ZhiChaoC 时间: 2009-12-18 10:36 标题: 能DOS与PE双启动共存吗?

能DOS与PE双启动共存吗???

如果可以的话,用什么工具,如何制作!!!???请帮助,求教,谢谢!!!????

作者: realstephen 时间: 2009-12-19 20:39

问题已解决。

作者: turkeycq 时间: 2010-1-11 11:11

你的DOS是怎么引导的?还是这样吗?chainloader(0,0) + 1

括号里的(0,0)是什么意思

VxWorks常用命令汇总

VxWorks常用的命令 1.与任务相关的命令 sp function,[arg1],...,[arg9] -启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节 period n,function,[arg1],...,[arg8] -创建一个周期调用function的任务,周期为n秒,最多接受8个参数 repeat m,function,[arg1],...,[arg8] -创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数 ts tidX -挂起任务 tr tidX -恢复挂起的任务 td tidX -删除任务 i tidX -显示任务基本信息,参数为0时显示全部任务 ti tidX -显示任务详细信息,包括寄存器、堆栈等 tt tidX -显示任务的函数调用关系 checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务 [其中tidX可以为任务ID 也可以为任务名] 2、系统信息 lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数: 0,给出符号表统计;""(空字符串),列出全部符号 lkAddr addr -显示addr地址附近的符号表 l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令 h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目 d [addr,[number],[width]] -显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8 m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显示系统分区上空闲和已分配空间的总数等 printErrno value -打印系统定义的错误码的宏 3、与网络相关的命令 ifShow ["ifname"] - show info about network interfaces inetstatShow - show all Internet protocol sockets tcpstatShow - show statistics for TCP udpstatShow - show statistics for UDP ipstatShow - show statistics for IP icmpstatShow - show statistics for ICMP arpShow - show a list of known ARP entries

vxWorks开发环境构建步骤及开发资源

vxWorks开发环境构建步骤及开发资源 技创科技(Technique Innovator Inc.) https://www.sodocs.net/doc/1e6101169.html, 一、Tornado集成开发环境构成 Tornado是集成开发环境的名称,主要由帮助及参考文档、操作系统vxWorks、开发工具(编译器、调试器、编辑器、target server等,据统计,挂接在Tornado下的可选工具和第三方有数百个)等三部分构成,分别对应三个目录: i.docs/ 所有文档都集中在该目录中, books.html是根索引,入门级开发请务必查看 以下文档: ●如果要熟悉使用界面及Tornado使用、创建工程,请参考:Tornado用户手册 及Tornado集成开发环境的HELP->content调出来的联机帮助文档; ●vxWorks的编译是使用标准GNU Makefile来编译连接的,要了解Makefile语 法请参考”GNU Make”;具体的Make rules存放在target/h/make/目录下。 ●如何调试?请参考“Debugging with GDB” ●vxWorks构成、特点及kernel,编程等:请参考:VxWorks Programmer's Guide, 系统调用、库函数接口标准等,请参考:VxWorks Reference Manual ●有关BSP(board support package)的构成、初始化、底层驱动等,请参考“BSP Reference” ●网络应用编程指南(socket编程): “VxWorks Network Programmer's Guide” ii.host/ 该部分存放主机端(开发机)的工具,如Tornado.exe,make.exe,编译器、调试器及TCL命令解释器等等,开发中要用到的工具都存放在目录 host\x86-win32\bin 下,部分命令是.exe文件,部分是.bat的,其中有torvars.bat文 件,是设置Tornado集成开发环境的环境变量用的,在使用其他工具前,要运行它 设置正确的环境变量及可执行文件搜索路径。 iii.target/ vxWorks操作系统、源码、BSP、设备驱动、头文件、配置文件等config/ BSP的存放地方,底层开发者绝大部分时间在该目录下度过,该目录下除了all/和comps/外,其他每个目录对应一种硬件板的BSP,开发者在 做BSP开发时,原则上除了对应BSP目录能修改外,target/目录下的其他 所有目录都不应该作出改动,否则会影响到其他BSP,常用BSP有: pid7t/ →ARM公司推出的pid7 ARM7TDMI评估板的BSP integratorX/ →ARM公司推出的integratorXXX评估板的BSP tk4510a/ →我们要使用的S3C4510B板的BSP SNDS100/ →三星公司推出的SNDS100(KS3C50100/S3C4510B)板的 BSP h/ 头文件存放地点,包括vxWorks的及所有其他组件的 arch/arm/ ARM体系结构相关头文件 make/ 编译连接时要用到的规则都存放在这里 vxWorks.h wind Kernel(vxWorks的核心”Wind Kernel”的API及常量说明) lib/ vxWorks是一个商用操作系统,其不开放源码部分的.o文件及.a(库文件)文件存放在这里(当然,除了config/目录外,所有其他目录下的*.c源码在编

EPON常用命令讲解

EPON常用命令讲解 ?数据业务基本排查 ?语音业务基本排查 ?930软件脚本简介 ?其他常用命令 ?典型案例分析 数据业务基本排查 基本思路: 在PON系统内GSWC、EC2、ONU各业务环节上应保证: 配置正确 配置生效 MAC地址正确转发 ?FTTH型ONU ?FTTB型ONU 配置核查 Onu switch目录: show vlan all显示所有端口vlan; show vlan 查看交换芯片单个vlan及其所属端口的信息,如果此端口配置为出口剥离vlan,相应端口显示为UN;反之显示为VF show vlan default 显示所有端口的untag属性的vlanid; Onu Debug下相关命令: ddd show port [|all] vlan config显示系统QinQ不使能下的Fe端口vlan的配置信息show port [|all] vlan service显示系统QinQ使能下的Fe端口vlan的配置信息show port [|all] vlan translation table显示端口的软件vlan转换表 EC2 Pon目录: show qinq_config <1-2> <1-24> 查询qinq模式下ONU端口业务信息 端口检查 show port status查看交换芯片端口的状态,可以查看用户端口是否接了终端,工作模式是否正确等 查看地址转发表

ONU swtich目录 show arl查看mac地址转发表,会显示学习到的端口、vlanid和mac地址,如果用户的vlan id同时上下行数据中学到,其中26端口( CPU端口)表示下行数据正常,用户端口1-24表示上行数据正常; OLT fdb目录 show fdb slot <1-8,11-18>查看上行数据时,查看业务卡(EC2)fdb表 show fdb slot 29查看下行数据时,查看上联口fdb表 主控盘学的地址的VID应该是最外层VLAN的VID。 如果,上下行fdb表都正确,但是拨号拨不上去,可以在OL T的上连口抓包,查看进出的包内容。如果有出去的包而无回来的包,则可以判断出是上游设备出问题。 如果fdb表学习不正确,则VLAN配置有问题,可以根据fdb表的情况,先判断问题出现在哪一个设备上,再查看VLAN配置有无问题。 其他处理方式: 如时延大、丢包、组播业务等问题,可分别在EPON系统与其他系统的接口处利用抓包工具查看定位,由于上联口只能封装单层vlan,Qinq和单层vlan方式会略有差别。 FTTN型ONU 与其他ONU差异 FTTN型ONU相对其他类型ONU比较独立,对于普通的数据、语音业务,OLT相当于“透传”的通道。 配置核查: FSWB Profile目录下 创建/修改/查看ADSL2+端口模板参数: add xaplus profile ; set dsl-profile ; show dsl-profile ; 主要查看4个方面: 1.编码类型(lineCoding) 一般编码类型在开通的下行速率低于8Mb/s时采用G .dmt,大于8M时采用adsl2plusauto。 2.线路类型(channelMode) 线路类型采用interleaved更为稳定 3.训练速率(dnFastMaxTxRate,dnIntlMaxTxRate,upFastMaxTxRate,upIntlMaxTxRate) ADSL 一般最大上行可达速率为800Kb/s,下行可达速率为8Mb/s ADSL2+一般最大上行可达速率为1Mb/s,下行可达速率为28Mb/s 配置时上行速率不要超过1Mb/s,推荐640Kb/s

VxWorks操作系统MakeFile

VxWorks操作系统MakeFile(一) 时间:2008-8-24 夜 版权申明:本文为水煮鱼为水煮鱼@博客园撰写,不得用于商业用途,如需摘用,请与水煮鱼联系。 1、介绍 本文将介绍为什么要将你的C源代码分离成几个合理的独立文档,什么时候需要拆分,那又怎么拆分呢? 然后再介绍如何使用GUN Make使你的编译和链接步骤自动化。可能你使用的是其他的make工具,但是其实道理都差不多。当然如果你对自己的编程工具有怀疑的话,可以不妨实际的试试。 2、多文件项目介绍 a. why? 为什么使用多文件项目?他们有什么好处呢? 从表面上看,多文件项目是够复杂的了,又要头文件,又需要extern申明,并且如果你要查找一个文件的话,还需要在更多的文件里搜索。 但是如果把其考虑成一个项目,那一个项目根据功能划分为小的模块,那就不难理解了。 想想如果是一个一万行代码,如果你把其放到一个文件里,则在编译的时候,则需要对一万行代码进行重新编译。不过如果你如果把其放到不同的文件里,那修改一行,则只需要编译一个文件就可以了。可能你会说,一万行代码,就算全部编译,那点时间也基本可以忽略不计,但是实际情况是,在一个大的系统里,可能代码达到几十万甚至上百万,千万行代码的规模。以我们的项目为例,目前代码规模已经达到了上千万行的级别,如果全部重新编译,则将耗费几个小时甚至半天的时间。如果将其划分多多个文件,则修改一行所引入的编译代码,将不会随着你代码规模的增大而增大。所以多个文件的优点不言自明了。 不过对于不便于搜索的问题,其实只要文件划分得当,也并不会造成多大的困难。其实,从多个目标文件生成一个程序包比从一个单一文件生成程序包要好的多。当然,实际上这是不是一个优势还与你所使用的系统有关。但是当使用gcc/ld(一个GUN C编译器/连接器)把一个程序包连接到一个程序时,在连接的过程中,它会尝试不去连接没有使用到的部分,但它每次只能从程序包中把一个完整的目标文件排除在外。因此,如果你修改了一个程序包中某一个目标文档中任何一个符号的话,那么这个目标文件整个都会被连接进来。要是一个程序包被非常充分的分解的话,那么经过链接后,得到的可执行文件会比从一个大目标文件组成的程序包连接得到的文件小的多。 并且常常我们的程序是模块化的,高内聚,低耦合,使得文件之间共享部分被减少到了最少,因此采用多文件的方式,可以比较容易的找到代码中的bug。 b.when? 那什么时候分解你的项目? 如果你开发的是一个大项目,在开始前,应该好好考虑一下你将如何实现,并且将生成几个文件来存放你的代码。当然,在项目的开发过程中,你可以建立新的我文件,但是这将打乱你的整体布局,可能造成你整体结构的调整。因此特别建

MPC8377硬件环境下vxworks仿真的建立过程

MPC8377硬件环境下vxworks仿真的建立过程 2012-8-7 U-BOOT常用命令: 重启:reset 查看环境变量:printenv 修改环境变量:例如修改PC机IP,setenv serverip “……” 保存环境变量:saveenv 下载bootrom:run laodvx 如果需要用到其他命令,在命令行输入“?”查看。 1.首先,需要在FLASH中烧写好U-BOOT,把串口和网线连接好(如果多串口和网口的话,请检查并接在正确的位置),打开串口调试工具并设置在数据读取状态,然后上电,在倒计时读秒完成前在命令输入行输入任何信息进入U-BOOT层。 命令行 U-BOOT读秒区 2.在命令行输入printenv命令会显示U-BOOT的信息,如果ip不是我们想要的,可以通过setenv serverip “……”来修改,如下图中就把ip从192.168.1.24

改为192.168.1.43,修改完成后需要saveenv,然后reset,整个修改完成。 Printenv命令后的ip信息 Setenv serverip ”192.168.1.43” 后的结果 3.下载bootrom。先找到vxworks编译好的bootrom.bin文件,例如:本PC 上的路径C:\WindRiver-GPPVE-3.6-PPC-Eval\vxworks-6.6\target\config\mds837x,如下图。 需要的bootrom文件 把bootrom复制到tftp软件所在的位置,如下图。

放置好的bootrom文件 然后启动tftp软件,并在命令行输入:run loadvx,成功后如下图,至此bootrom 下载完毕。 下载成功后tftp显示信息 4.Vxworks下载。首先启动Vxworks6.6自带的ftp server,并配置好登陆用户和密码以及相关设置,主要有两部分设置,如下图。

打通VxWorks调试环境 Step by Step(X86)

打通VxWorks调试环境Step by Step 1 引言 1.1 编写目的 概要说明如何建立使用Tornado开发、调试VxWorks的环境(X86版本)。 1.2 背景 1.3 定义 HOST:主机,运行Tornado集成环境,FTP Server,Target Server,以及编辑、build 工程、下载目标文件的各种软件工具; TARGET:目标机,HOST产生的vxWorks映像运行的位置,对于X86版本来说也是一台PC ; TORNADO:C:\Tornado,安装Tornado的路径; BSPNAME:C:\Tornado\target\config\pc486,BSP的路径,本例中我们选择pc486;PROJECT:C:\Tornado\proj\Project2,我们自己创建的工程的路径; BIN:C:\Tornado\host\x86-win32\bin,Tornado的可执行程序的路径; HOME:C:\Tornado\host\x86-win32\bin,FTP用户的根目录。 1.4 参考资料 Tornado User’s G uide (Windows Version), 2.0, Edition 1 VxWorks Programmer’s Guide, 5.4, Edition 1 2 总体描述 2.1 硬件环境 HOST与TARGET通过以太网互连,并且位于同一网段;同时,串口通过直连电缆(NULL Modem Cable)连接。目标机配置有软盘驱动器,网卡为3com 3c905B. 2.2 软件环境 主机操作系统为Windows 2000简体中文专业版(SP3);安装Tornado Version 2.0和Win 2k 补丁。 (CD No. TDK-12835-ZC-01 & TDK-13127-ZC-00, T2 LM for x86) 2.3 预览 在VxWorks调试环境中,HOST与TARGET之间连接的方式有多种,比如串口和网络;引导TARGET的方式也有多种,当然对X86平台来说最简单的是软盘引导了。在本文档中我们以网络连接、软盘引导为例,建立起调试环境。主要步骤包括: HOST上启动FTP Server, 配置BSP 创建可以引导TARGET的Boot ROM, 制作引导盘(软盘), 用软盘引导TARGET, TARGET通过网络连接从HOST下载vxWorks映像文件, TARGET运行vxWorks, HOST上启动Target Server连接Target Agent,成功建立调试环境之后,就可以在HOST 生成目标模块,下载到TARGET运行,并通过Tornado集成环境进行调试。

VxWorks 基本概念

VxWorks基本概念 Bootrom和Boot image的区别,Boot image和VxWorks image的联系和区别 bootrom 是指on-chip bootrom,在CPU芯片内部,内嵌有小的boot程序(bootloader),类似于PC机主板上的BIOS的存储区域。和boot image不是一回事。VxWorks文档中的bootrom区是指boot image存放的位置。 boot image的作用是把VxWorks image 加载到主板。boot image只初始化很少的硬件系统如串口,网口等。为加载VxWorks image做准备,当VxWorks系统下载完毕后,b oot image的作用也就完成了。 VxWorks image含有完整的VxWorks OS.是真正运行于目标板上的操作系统。应用程序运行于VxWorks系统之上。 boot image 和VxWorks image生成在使用BSP文件上的区别在于:在启动顺序中Bootrom调用bootConfig.c,而VxWorks调用usrConfig.c. 在ROM中VxWorks运行的方式(和bootrom编译到一起还是单独固化到ROM中),在ROM中的内存分配? VxWorks加载到主板运行,分不同的情况,如果VxWorks是压缩的,加载时解压到RAM的RAM_HIGH_ADRS.如果是ROM based VxWorks,VxWorks image的data段复制到RAM的LOCAL_LOW_ADRS, text部分留在ROM并在ROM中执行。 既不压缩又不ROM based的VxWorks直接copy到RAM_LOW_ADRS运行。 若在config.h中修改系统设置,如增加网卡等,是否需要重新烧bootrom?如果增加其他oem产品呢? 如果主板中有Boot image存在则不需要重新烧,用FTP等download加载VxWorks 即可。 VxWorks 系统编程中任务级与中断级的通讯如何实现? 中断是由硬件触发,软件的作用只是将中断服务例程(ISP)与中断事件连接起来。 1.使能中断,函数intEnable()。 2.用intConnect()登记中断号,和相应的中断例程ISR.这样一旦有中断发生,系统自动跳转到相应位置执行ISR.

vxworks+debug

图形化交叉调试器简介 1. 简介 CrossWind/WDB是tornado提供的基于源代码的调试工具,它支持任务级和系统级调试,支持混合代码和汇编代码显示,并且支持目标机同时调试。WindDebug(WDB)协议是一种用于调试的私有协议,目标机(target)通过WindDebug(WDB)协议与开发机(HOST)之间交互通信。 主机-目标机交互方式如下: HOST ┆ Target ┌──────>wtxregd ┆ v ^ ┆ Tool<────┐│┆VxWorks Tool<────┼> tgtsvr <────────------->WDB Agent Tool<────┘┆ 本地必须启动一个target server,目标机中必须有WDB agent,这样才能进行交叉调试。 target server(目标机代理) Target server提供基于主机的目标机资源管理,以便于Tornado工具访问目标机,功能如下: 与目标机上的debug引擎进行通讯 动态模块下载和卸载 常驻主机的目标机符号表 在目标机上为主机上的工具分配内存 缓存目标机代码text段 支持虚拟IO Target server增强了主机和目标机之间的灵活性,使得主机工具对目标机的影响最小,主机工具与主机和目标机之间的通信方式互相独立,所有的Tornado工具均使用WindRiver Tool Exchange协议(缩写为WTX)与target server通信。WTX协议具体内容参见Tornado API指南。 Target server通过下列方式响应工具的WTX请求:

操作缓存中的信息 发送请求到目标机上的WDB agent中 Wtxregd 在启动target server和工具之前要先启动wtxregd。Tornado工具、registry和target server可以运行在不同主机上,Tornado registry程序必须运行在指定的主机上。windows下为Tools=>Options...=>Tornado Registry页面中指定的主机,tornado 工具与目标机通过target server(tgtsvr)进行交互,target server提供: 网络、串口、NetROM或者用户自定义连接上的通信 常驻主机的目标机符号表 动态模块下载和卸载 缓存目标机RAM中程序的text段 在target上创建虚拟IO路径 Wind Registry程序wtxregd负责管理tornado工具与target server之间连接所需的各种信息。tornado工具首先与registry进行交互,获取target server的相关信息。 WDB代理 WDB调试代理运行在目标机上,与target server进行交互,执行命令并返回结果。WDB代理位于target server和Tornado工具之间,可以完成以下功能: 读取或修改内存 设置或清除断点 创建、启动、停止或删除任务 调用函数 收集系统目标信息 通常WDB代理作为一个任务运行在目标机上,因此获得最佳性能。但这种情况下只能进行任务级调试。也叫做task或internal模式。通常我们可以看到在任务中有twdbTask 这个任务(如图1所示)。 图 1 由于WDB代理不依赖于VxWorks,所以也能够执行系统级调试--例如:调试中断服务程序或内核运行起来之前的代码。将WDB代理与VxWorks分开运行才能进行系统调试。

VxWorks Device Driver 机制分析

VxWorks Device Driver 机制分析 一.概述: 我们不可避免地经常要和device driver打交道,而device driver本身跟操作系统的相关性特别密切,而了解如何能做到屏蔽底层硬件提供标准且通用的接口给上层是我们研究device driver标准的基本目的,由于时间和篇幅的限制,而且我们的工作主要在VxWorks上进行device driver的开发,所以这里只对VxWorks下的标准device driver 开发进行分析。 二.详细分析: 1.VxWorks Device Driver的在系统中的层次概述: VxWorks Device Driver Block Diagram

VxWorks 标准device driver基本都是通过I/O系统来存取的,这样做的好处是可以屏蔽底层硬件,对上层应用程序提供统一的接口。VxWorks的I/O系统由基本I/O及含buffer的I/O组成,它提供标准的C库函数,基本I/O库与Unix兼容,而含buffer的I/O 则与ANSI C兼容。我们将在后面介绍基本I/O与含buffer的I/O。VxWorks的I/O系统有其独特的特性,使得它比其它I/O系统更快速、灵活,这在实时系统中非常重要。还有一些特殊的device driver 如End driver, Serial device driver由于其自身的特性,虽然不是通过标准I/O来进行存取的,但是也都有它们各自相关的规范.在这里我们只介绍通过I/O系统存取的标准的device driver. VxWorks的I/O设备和Unix的I/O设备很相似,它们都分为:字符设备和块设备。 字符设备是指在I/O传输的过程中以字符为单位进行传输的设备,如:键盘,鼠标,打印机等。 块设备是指以“块”为单位对数据进行存取的设备,如:硬盘,光驱,软驱,磁带等。但是VxWorks下的I/O设备driver与Unix下的I/O设备driver也有区别,区别主要是: ●VxWorks的device driver可以动态安装和删除。 ●VxWorks的文件描述符是全局的,可以被任何一个任务存取,除了标准的输入, 输出,错误输出外。 ●VxWorks的ioctl控制命令与Unix的不同。 ●Unix下的device driver执行在系统模式,没有优先级之分,而VxWorks的device driver有优先级之分,这取决于调用它的任务的优先级。

VxWorks系统异常分析方法

1、任务异常的一般表现: i)指令异常:系统打印program异常或instruction access异常。 ii) 访问非法地址异常,串口打印data access异常。 iii)中断处理中产生的异常。 data access Exception current instruction address:0x00187d4c Machine Status Register:0x00009030 Data Access Register: 0x8003435c Condition Register:0x48000080 Data storage interrupt Register:0x0000000b Task:0xc844f0 "XXX" 2、可能的原因: i)堆栈写越界,主要是数组写越界,导致前面声明的变量(因为堆栈是从下往上增长的)或者函数的参数或者函数返回的地址被改写为无效值。 ii) 堆栈溢出,堆栈声明过小,而函数又声明了大数组,超出堆栈的容量。 iii) 内存改写,这是最通常出现的原因。包括,指针没有初始化,导致访问随机地址;访问空指针;内存操作范围越界,例如在使用memcpy/memset等函数使用的长度超过所分配,导致改写了其他的指针。因此在定位异常问题过程中,可以通过内存管理先查看一下先前是否有内存写越界的记录,但是内存写越界只有在释放该内存区时才能检查到,如果该内存没有被释放,则即使写越界也是不知道的。 iv)系统调用不当,在中断回调中,使用printf,semTake之类可能引起阻塞的操作;printf等使用不当导致内存改写,这些函数在中断回调函数中是严格禁止的。 v) 增量编译引起的问题,Tornado和workbench增量编译有时会出现问题,导致古怪的异常,重新全量编译后,可能个会解决问题。

Vxworks网络协议栈

《嵌入式操作系统VxWorks中网络协议存储池原理及实现》 周卫东蔺妍刘利强 (哈尔滨工程大学自动化学院,黑龙江哈尔滨,150001) 摘要本文讨论了网络协议存储池的基本原理和在嵌入式操作系统中的 实现方法。为在嵌入式系统中实现TCP/IP协议栈,提供了一种有效、简洁、可靠的缓冲区管理。 关键词 VxWorks; mBlk; clBlk; 网络协议存储池 VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS)。它以良好的持续发展能力、高性能的内核以及卓越的实时性被广泛的应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中。VxWorks操作系统有着优越的网络性能,而缓冲区的数据拷贝是影响网络性能的主要因素。 众所周知,缓冲区在网络协议栈中有两个作用:第一,提供载体,使分组或报文可以在各协议层中流动;第二,为各级缓冲区提供空间。缓冲区的设立使得TCP/IP协议栈支持异步I/O操作,异步操作对于协议栈的I/0性能是非常重要的。在网络输出的过程中每一层需要在数据的首部或者尾部添加数据头和数 据尾来对数据进行封装使得接收端对应的层能够进行正确的接收,在输入的过程中每层都需要将本层的数据头和数据尾去掉而最终还原成发送端发送的数据。上述的封装/去封装和拷贝操作使得网络协议对内核的存储器管理能力提出了很多要求。这些要求包括能方便地操作可变长缓存,能在缓存头部和尾部添加数据(如低层封装来自高层的数据),能从缓存中移去数据(如当数据包向上经过协议栈时要去掉首部),并能尽量减少这些操作所作的数据复制。 1 使用netBufLib管理存储池的基本原理 网络协议存储池使用mBlk结构、clBlk结构、簇缓冲区和netBufLib提供的函数进行组织和管理。mBlk和clBlk结构为簇缓冲区(cluster)中数据的缓冲共享和缓冲链接提供必要的信息。netBufLib例程使用mBlk和clBlk来管理cluster和引用 cluster中的数据,这些结构体中的信息用于管理cluster 中的数据并且允许他们通过引用的形式来实现数据共享,从而达到数据“零拷贝”的目的。 1.1 结构体mBlk和clBlk及其数据结构

WindShell简介和常用命令

1简介 提供从宿主机到目标机之间的一个命令shell。WindSh 是一种非常受欢迎的开发工具,它具有很强的交互性和可操作性,允许用户调用内存中的应用程序模块或是VxWorks模块中的任何例程。它不但具有一般命令语言的功能,而且也具有 C 语言的设计特点,能够解释几乎任何 C 语言表达式,执行大多数C 语言算子,解析符号表数据。对初用者来说,WindSh学习起来比较简单,使用比较方便,对熟练用户而言,则有较为高级的手段可以应用。 WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括VxWorks 和应用函数。Tornado外壳还能解释常规的工具命令语言TCL。 WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。它主要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区、类);复位目标机。 2 启动和终止 启动:命令行方式为:windSh phobos(目标服务器名称);菜单Tool->Shell;工具条。 终止:快捷键[Ctrl+D];命令exit() 或quit()。 3 Shell特性 I/O重定向:程序员常常调用例程从标准输入接收数据或在标准输出显示数据,缺省情况下,标准输入输出流被定向到Tornado Shell。使用Tcl过程shConfig 修改WindSh 环境变量SH_GET_TASK_IO,实现I/O复位向。 路径与符号补齐:键入任何符号或存在的路径名的开始部分,然后键入[Ctrl+D],Shell会自动补齐命令或路径名。并且可以继续键入若干字符后加上[Ctrl+D] 知道命令或路径完整为止。 打印命令摘要(Synopsis ):键入完整的命令后,继续键入空格+ [Ctrl+D] 可以显示命令摘要, 同时输入的命令继续作为输入。 使用Synopsis printing功能包含自定义程序的说明显示 1、按WRS代码约定创建包含新例程的文件 2、在工程中包含这些文件 3、在makefile中为宏DOC_FILES加入文件名 4、àcd $WIND_BASE/target/src/projectX

VxWorks下网卡驱动程序的开发

VxWorks下网卡驱动程序的开发 摘要:本文首先从整体上分析VxWorks 网卡驱动程序的原理和结构,然后深入地分析Rtl8139C网卡驱动程序的结构以及实现,本文对于VxWorks下的同类开发也有一定参考作用。 关键词:网卡驱动程序;VxWorks;嵌入式系统;Tornado 1引言 VxWorks是当前应用十分广泛的嵌入式实时操作系统,而网卡在基于VxWorks的开发中有着极其重要的作用。Tornado 是VxWorks的开发工具,它本身支持的网卡不多。本文涉及到的网卡是Realtek 公司的8139C PCI网卡,相关的硬件资料有:RTL8139C(L) data sheet 和Rtl8139 Programming Guide 。需要实现的是RTL8139C END driver 。 2 VxWorks简介 VxWorks是由WRS(Wind River System Inc.)公司开发的一套具有微内核、高性能、可伸缩的实时操作系统,支持广泛的网络通信协议,并能够根据用户的需求进行组合。其开放式的结构和对工业标准的支持使开发者只需做最少的工作即可设计出有效的适合于不同用户要求的系统。 VxWorks是一种功能强大而且比较复杂的操作系统,VxWorks只占用了很小的存储空间,并可高度裁减,保证了系统能以较高的效率运行。所以仅仅依靠人工编程调试,很难发挥它的功能并设计出可靠、高效的嵌入式系统,必须要有与之相适应的开发工具。TornadoII是为开发VxWorks应用系统提供的集成开发环境。 VxWorks的优秀特性为编写应用程序和设备驱动程序提供了极大的便利。在VxWorks下,设备驱动程序既可以嵌入到内核中随系统一起启动,也可以作为可加载模块在系统启动之后运行。网卡驱动程序一般采用前一种方式。 3 VxWorks的网络模型 网卡在VxWorks开发中是极其重要的。在开发机-目标机模式中,通过网线进行下载调试是Tornado调试器最常用最方便的方式。VxWorks的优秀的实时性能使其在网络通信当中具有极广泛的应用,如网络交换机、路由器的软件系统等。 网卡驱动程序在整个VxWorks网络接口中的角色可以从下图中看出。

相关主题