关键词不能为空

当前您在: 主页 > 英语 >

VxWorks操作系统指南

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-01 23:48
tags:

-

2021年2月1日发(作者:alacrity)






1.


VxWorks


操作系统概述



1.1.


VxWorks


操作系统简介



1.2.


VxWorks


操作系统内核



1.3.


任务管理



1.4.


通信、同步和互斥机制



1.5.


网络通信



1.6.


中断服务程序



1.7.


时间管理器



2.


VxWorks


应用指导



2.1.


系统启动



2.2.


应用系统配置



2.3.


板级支持包


BSP


s


系统任务



2.5.


应用软件开发指导



2.6.


应用示例分析




4


4


5


6


9


11


14


14


16


17


19


21


23


23


25




要:本文档对实时操作系统作了 简要介绍,并针对


VxWorks


系统的特点进行了具体的说明 和分


析,从


VxWorks


系统的任务 管理、通信机制、系统配置、系统接口几个方面展开。



关键词:实时操作系统




任务



消息



VxWorks Tornado



1.



VxWorks


操作系统概述



1.1.


VxWorks


操作系统简介



实时多任务操作系统是 能在确定的时间内执行其功能,并对外部的异步事件作出响应的计算


机系统。多任务环境 允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统


资源。


VxWorks


系统提供多处理器间和任务间高效的信号灯、消息队列 、管道、网络透明的套接


字。



实时系 统的另一关键特性是硬件中断处理。为了获得最快速可靠的中断响应,


VxWorks< /p>



统的中断服务程序


ISR


有自己的上下文。



VxWorks


实时操作系统由


400


多个相对独立的、短小 精炼的目标模块组成,用户可根据需要


选择适当模块来裁剪和配置系统,这有效地保证了 系统的安全性和可靠性。系统的链接器可按应


用的需要自动链接一些目标模块。这样,通 过目标模块之间的按需组合,可得到许多满足功能需


求的应用。



VxWorks


操作系统的基本构成模块包括以下部分:



??


高效的实时内核


Wind


VxWOrks


实时内核(


Wind


)主要包括基于优先级的任务调度、任务同步和通信、中断处理、定


时器 和内存管理。




??


兼容实时系统标准


POSIX < /p>


VxWOrks


提供接口来支持实时系统标准

P.1003.1b.


??


I/O


系统



VxWOrks


提供快 速灵活的与


ANSI-C


相兼容的


I/ O


系统,包括


UNIX


的缓冲


I/O


和实时系统标



POSIX


的异步


I/O


< p>
VxWOrks


包括以下驱动:



网络



管道



RAM


SCSI


键盘



显示器



磁碟



并口



---


---


---


---


---


---


---


---


网络设备(以太网、共享内存)



任务间通信



驻留内存文件



SCSI


硬盘,磁碟,磁带



PC x86


键盘(


BSP

< p>
仅支持


x86




PC x86


显示器(


BSP


仅支持


x86




IDE


和软盘(


BSP

仅支持


x86




PC


格式的目标硬件



??


本机文件系统


< br>??


I/O


系统



VxWorks


的文件系统与


MS-D OS



RT-11


< br>RAM



SCSI


等相兼容。< /p>



??


网络特性



VxWorks


网络能与许多运行其它协议的网络进行通信,如


TCP/IP



4.3BSD



NFS



UDP



SNMP



FT P


等。


VxWorks


可通过网络允许 任务存取文件到其它系统中,并对任务进行远程调用。



??


虚拟内存(可选单元


VxVMI)


VxVMI


主要用于对指定内存区的保护,如内存块只读等,加 强了系统的健壮性。



??


共享内存(可选单元


VxMP)


VxMP


主要用于多处理器上运行的任务之间的共享信号量、消 息队列、内存块的管理。



??


驻留目标工具


< br>Tornado


集成环境中,开发工具工作于主机侧。驻留目标外壳、模块加载和 卸载、符号表都可进


行配置。



??< /p>


Wind


基类



VxWorks


系统提供对


C++


的支 持,并构造了系统基类函数。



??


工具库





2


VxWorks


系统向用户提供丰富的系统调用,包括中断处理、定时器、消息注册、内存分配、字符

< br>串转换、线性和环形缓冲区管理,以及标准


ANSI-C


程序库。



??


性能优化



VxWorks


系统通过运行定时器来记录任务对


CPU


的利用率,从而进行有效地调整,合理安排任务


的运行,给定适宜的 任务属性。



??


目标代理



目标代理可使用户远程调试应用程序。



??


板级支持包


板级支持包提供硬件的初始化、中断建立、定时器、内存映象等。



??


V


xWorks


仿真器(


VxSim)


可选产品


VxWork s


仿真器,能模拟


VxWorks


目标 机的运行,用于应用系统的分析。




1.2.


VxWorks


操作系统内核



VxWorks


内核(


wind


)的基本功能可以分为如下几大类:



任务管理;



事件和异步信号服务;



信号量服务;



消息队列服务;



内存管理;



中断服务程序;



时钟管理和定时器服务;



出错处理。



在以下各节中将对


VxWorks


内核的各类功能分别进行描述。




1.1.


任务管理




任务是代码运行的一个映象,从系统的角度看,任务是竞争系 统资源的最小运行单


元。任务可以使用或等待


CPU

< p>


I/O


设备及内存空间等系统资源,并独立于其 它任务,与


它们一起并发运行(宏观上如此)。


VxWorks


内核使任务能快速共享系统的绝大部分资


源,同时有独立的上下 文来控制个别线程的执行。



1.1.1.


任务结构





3


< /p>


多任务设计能随时打断正在执行着的任务,对内部和外部发生的事件在确定的时间里


作出响应。


VxWorks


实时内核


Wind


提供了基本的多任务环境。从表面上来看,多个任务

< p>
正在同时执行,实际上,系统内核根据某一调度策略让它们交替运行。系统调度器使用任

< p>
务控制块的数据结构(简记为


TCB)


来管理任务 调度功能。任务控制块用来描述一个任


务,每一任务都与一个


T CB


关联。


TCB


包括了任务的当前状 态、优先级、要等待的事件或


资源、任务程序码的起始地址、初始堆栈指针等信息。调度 器在任务最初被激活时以及从


休眠态重新被激活时,要用到这些信息。

< br>



此外,


TCB


还被用来存放任务的



上下文




context)


。任务的上下文就 是当一个执


行中的任务被停止时,所要保存的所有信息。在任务被重新执行时,必须要恢 复上下文。


通常,上下文就是计算机当前的状态,也即各个寄存器的内容。如同在发生中 断所要保存


的内容一样。当发生任务切换时,当前运行的任务的上下文被存入

< p>
TCB


,将要被执行的任


务的上下文从它的


TCB


中取出,放入各个寄存器中。于是转而执行这个任务,执行的起 点


是前次它在运行时被中止的位置。




VxWorks


中,内存地址空间不是任务上下文的一部分。所 有的代码运行在同一地址空


间。如每一任务需各自的内存空间,需可选产品


VxVMI


的支持。



1.1.2.


任务状态和状态迁移



实时系统的一个任务可有多种状态,其中最基本的状态有四种:



就绪态:任务只等待系统分配


CPU


资 源;



悬置态:任务需等待某些不可利用的资源而被阻塞;



休眠态:如果系统不需要某一个任务工作,则这个任务处于休眠状态;



延迟态:任务被延迟时所处状态;



当 系统函数对某一任务进行操作时,任务从一种状态迁移到另一状态。处于任一状态的任


务 都可被删除。





4


最高优先级任务正执行






















taskInit()





状态迁移











调用



就绪态


---->


悬置态




semTake()/msgQReceive()






























taskDelay()



taskSuspend()



semGive()/msgQSend()



taskSuspend()



expired delay


taskSuspend()



就绪态


---->


延迟态



就绪态


---->


休眠态



悬置态


---->


就绪态



悬置态


---->


休眠态



延迟态


---->


就绪态



延迟态


---->


休眠态



休眠态


---->


就绪态




taskResume()/taskActivate()











taskResume()



taskResume()



休眠态


---->


悬置态



休眠态


---->


延迟态




1.1.3.


任务调度策略




多任务调度须采用一种调度算法来分配


CPU


给就绪态任务。


Wind


内核 采用基于优先级


的抢占式调度法作为它的缺省策略,同时它也提供了轮转调度法。




基于优先级的抢占式调度,它具有很多优 点。这种调度方法为每个任务指定不同的优


先级。没有处于悬置或休眠态的最高优先级任 务将一直运行下去。当更高优先级的任务由


就绪态进入运行时,系统内核立即保存当前任 务的上下文,切换到更高优先级的任务。





5



多任 务调度须采用一种调度算法来分配


CPU


给就绪态任务。


Wind


内核采用基于优先级


的抢占式调度法 作为它的缺省策略,同时它也提供了轮转调度法。




基于优先级的抢占式调度,它具有很多优点。这种调度方法为每个任务指定不同的优


先级。没有处于悬置或休眠态的最高优先级任务将一直运行下去。当更高优先级的任务由


就绪态进入运行时,系统内核立即保存当前任务的上下文,切换到更高优先级的任务。




Wind


内核划分优先级为


256 < /p>


级(


0~255


)。优先级


0


为最高优先级,优先级


255

为最


低。当任务被创建时,系统根据给定值分配任务优先级。然而,优先级也可以是 动态的,


它们能在系统运行时被用户使用系统调用


taskPr ioritySet()


来加以改变,但不能在


运行时被操作系 统所改变。







t1





< br>注:


表示抢占


表示任务完成


t1


t2


t3


t2






轮转调 度法分配给处于就绪态的每个同优先级的任务一个相同的执行时间片。时间片


的长度可由 系统调用


KernelTimeSlice()


通过输入参数值 来指定。很明显,每个任务


都有一运行时间计数器,任务运行时每一时间滴答加


1


。一个任务用完时间片之后,就进


行任务切换 ,停止执行当前运行的任务,将它放入队列尾部,对运行时间计数器置零,并


开始执行就 绪队列中的下一个任务。当运行任务被更高优先级的任务抢占时,此任务的运


行时间计数 器被保存,直到该任务下次运行时。





6



优< /p>


t4





t1


t2


t3


t1


t2


t2


时间片


t3





注:


表示抢占,


表示任务完成。

< p>



1.1.4.


抢占禁止




Wind


内核可通过调用


taskLock()



taskUnlock


()


来使调度器起作用和失效。


当一个 任务调用


taskLock()


使调度器失效,任务运行时没有 基于优先级的抢占发生。然


而,如果任务被阻塞或是悬置时,调度器从就绪队列中取出最 高优先级的任务运行。当设


置抢占禁止的任务解除阻塞,再次开始运行时,抢占又被禁止 。这种抢占禁止防止任务的


切换,但对中断处理不起作用。




1.1.5.


异常处理




程序代码和数据的出错,如非法命令、总线或地址错误、被零 除等。


VxWorks


异常处


理包,一 般是将引起异常的任务休眠,保存任务在异常出错处的状态值。内核和其它任务


继续执行 。用户可借助


Tornado


开发工具,查看当前任务状态,从 而确定被休眠的任


务。



1.1.6.


任务管理




VxWorks


内核的任务管理提供 了动态创建、删除和控制任务的功能,具体实现通过如


下一些系统调用:



taskSpawn()


taskInit()










创建(产生并激活)新任务



初始化一个新任务




taskActivate()



taskName()



激活一个已初始化的任务




由任务


ID


号得到任务名



由任务名得到任务


ID




taskNameToId


()



taskPriorityGet()





获得任务的优先级





7


taskIsSuspended()


taskIsReady()


taskTcb()












检查任务是否被悬置



检查任务是否准备运行




得到一个任务控制块的指针



taskDelete()



taskSafe()



中止指定任务并自由内存(仅任务堆栈和控制块)




保护被调用任务



taskSuspend()


taskResume()



taskRestart(


)


taskDelay()



悬置一个任务



恢复一个任务



重启一个任务




延迟一个任务



1.2.


通信、同步和互斥机制



VxWorks


支持各种任务间通信机制,提供了多样的任务间通信 方式,主要有如下几种:



?



共享内存,主要是数据的共享;



?



信号量,用于基本的互斥和任务同步;



?



消息队列和管道,单


CPU


的消息传送;



?



Socket

和远程过程调用,用于网络间任务消息


传送;



?



二进制信号,用于异常处理。




在多处理器之间的任务也可采用共享内存对象来实现任务间通信


,< /p>


只是在系统配置上有所不同


.


1.1.1.


共享存储区


< p>
任务间通信的最简单的方法是采用共享存储区,也即相关的各个任务分享属于它们的地址

< p>
空间的同一内存区域。因为所有任务都存在于单一的线性地址空间,任务间共享数据。全

< p>
局变量、线性队列、环形队列、链表、指针都可被运行在不同上下文的代码所指向。



1.1.2.


互斥



当某一地址空间用于数据交换时,为了避免冲突,对于内存的锁定是非常重要的。两个或


多个任务读写某些共享数据时,最后的结果取决于任务运行的精确时序,有可能得到错误


值,这样必须以某种手段确保当一个任务在使用一个共享变量或文件时,其他任务不能做


同样的操作。主要有关中断、抢占禁止和用信号量锁定资源等方法。一般来说,关中断是


最有效的解决互斥的方法。但这对于实时应用来说,它阻止系统对外部事件的响应,无法


满足实时性的要求。同样,中断延迟也是不能接受。



1.1.3.


信号量





8


V xWorks


信号量提供最快速的任务间通信机制,它主要用于解决任务间的互斥和同步 。针对不同类


型的问题,有以下三种信号量:



?



二进制信号量



?



互斥信号量




?



计数器



VxWorks


还提供


POSIX


信号量和多处理器上信号量的应用。



1.1.1.


消息队列




现实的实时应用由一系列互相独立又协同工作的任务组成 。信号量为任务间同步和联


锁提供了高效方法。单处理器中任务间消息的传送采用消息消 息队列。消息机制使用一个


被各有关进程共享的消息队列,任务之间经由这个消息队列发 送和接收消息。



队列


1


message


任务


1


me ssage


队列


2


任务


2


使用最快捷、最广泛,主要用于同步或互斥;



主要用于优先级继承、安全删除和回溯;







1.1.2.


管道


< br>管道用


VxWorks



I/O


系统提供一种灵活的消息传送机制,它是受驱动器


pipeDr v



VxWorks


所提供)管理的虚 拟


I/O


设备。任务能调用标准的


I/ O


函数打开、读出、写入


管道。当任务试图从一个空的管道中读 取数据,或向一个满的管道中写入数据时,任务被


阻塞。和消息队列类似,


ISR


能向管道中写入信息,但不能从中读取。象


I /O


设备一样,


管道有一个消息队列所没有的优势


----


调用


select()

,任务等待一系列


I/O


设备上的数


据。



1.1.3.


系统实现



Wind


信号量对于各种类型的信号量的控制提供了同一规范化的接口,仅创 建函数要特别


指明信号量类型。



semBCreate()






创建(产生并激活)一个二进制信号量




9





任务间全双工信息传送



semMCreate()



semCCreate()



semDelete()


semTake


()



semGive()


semFlush()









创建(产生并激活)一个互斥信号量



创建(产生并激活)制一个计数信号量




中止并自由信号量



获得信号量



给出信号量



解锁所有正等待某一信号量的任务












Wind


消息队列管理:







创建(产生并激活)消息队列




中止并自由信号量




向消息队列发送消息



msgQCreate()



msgQDelete()



msgQSend()



msgQReceive()



从消息队列接收消息



1.2.


网络通信


< br>VxWorks


提供了强大的网络功能,能与其它许多主机系统进行通信。网络完 全兼容


4.3BSD


,也兼容


SUN< /p>


公司的


NFS


。这种广泛的协议支持在主 机和


VxWorksh


目标机之间提供了无缝的工作环境


,


任务可


通过网络向其它系统的主机存取文件 ,即远程文件存取,也支持远程过程调用。通过以太网,采用


TCP/IP



UDP/IP


协议在不同主机之间传送数据。



VxWorks


提供了如下一些网络工具 完成信息传送:



?



Sockets



完成运行在


VxWorks


系统或其它系统之间任务的消息传送;



?



远程过程调用(


RPC




允许任务 调用另一主机(运行的系统为


VxWorks


或是其它)上的过 程。



?



远程文件存取



VxWorks


任务可采用


NFS



RSH



FTP


TFTP


等方式远程存取主机文件。



?



文件输出



?



远程执行命令



VxWorks


任务可通过网络激活主机系统中的命令。




VxWorks


网络组件结构如下:






10


远程文件存取


远程登录


远程执行命令< /p>


netDrv


rlogin


telnet


Source


Debugger


RPC


Zbuf


i'face


Sockets


SNMP


v1/v2


NFS

< p>
RSH


FTP


TFTP


X


Windows


Protocol


TC P


IP+ICMP


Ethernet


P PP


Backplane


UDP


Cus tom Interface


SLIP/CSLIP



1.2.1.


套接口(


Sockets





Vxwork s


系统和网络协议的接口是靠套接字(


sockets


)来实现的。


Sockets


规范


是得到广泛应用的、开放的、支持多种协议的网络编程接口。通讯的基石是套接口,一个


通讯口是套接的一端,在这一端上你可以找到其对应的一个名字。一个正在被使用的套接


口都有它的类型和与其相关的任务。套接口存在于通讯域中。通讯域是为了处理一般的线


程通过套接口通讯而引进的一种抽象概念。套接口通常和同一个域中的套接口交换数据


(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各个任务使用这个


域互相之间用


Internet


协议来进行通讯。




套接口可以根据通讯性质分类。应用程 序一般仅在同一类的套接口间通讯。不过只要


底层的通信协议允许,不同类型的套接口间 也照样可以通信。用户目前使用两种套接口,


即流套接口(采用


TCP


协议)和数据报套接口(采用


UDP

协议)。流套接口提供了双向


的、有序的、无重复并且无记录边界的数据流服务。数 据报套接口支持双向的数据流,但


并不保证是可靠、有序、无重复的。也就是说,一个从 数据报套接口接收信息的任务有可




11


能发现信息重复了,或者和发出时的顺序不同。数据报套 接口的一个重要特点是它保留了


记录边界。对于这一特点,数据报套接口采用了与现在许 多包交换网络(例如以太网)非


常类似的模型。




套接口(


socket)

< p>
通信的最大优点是:过程间的通信是完全对等的,不管网络中过程的定位或主机所

< br>运行的操作系统。一般来说,流套套接口提供了可靠的面向连接的服务,应用较广泛。其应用程序时


序图如下:



服务器


socket()


bind()


listen()


accept()


阻塞,等待客户数据


read()


处理服务请求


write()


应答数据


建立链接


请求数据


客户机


socket()


connect()


write( )


read()


close()


clo se()




Socket


函数:



socket()


bind()


listen()


accept()











创建一个套接口



给套接口分配名称



打开


TCP


套接口连接



完成套接口间连接



请求连接套接口



12


connect()





shutdown()



send()


recv()


select()


read()


write()


ioctl()


close()


















关闭套接口间连接




TCP


套接口发送数据



从< /p>


TCP


套接口接收数据



完成同步


I/O


传输



从套接口读取信息



向套接口写入信息



完成对套接口的控制



关闭套接口



1.1.


中断服务程序




实时系统中硬件中断处理是至关重要的,因为它是以中断方式 通知系统外部事件的发生。为


了快速响应中断,中断服务程序


I SR


运行在特定的空间,不同于其它任何任务,因此中断处理没


有任务的上下文切换。



中断函数:



intConnect()


intCount()



intLevelSet()


intLock()



intUnlock()



intVecSet()



intVecGet()











C


函数和中断向量联结



得到当前中断套叠深度



设置程序中断级别



使中断禁止



开中断



设置异常向量



得到异常向量



所有的中断服务程序使 用同一中断堆栈,它在系统启动时就已根据具体的配置参数进行了分配和


初始化,必须保 证它的大小,以使它能满足最坏的多中断情况。中断也有缺陷:


ISR

< br>不运行在常规的


任务上下文,它没有任务控制块。对于


I SR


的基本约束就是它们不能激活那些可能使调用程序阻塞的


函 数,例如,它不能获取信号量,因如果该信号量不可利用,内核会试图让调用者切换到悬置态。然


而,


ISR


能给出信号量。



一个


ISR


通常与一个或多个任务进行 通信,有直接的也有间接的作为输入输出事务的一部分。这


种通信的本质是驱动任务执行


,


从而处理中断和各种情况。这与任务到任务的通信和同步基本 相同,


但是有两点不同:



一个


ISR


通常作为通信或同步的发起者,它通常返回一个信号量、向队列 发送一个信息包或事件


给一个任务。


ISR

很少作为信息的接收者,它不可以等待接收信息包或事件。





13


I SR


内的系统调用总是立即返回


ISR


本身。例如,即使


ISR


通过发送信息包唤醒了一个很高优先级


的任务,它也首先必须返回


ISR


。这 是因为


ISR


必须先完成。




1.1.


时钟管理



时钟管理提供以下功能:



维护系统日历时钟;



在任务等待消息包、信号量、事件或内存段时的超时处理;



一定的时间间隔或在特定的时间唤醒或发送告警到一个任务。



处理任务调度中的时间片轮循。



这些 功能都依赖于周期性的定时中断,离开实时时钟或定时器硬件就无法工作。




时钟管理的系统调用有:



tickAnnounce()


tickSet()



tickGet()



timer_create()






通知系统内核时钟



滴答




设定内核时钟计数器值



得到内核时钟计数器值



创建时钟





timer_gettime()



timer_settime()



timer_connect()



timer_cancel()



获得时钟器给定值的当前剩余值



设定时钟值



联系用户函数和时钟信号



取消一个时钟



sysClkRateSet()



系统时钟速率设置




VxWorks


看门狗定时器作为系统时钟中断服务程序的一部分,允许


C


语言函数指明某一时间延迟。一


般来说,被 看门狗定时器激活的函数运行在系统时钟中断级。然而,如果内核不能立即运行该函数,


函数被放入


tExcTask


工作队列中。在

< br>tExcTask


工作队列中的任务运行在最高优先级


0




看门狗定时器调用函数:



wdCreate()



wdDelete()



wdStart()



wdCancel()









分配并初始化看门狗定时器



中止并解除看门狗定时器



启动看门狗定时器



取消当前正在计数的看门狗定时器





14


1.



VxWorks


应用指导




Tornado


集成环境提供了高效 明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌


入式系统的开发和调测工具 。


Tornado


环境采用主机


--< /p>


目标机交叉开发模型,应用程序在主机的


Windows


环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器与目标机上的目


标代理程序的通信完成对应用程序的调测、分析。它主要由以下几部分组成:

< br>


?



VxWorks,


高性能的实时操作系统;



?



应用编译工具;



?



交互开发工具;



TORNADO DEVELOPMENT ENVIRONMENT


(PC)


TARGET SYSTE M


Application


WindSh


Editor


CrossWind


Browser

< p>
WindConfig


Target


Agent< /p>


Target


Server


VxWork s


Tornado


:交互主机工具


< /p>


下面对


Tornado


集成环境的各组件 功能分别介绍:



?



Tornado


开发环境


< p>
Tornado


是集成了编辑器、编译器、调试器于一体的高度集成的窗口 环境,同样也可以从


Shell


窗口


下 发命令和浏览。



?



WindConfig



Tornado


系统配置



通过


WindC onfig


可选择需要的组件组成


VxWorks


实时环境,并生成板级支持包


BSP


的配置。



?



WindSh:Tornado


外壳



WindSh


是一个驻留在主机内的


C


语言解释器,通过它可运行下载到目标机上的所有函数,包括


V xWorks


和应用函数。


Tornado

外壳还能解释常规的工具命令语言


TCL




?



浏览器





15


Tornado


浏览器可查看内 存分配情况、系统目标(如任务、消息队列、信号量等)。这些信息可周期


性地进行更新 。



?



CrossWind:


源码级调试器



源码级调试器


CrossWind


提供 了图形和命令行方式来调试,可进行指定任务或系统级断点设置、单


步执行、异常处理。



?



驻留主机的目标服务器



目标服务器管 理主机与目标机的通信,所有与目标机的交互工具都通过目标服务器,它也管理主机上


的 目标机符号表,提供目标模块的加载和卸载。



?



Tornado


注册器



所有目标服务器注册其提供的服务在注册器中。注册器映射用户定义的目标名到目标服务器网络地


址。



?



VxWOrks


Tornado


包含 了


VxWorks


操作系统。



?



目标代理程序



目标代理程序是一个驻 留在目标机中的联系


Tornado


工具和目标机系统的组件。 一般来说,目标代理


程序往往是不可见的。




1.1.


系统启动



1.1.1.


启动盘的制作



在实时应用系统的开发调测阶段,往往采用以


PC


机作为目标机来调测程序。主机


PC


和目标机


PC



间可采取串口或是网口进行联结。由于大多数目 标已配有网卡,网络联结成为最简单快速的连接


方式。串口联结虽通信速率不高,也有它 自己的优点,系统级任务调试(如中断服务程序


ISR



需使通信方式工作在


Polled


模式,网 口联结就不支持,因此可以裁剪掉系统中网络部分,以使


VxWorks


系统更小,满足目标板的内存约束。下面分别对这两种通信方式下目标机


VxW orks


系统


启动盘的制作作一简要介绍。


串口通信时目标机


VxWorks


系统启动盘的制作步骤:



1.


修改 通用配置文件


Tornadotargetconfigpc486config.h.



config.h


文件中加入以下宏 定义:



#undef


#define


#define




WDB_COMM_TYPE


WDB_COMM_TYPE


WDB_COMM_SERIAL


/*


定义通信方式为串口联结


*/



16



/*


通道号


*/


WDB_TTY_CHANNEL


1


#define


WDB_TTY_BAUD


9600




/*


串口速率,可设置至


38400*/


并且修改


#define DEFAULT_BOOT_LIN E



vxWorks






2.


Tornado


集成环境中点取


Project


菜单,选取


Make PC486


,选择


Common Target,


先进行


clean


操作


;< /p>


再选择


Boot Rom Target,


进行


bootrom_uncmp


操作;再选择


VxWorks Target,





操作。



3.


拷贝


Tornadotargetconfigpc486bootrom_ uncmp



Tornadohostbin

< br>下


;


4.


重命名文件


bootrom_uncmp



bootrom ;


5.


准备一张已格式化的空盘插入软驱;

< br>


6.


在目录


Tornadoh ostbin


下执行命令


mkboot a: bootrom




7.

< p>
拷贝


Tornadotargetconfigpc486VxWorks .*


至软盘


;


8.

< br>将系统制作盘插入目标机软驱,加电启动目标机即载入


VxWorkst


系统。





网口通信时目标机


VxWorks


系统启动盘的 制作步骤:



1.


配置目标机网卡,设 置其中断号和输入输出范围(


I/O


地址);

< br>


2.


修改通用配置文件


Tor nadotargetconfigpc486config.h.


针对不同的网卡, 其名称不同,如


NE2000


及其兼容网卡为

< br>ENE



3COM


以太网卡为< /p>


ELT



Intel

网卡



EEX


< br>



config.h


文件中修 改相应网卡类型(如网卡为


3COM


网卡)的定义部分:



#define


#define


IO_ADRS_ELT



INT_LVL_ELT



网卡


I/O


地址




网卡中断号




并且修改


#define DEFAULT_BOOT_LINE


的定义:



#define


DEFAULT_BOOT_LINE




主机标识名


:C:tornadotargetconfigpc486vxWorks h=


主机


IP e=


目标机


IP u=


登录用户名


pw=


口令


tn=


目标机名



3.


主机信息的确定






主机操 作系统


Win95


安装目录下有一文件



,向其中加入:



主机


IP


主机名



目标机


IP


目标机名



4.



Tornado


集成环境中点取


P roject


菜单,选取


Make PC486


,选择


Common Target,


先进行


clean


操作


;< /p>


再选择


Boot Rom Target,


进行


bootrom_uncmp


操作;再选择


VxWorks Target,




vxworks


操作。





17

-


-


-


-


-


-


-


-



本文更新与2021-02-01 23:48,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/595913.html

VxWorks操作系统指南的相关文章