VxWorks简要手册

VxWorks简要手册
VxWorks简要手册

VxWorks操作系统指南

目录

1. VxWorks操作系统概述 4

1.1.VxWorks 操作系统简介 4

1.2.VxWorks操作系统内核 5

1.3.任务管理 6

1.4.通信、同步和互斥机制9

1.5.网络通信11

1.6.中断服务程序14

1.7.时间管理器14

2.VxWorks应用指导16

2.1.系统启动17

2.2.应用系统配置19

2.3.板级支持包BSP 21

2.4.VxWorks系统任务23

2.5.应用软件开发指导23

2.6.应用示例分析25

2

关键词:实时操作系统任务消息VxWorks Tornado

摘要:本文档对实时操作系统作了简要介绍,并针对VxWorks系统的特点进行了具体的说明和分析,从VxWorks系统的任务管理、通信机制、系统配置、系统接口几个方面展开。

1. VxWorks操作系统概述

1.1.VxWorks 操作系统简介

实时多任务操作系统是能在确定的时间内执行其功能,并对外部的异步事件作出响应的计算机系统。多任务环境允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。VxWorks系统提供多处理器间和任务间高效的信号灯、消息队列、管道、网络透明的套接字。实时系统的另一关键特性是硬件中断处理。为了获得最快速可靠的中断响应,VxWorks系统的中断服务程序ISR有自己的上下文。

VxWorks实时操作系统由400多个相对独立的、短小精炼的目标模块组成,用户可根据需要选择适当模块来裁剪和配置系统,这有效地保证了系统的安全性和可靠性。系统的链接器可按应用的需要自动链接一些目标模块。这样,通过目标模块之间的按需组合,可得到许多满足功能需求的应用。

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

? 高效的实时内核Wind

VxWOrks实时内核(Wind)主要包括基于优先级的任务调度、任务同步和通信、中断处理、定时器和内存管理。

? 兼容实时系统标准POSIX

VxWOrks提供接口来支持实时系统标准P.1003.1b.

? I/O系统

VxWOrks提供快速灵活的与ANSI-C相兼容的I/O系统,包括UNIX的缓冲I/O和实时系统标准POSIX的异步I/O。VxWOrks包括以下驱动:

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

管道--- 任务间通信

RAM --- 驻留内存文件

SCSI --- SCSI硬盘,磁碟,磁带

键盘--- PC x86键盘(BSP仅支持x86)

显示器--- PC x86显示器(BSP仅支持x86)

磁碟--- IDE和软盘(BSP仅支持x86)

并口--- PC格式的目标硬件

? 本机文件系统

? I/O系统

VxWorks的文件系统与MS-DOS、RT-11、RAM、SCSI等相兼容。

? 网络特性

VxWorks网络能与许多运行其它协议的网络进行通信,如TCP/IP、4.3BSD、NFS、UDP、SNMP、FTP等。VxWorks可通过网络允许任务存取文件到其它系统中,并对任务进行远程调用。? 虚拟内存(可选单元VxVMI)

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

? 共享内存(可选单元VxMP)

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

? 驻留目标工具

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

? Wind基类

VxWorks系统提供对C++的支持,并构造了系统基类函数。

? 工具库

VxWorks系统向用户提供丰富的系统调用,包括中断处理、定时器、消息注册、内存分配、字符串转换、线性和环形缓冲区管理,以及标准ANSI-C程序库。

? 性能优化

VxWorks系统通过运行定时器来记录任务对CPU的利用率,从而进行有效地调整,合理安排任务的运行,给定适宜的任务属性。

? 目标代理

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

? 板级支持包

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

? V xWorks仿真器(VxSim)

可选产品VxWorks仿真器,能模拟VxWorks目标机的运行,用于应用系统的分析。

1.2.VxWorks操作系统内核

VxWorks内核(wind)的基本功能可以分为如下几大类:

◆任务管理;

◆事件和异步信号服务;

◆信号量服务;

◆消息队列服务;

◆内存管理;

◆中断服务程序;

◆时钟管理和定时器服务;

◆出错处理。

在以下各节中将对VxWorks内核的各类功能分别进行描述。

1.1.任务管理

任务是代码运行的一个映象,从系统的角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、I/O设备及内存空间等系统资源,并独立于其它任务,与

它们一起并发运行(宏观上如此)。VxWorks内核使任务能快速共享系统的绝大部分资

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

1.1.1.任务结构

多任务设计能随时打断正在执行着的任务,对内部和外部发生的事件在确定的时间里作出响应。VxWorks实时内核Wind提供了基本的多任务环境。从表面上来看,多个任务

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

务控制块的数据结构(简记为TCB)来管理任务调度功能。任务控制块用来描述一个任

务,每一任务都与一个TCB关联。TCB包括了任务的当前状态、优先级、要等待的事件或

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

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

此外,TCB还被用来存放任务的"上下文"(context)。任务的上下文就是当一个执行中的任务被停止时,所要保存的所有信息。在任务被重新执行时,必须要恢复上下文。

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

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

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

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

VxWorks中,内存地址空间不是任务上下文的一部分。所有的代码运行在同一地址空间。如每一任务需各自的内存空间,需可选产品VxVMI的支持。

1.1.

2.任务状态和状态迁移

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

就绪态:任务只等待系统分配CPU资源;

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

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

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

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

最高优先级任务正执行

状态迁移调用

就绪态 ----> 悬置态semTake()/msgQReceive()

就绪态 ----> 延迟态taskDelay()

就绪态 ----> 休眠态taskSuspend()

悬置态 ----> 就绪态semGive()/msgQSend()

悬置态 ----> 休眠态taskSuspend()

延迟态 ----> 就绪态expired delay

延迟态 ----> 休眠态taskSuspend()

休眠态 ----> 就绪态taskResume()/taskActivate()

休眠态 ----> 悬置态 taskResume() 休眠态 ----> 延迟态

taskResume()

1.1.3.任务调度策略

多任务调度须采用一种调度算法来分配CPU 给就绪态任务。Wind 内核采用基于优先级

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

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

先级。没有处于悬置或休眠态的最高优先级任务将一直运行下去。当更高优先级的任务由就绪态进入运行时,系统内核立即保存当前任务的上下文,切换到更高优先级的任务。

多任务调度须采用一种调度算法来分配CPU 给就绪态任务。Wind 内核采用基于优先级

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

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

先级。没有处于悬置或休眠态的最高优先级任务将一直运行下去。当更高优先级的任务由就绪态进入运行时,系统内核立即保存当前任务的上下文,切换到更高优先级的任务。

Wind 内核划分优先级为256 级(0~255)。优先级0为最高优先级,优先级255为最

低。当任务被创建时,系统根据给定值分配任务优先级。然而,优先级也可以是动态的,它们能在系统运行时被用户使用系统调用taskPrioritySet()来加以改变,但不能在运行时被操作系统所改变。 注:

高低

级时 间

表示抢占

表示任务完成

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

间片的长度可由系统调用KernelTimeSlice()通过输入参数值来指定。很明显,每个任务都有一运行时间计数器,任务运行时每一时间滴答加1。一个任务用完时间片之后,

就进行任务切换,停止执行当前运行的任务,将它放入队列尾部,对运行时间计数器置零,并开始执行就绪队列中的下一个任务。当运行任务被更高优先级的任务抢占时,此任务的运行时间计数器被保存,直到该任务下次运行时。

注:

表示抢占,

表示任务完成。

1.1.4.抢占禁止

Wind 内核可通过调用taskLock()和taskUnlock ()来使调度器起作用和失效。当

一个任务调用taskLock()使调度器失效,任务运行时没有基于优先级的抢占发生。然而,如果任务被阻塞或是悬置时,调度器从就绪队列中取出最高优先级的任务运行。当设置抢占禁止的任务解除阻塞,再次开始运行时,抢占又被禁止。这种抢占禁止防止任务的切换,但对中断处理不起作用。

1.1.5.异常处理

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

理包,一般是将引起异常的任务休眠,保存任务在异常出错处的状态值。内核和其它任务继续执行。用户可借助Tornado 开发工具,查看当前任务状态,从而确定被休眠的任务。

1.1.6.任务管理

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

下一些系统调用: taskSpawn() 创建(产生并激活)新任务

taskInit()

初始化一个新任务

taskActivate() 激活一个已初始化的任务

taskName() 由任务ID号得到任务名

taskNameToId()由任务名得到任务ID号

taskPriorityGet() 获得任务的优先级

taskIsSuspended() 检查任务是否被悬置

taskIsReady() 检查任务是否准备运行

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

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

taskSafe() 保护被调用任务

taskSuspend() 悬置一个任务

taskResume() 恢复一个任务

taskRestart() 重启一个任务

taskDelay() 延迟一个任务

1.2.通信、同步和互斥机制

VxWorks支持各种任务间通信机制,提供了多样的任务间通信方式,主要有如下几种:?共享内存,主要是数据的共享;

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

?消息队列和管道,单CPU的消息传送;

?Socket和远程过程调用,用于网络间任务消息传送;

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

在多处理器之间的任务也可采用共享内存对象来实现任务间通信,只是在系统配置上有所不同.

1.1.1.共享存储区

任务间通信的最简单的方法是采用共享存储区,也即相关的各个任务分享属于它们的地址空间的同一内存区域。因为所有任务都存在于单一的线性地址空间,任务间共享数据。全局变量、线性队列、环形队列、链表、指针都可被运行在不同上下文的代码所指向。

1.1.

2.互斥

当某一地址空间用于数据交换时,为了避免冲突,对于内存的锁定是非常重要的。两个或多个任务读写某些共享数据时,最后的结果取决于任务运行的精确时序,有可能得到错误值,这样必须以某种手段确保当一个任务在使用一个共享变量或文件时,其他任务不能做同样的操作。主要有关中断、抢占禁止和用信号量锁定资源等方法。一般来说,关中断是

最有效的解决互斥的方法。但这对于实时应用来说,它阻止系统对外部事件的响应,无法满足实时性的要求。同样,中断延迟也是不能接受。

1.1.3.信号量

VxWorks信号量提供最快速的任务间通信机制,它主要用于解决任务间的互斥和同步。针对不同类型的问题,有以下三种信号量:

?二进制信号量使用最快捷、最广泛,主要用于同步或互斥;

?互斥信号量主要用于优先级继承、安全删除和回溯;

?计数器

VxWorks还提供POSIX信号量和多处理器上信号量的应用。

1.1.1.消息队列

现实的实时应用由一系列互相独立又协同工作的任务组成。信号量为任务间同步和联锁提供了高效方法。单处理器中任务间消息的传送采用消息消息队列。消息机制使用一个

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

队列2

任务间全双工信息传送

1.1.

2.管道

管道用VxWorks的I/O系统提供一种灵活的消息传送机制,它是受驱动器pipeDrv

(VxWorks所提供)管理的虚拟I/O设备。任务能调用标准的I/O函数打开、读出、写入

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

阻塞。和消息队列类似,ISR能向管道中写入信息,但不能从中读取。象I/O设备一样,

管道有一个消息队列所没有的优势----调用select(),任务等待一系列I/O设备上的数

据。

1.1.3.系统实现

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

指明信号量类型。

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

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

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

semDelete() 中止并自由信号量

semTake()获得信号量

semGive() 给出信号量

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

Wind 消息队列管理:

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

msgQDelete() 中止并自由信号量

msgQSend() 向消息队列发送消息

msgQReceive() 从消息队列接收消息

1.2.网络通信

VxWorks提供了强大的网络功能,能与其它许多主机系统进行通信。网络完全兼容4.3BSD,也兼容SUN公司的NFS。这种广泛的协议支持在主机和VxWorksh目标机之间提供了无缝的工作环境,任务可通过网络向其它系统的主机存取文件,即远程文件存取,也支持远程过程调用。通过以太网,采用TCP/IP和UDP/IP协议在不同主机之间传送数据。

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

?Sockets

完成运行在VxWorks系统或其它系统之间任务的消息传送;

?远程过程调用(RPC)

允许任务调用另一主机(运行的系统为VxWorks或是其它)上的过程。

?远程文件存取

VxWorks任务可采用NFS、RSH、FTP、TFTP等方式远程存取主机文件。

?文件输出

?远程执行命令

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

VxWorks 网络组件结构如下:

rlogin

telnet

Source Debugger

NFS

RSH

FTP

TFTP

X Windows Protocol

RPC

Zbuf i'face

Sockets

SNMP v1/v2

TCP

UDP

IP+ICMP

Ethernet

Backplane

Custom Interface

SLIP/CSLIP

PPP

netDrv

远程执行命令

远程文件存取

远程登录

1.2.1.套接口(Sockets )

Vxworks 系统和网络协议的接口是靠套接字(sockets )来实现的。Sockets 规范

是得到广泛应用的、开放的、支持多种协议的网络编程接口。通讯的基石是套接口,一个通讯口是套接的一端,在这一端上你可以找到其对应的一个名字。一个正在被使用的套接口都有它的类型和与其相关的任务。套接口存在于通讯域中。通讯域是为了处理一般的线程通过套接口通讯而引进的一种抽象概念。套接口通常和同一个域中的套接口交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各个任务使用这个域互相之间用Internet 协议来进行通讯。

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

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

即流套接口(采用TCP 协议)和数据报套接口(采用UDP 协议)。流套接口提供了双向的、有序的、无重复并且无记录边界的数据流服务。数据报套接口支持双向的数据流,但并不保证是可靠、有序、无重复的。也就是说,一个从数据报套接口接收信息的任务有可能发现信息重复了,或者和发出时的顺序不同。数据报套接口的一个重要特点是它保留了记录边界。对于这一特点,数据报套接口采用了与现在许多包交换网络(例如以太网)非常类似的模型。

套接口(socket)通信的最大优点是:过程间的通信是完全对等的,不管网络中过程的定位或主机所运行的操作系统。一般来说,流套套接口提供了可靠的面向连接的服务,应用较广泛。其应用程序时序图如下:

服务器socket()

bind()

listen()accept()阻塞,等待客户数据

read()write()

close()close()

read()

write()

connect()socket()

处理服务请求客户机建立链接请求数据

应答数据

Socket 函数: socket()

创建一个套接口

bind() 给套接口分配名称

listen() 打开TCP套接口连接

accept() 完成套接口间连接

connect() 请求连接套接口

shutdown() 关闭套接口间连接

send() 向TCP套接口发送数据

recv() 从TCP套接口接收数据

select() 完成同步I/O传输

read() 从套接口读取信息

write() 向套接口写入信息

ioctl() 完成对套接口的控制

close() 关闭套接口

1.1.中断服务程序

实时系统中硬件中断处理是至关重要的,因为它是以中断方式通知系统外部事件的发生。为了快速响应中断,中断服务程序ISR运行在特定的空间,不同于其它任何任务,因此中断处理没有任务的上下文切换。

中断函数:

intConnect() 将C函数和中断向量联结

intCount() 得到当前中断套叠深度

intLevelSet() 设置程序中断级别

intLock() 使中断禁止

intUnlock() 开中断

intVecSet() 设置异常向量

intVecGet() 得到异常向量

所有的中断服务程序使用同一中断堆栈,它在系统启动时就已根据具体的配置参数进行了分配和初始化,必须保证它的大小,以使它能满足最坏的多中断情况。中断也有缺陷:ISR不运行在常规的任务上下文,它没有任务控制块。对于ISR的基本约束就是它们不能激活那些可能使调用程序阻塞的函数,例如,它不能获取信号量,因如果该信号量不可利用,内核会试图让调用者切换到悬置态。然而,ISR能给出信号量。

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

这种通信的本质是驱动任务执行,从而处理中断和各种情况。这与任务到任务的通信和同步基本相同,但是有两点不同:

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

息包或事件给一个任务。ISR很少作为信息的接收者,它不可以等待接收信息包或事件。

? ISR内的系统调用总是立即返回ISR本身。例如,即使ISR通过发送信息包唤醒了一个

很高优先级的任务,它也首先必须返回ISR。这是因为ISR必须先完成。

1.1.时钟管理

时钟管理提供以下功能:

?维护系统日历时钟;

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

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

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

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

时钟管理的系统调用有:

tickAnnounce() 通知系统内核时钟“滴答”

tickSet() 设定内核时钟计数器值

tickGet() 得到内核时钟计数器值

timer_create() 创建时钟

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

timer_settime() 设定时钟值

timer_connect() 联系用户函数和时钟信号

timer_cancel() 取消一个时钟

sysClkRateSet() 系统时钟速率设置

VxWorks看门狗定时器作为系统时钟中断服务程序的一部分,允许C语言函数指明某一时间延迟。一般来说,被看门狗定时器激活的函数运行在系统时钟中断级。然而,如果内核不能立即运行该函数,函数被放入tExcTask工作队列中。在tExcTask工作队列中的任务运行在最高优先级0。

看门狗定时器调用函数:

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

wdDelete() 中止并解除看门狗定时器

wdStart() 启动看门狗定时器

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

1.VxWorks应用指导

Tornado集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。Tornado环境采用主机--目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器与目标机上的目标代理程序的通信完成对应用程序的调测、分析。它主要由以下几部分组成:

?VxWorks,高性能的实时操作系统;

?应用编译工具;

?交互开发工具;

Tornado:交互主机工具

下面对Tornado集成环境的各组件功能分别介绍:

?Tornado开发环境

Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。

?WindConfig:Tornado系统配置

通过WindConfig可选择需要的组件组成VxWorks实时环境,并生成板级支持包BSP的配置。

?WindSh:Tornado外壳

WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括

VxWorks和应用函数。Tornado外壳还能解释常规的工具命令语言TCL。

?浏览器

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

?CrossWind:源码级调试器

源码级调试器CrossWind提供了图形和命令行方式来调试,可进行指定任务或系统级断点设置、单步执行、异常处理。

?驻留主机的目标服务器

目标服务器管理主机与目标机的通信,所有与目标机的交互工具都通过目标服务器,它也管理主机上的目标机符号表,提供目标模块的加载和卸载。

?Tornado注册器

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

?VxWOrks

Tornado包含了VxWorks操作系统。

?目标代理程序

目标代理程序是一个驻留在目标机中的联系Tornado工具和目标机系统的组件。一般来说,目标代理程序往往是不可见的。

1.1.系统启动

1.1.1.启动盘的制作

在实时应用系统的开发调测阶段,往往采用以PC机作为目标机来调测程序。主机PC和目标机PC之间可采取串口或是网口进行联结。由于大多数目标已配有网卡,网络联结成为最简单快速的连接方式。串口联结虽通信速率不高,也有它自己的优点,系统级任务调试(如中断服务程序ISR)

需使通信方式工作在Polled 模式,网口联结就不支持,因此可以裁剪掉系统中网络部分,以使VxWorks系统更小,满足目标板的内存约束。下面分别对这两种通信方式下目标机VxWorks系统启动盘的制作作一简要介绍。

串口通信时目标机VxWorks系统启动盘的制作步骤:

1.修改通用配置文件\\Tornado\target\config\pc486\config.h.

在config.h文件中加入以下宏定义:

#undef WDB_COMM_TYPE

#define WDB_COMM_TYPE WDB_COMM_SERIAL /*定义通信方式为串口联结*/

#define WDB_TTY_CHANNEL 1 /*通道号*/

#define WDB_TTY_BAUD 9600 /*串口速率,可设置至38400*/

并且修改#define DEFAULT_BOOT_LINE中vxWorks为vxWorks.st。

2.在Tornado集成环境中点取Project菜单,选取Make PC486,选择Common Target,先进行clean操作;再选择Boot Rom Target,进行bootrom_uncmp操作;再选择VxWorks Target,进行vxworks.st操作。

3.拷贝\\Tornado\target\config\pc486\bootrom_uncmp至\\Tornado\host\bin下;

4.重命名文件bootrom_uncmp为bootrom;

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

6.在目录\\Tornado\host\bin下执行命令 mkboot a: bootrom ;

7.拷贝\\Tornado\target\config\pc486\VxWorks.*至软盘;

8.将系统制作盘插入目标机软驱,加电启动目标机即载入VxWorkst系统。

网口通信时目标机VxWorks系统启动盘的制作步骤:

1.配置目标机网卡,设置其中断号和输入输出范围(I/O地址);

2.修改通用配置文件\\Tornado\target\config\pc486\config.h.

针对不同的网卡,其名称不同,如NE2000及其兼容网卡为ENE,3COM以太网卡为ELT,Intel网卡为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=目标机名"

3.主机信息的确定

主机操作系统Win95安装目录下有一文件hosts.sam,向其中加入:

主机IP 主机名

目标机IP 目标机名

4.在Tornado集成环境中点取Project菜单,选取Make PC486,选择Common Target,先进行

clean操作;再选择Boot Rom Target,进行bootrom_uncmp操作;再选择VxWorks Target,进行vxworks操作。

5.拷贝\\Tornado\target\config\pc486\bootrom_uncmp至\\Tornado\host\bin下;

6.重命名文件bootrom_uncmp为bootrom;

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

8.在目录\\Tornado\host\bin下执行命令 mkboot a: bootrom ;

9.启动Tornado组件FTP Server,在WFTPD窗口中选择菜单Security中的User/right...,在其

弹出窗口中选择New User...,根据提示信息输入登录用户名和口令,并且要指定下载文件

vxWorks所在根目录;还必选取主菜单Logging中Log options,使Enable Logging、Gets 、Logins 、Commands 、Warnings能。

10.将系统制作盘插入目标机软驱,加电启动目标机即通过FTP方式从主机下载VxWorkst系统。

1.1.1.主机Tornado环境配置

串口联结时主机Tornado开发环境的目标服务器配置操作如下:

1.在Tornado集成环境中点取Tools菜单,选取Target Server,选择config...;

2.在Configure Target Servers窗口中先给目标服务器命名;

3.在配置目标服务器窗口中的"Change Property"窗口中选择Back End,在"Available

Back"窗口中选择wdbserial,再在"Serial Port"窗口中选择主机与目标机连接所占用的串口号(COM1,COM2),再在"Speed(bps)"窗口中选择主机与目标机间串口速率。

4. 在配置目标服务器窗口中的"Change Property"窗口中选择Core File and Symbols,

选择File为BSP目标文件所在目录(本例为PC486目录)的VxWorks.st,并选取为All Symbols.

5.在配置目标服务器窗口中的"Change Property"窗口中的其它各项可根据需要选择。

网口联结时主机Tornado开发环境的目标服务器配置操作如下:

1.在Tornado集成环境中点取Tools菜单,选取Target Server,选择config...;

2.在Configure Target Servers窗口中先给目标服务器命名;

3.在配置目标服务器窗口中的"Change Property"窗口中选择Back End,在"Available

Back"窗口中选择wdbrpc,在"Target IP/Address"窗口中输入目标机IP。

4. 在配置目标服务器窗口中的"Change Property"窗口中选择Core File and Symbols,

选择File为BSP目标文件所在目录(本例为PC486目录)的VxWorks,并选取为All Symbols.

5.在配置目标服务器窗口中的"Change Property"窗口中的其它各项可根据需要选择。

1.1.应用系统配置

运行在目标板上的系统映象是个二进制模块。大多数情况下,用户会发现系统映象占用空间较大。然而,用户可根据需要裁剪系统配置,降低系统占用资源。

下面针对配置系统映象从以下几方面进行说明:

? VxWorks板级支持包(BSP).

? V xWorks配置文件、可选项、参数.

? V xWorks某些可选择配置.

1.1.1.板级支持包BSP

Tornado目录下config/bspname包含板级支持包BSP,它由运行VxWorks的某些硬件

驱动文件组成,如有串行线的VME板、时钟和其它设备。文件包括:Makefile,

sysLib.c,sysSerial.c,sysALib.s,romInit.s,bspname.h,and config.h.

文件sysLib.c以硬件独立方式提供VxWorks和应用程序间的板级联系,包括:

? 初始化函数

- 初始化硬件到一已知状态

- 标识系统

- 初始化设备,如SCSI或常规设备

? 内存/地址空间函数

- 得到板上内存大小

- 总线地址空间

- 设定/获得非易失性RAM

- 定义板的内存位图(可选)

- 为有MMU的处理器定义虚拟内存到物理内存的映射

? 总线中断函数

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

Tornado_VxWorks官方培训教程1

嵌入式培训专题 微迪软件培训中心Tornado &VxWorks 培训 深圳市微迪软件技术有限公司 培训中心

嵌入式培训专题 微迪软件培训中心实时系统概念 ?实时系统是对外来事件在限定时间内能做出反应的系统。 ?指标 –响应时间Response Time –生存时间Survival Time –吞吐量Throughput

嵌入式培训专题 微迪软件培训中心实时系统与普通系统 ? 在实时计算中,系统的正确性不仅仅依赖于计算的逻辑结果而且依赖于结果产生的时间?对于实时系统来说最重要的要求就是实时操作系统必须有满足在一个事先定义好的时间限制中对外部或内部的事件进行响应和处理的能力 ? 此外作为实时操作系统还需要有效的中断处理能力来处理异步事件和高效的I /O 能力来处理有严格时间限制的数据收发应用

嵌入式培训专题 微迪软件培训中心实时系统分类 ?根据不同的分类方法可以分为几种。 –方法一是分为周期性的和非周期性的(p e r i o d i c 和 a p e r i o d i c ) –方法二是分为硬实时和软实时(h a r d r e a l _t i m e 和s o f t r e a l _t i m e ) –专用系统和开放系统 –集中式系统和分布式系统

嵌入式培训专题 微迪软件培训中心实时多任务操作系统与分时多任务操作系统? 分时操作系统,软件的执行在时间上的要求,并不严格,时间上的错误,一般不会造成灾难性的后果。?实时操作系统,主要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件上必须在事件发生时能够在严格的时限内作出响应(系统响应时间),即使是在尖峰负荷下,也应如此,系统时间响应的超时就意味着致命的失败。另外,实时操作系统的重要特点是具有系统的可确定性,即系统能对运行情况的最好和最坏等的情况能做出精确的估计。

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

vxWorks开发环境构建步骤及开发资源 技创科技(Technique Innovator Inc.) https://www.360docs.net/doc/7e17557960.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源码在编

vxWorks学习笔记

vxWorks学习笔记 vxWorks学习笔记 2006-07-20 11:141.VxWorks开发方式:交叉开发,即将开发分为主机(host)和目标机(target)两部分。 类似于dos下C语言程序的开发。 合并开发的优点:简单 缺点:资源消耗量大,CPU支持,非标准体系的支持 host (Tornado) target(vxWork) 小程序模块 vxWorks实际采用开发模式 Tornado提供:编辑,编译,调试,性能分析工具,是vxWorks 的开发工具 vxWorks:面向对象可以剪裁的实际运行操作系统 2.vxWorks启动方式 Rom方式(vxWork_rom) vxWorks直接烧入rom Rom引导方式(bootrom+vxWorks) 其中bootrom烧入rom,vxWorks可以通过从串口,网口,硬盘,flash等下载!这里的bootrom不是开发环境中的bootable,在开发环境里bootable指的是vxWorks,downloadable指application 3.调试

attach 用来在多任务调试时将调试对象绑定到某个任务 任务级调试(attach taskName) 单个任务的调试不会影响到其他任务的运行,主要用来调用户的应用程序。 全局断点:在调另一任务或本任务时,系统运行本任务断点,则停下。各任务要配合使用。 任务断点:调本任务时,系统运行到本任务断点,则停下。如果没有attach到本任务,不起作用。 一次性断点:跑到一次之后自动删除。 系统级调试(attach system) 把所有task和系统core、中断看成一个整体,可用于调试系统和中断。对中断调试,如果不是系统级调试,无论是那种断点都不起作用 !wdbAgent不在调试范围内,当任务级调试时工作在中断方式,系统级调试工作在轮询方式。 !可是使用命令行方式的调试,参看crossWind教程。 4.调度 优先级调度(无条件) 时间片:同优先级,如果时间片没有打开,任务采取先到先运行,运行完毕在交出cpu,如果打开,则轮流使用cpu。!死循环使比它优先级低的任务都不能运行。

Vxworks任务创建编程学习代码

任务创建编程学习代码一 此代码主要的是创建若干的任务,来学习任务的创建和删除. 程序的结构是: start函数:任务创建函数 stop函数:任务删除函数 其它为任务 请大家仔细分析代码,理解任务内务的创建和删除.本代码是在tornado2.0版本调试成功. 如有疑问联系作者jdvxworks 邮箱:foxqs@https://www.360docs.net/doc/7e17557960.html, /********************************* * date:2006.7.10 time:16.08 * maker: jdvxworks * aim: create 4 task * list: task0 task1 task2 task3 * change:_____________________ *********************************/ #include "stdio.h" #include "taskLib.h" #include "vxWorks.h" //#include "semBLib.h" int taskid0; int taskid1; int taskid2; int taskid3; int loopid; SEM_ID sem_id; STATUS Err; void start(void); void test0(void); void test1(void); void test2(void); void test3(void); void stop(void); void taskloop(void); //start init task void start(void) { int i,o; long p=9999999+100000;

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.

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

Dos引导VxWorks

CF卡上引导VxWorks的三种方法 方法一. 直接引导: 引导扇区 >> bootrom.sys >> VxWorks 这种方法最快,但要求bootrom.sys保持连续性(可用chkdsk检查)。 方法二. FreeDOS引导: 引导扇区 >> FreeDOS >> https://www.360docs.net/doc/7e17557960.html, >> bootrom.sys >> VxWorks 这种方法牺牲少量启动时间换取灵活性,因为你可以为FreeDOS增加菜单实现选择性启动,而且许多维护性工作也可在DOS下进行。 方法三. GRUB引导: 引导扇区 >> GRUB >> FreeDOS启动盘映像 >> FreeDOS >> https://www.360docs.net/doc/7e17557960.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.360docs.net/doc/7e17557960.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

VxWorks操作系统MakeFile

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

风河Workbench3.0_VxWorks6.6应用程序开发使用说明V1.0

说明:由于开发经验和英语水平有限,在本文档中肯定存在偏差和谬误。在有疑问的地方,请以风河的官方文档为准。欢迎联系,指正错误。QQ:1039309823。 风河Woorkbench3.0/VxWorks6.6使用说明 第一章工程视图(Projects Overview) Workbench利用工程( Projects)就像逻辑容器和积木块——它们能够连接在一起创建一个软件系统。工程( Projects)窗口可以直观地组织工程结构反映在内部的依赖关系上,以及编译和链接的次序。 前期配置的各种不同的工程允许在后面建立或添加工程时使用与之前的工程相同的配置和建立方式,因而只需要极小的输入。 一、Workspace/Project 的设置 Wind River Workbench并不知道使用者的源文件在哪一个地方,在开始的使用的时候Wind River Workbench在安装目录下有一个默认的工作空间(workspace )的目录。但是这不是必需的或者说并不一定是合理的,当使用者的工作空间因为产品升级或者更改安装目录已经完全存储在当前的安装目录树之外的时候! 通常,使用者需要把workspace目录设置在当前的源文件树的根目录下并且在此创建Workbench工程。对于各种不同的源文件树,可以使用不同的工作空间(workspaces)。 当决定在什么地方建立工程(projects)要做以下考虑: 1.在workspace建立工程 如果使用者想要新建一个工程在workspace下,通常的情况有 A.所建的工程还没有建立源文件。 B.所建的工程已经存在源文件,但需要添加进工程。 C.所建的工程不允许设置在源文件目录处。

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基础知识

VxWorks基础知识收藏 1.多任务:允许一个实时应用作为一系列独立任务来运行,各任务有各自的线程和系统资源。 3.任务切换之前要保存上下文。 4.优先级是动态的0~255,0级最高。 5.Wind内核taskLock()和taskUnlock()禁止和解除抢占,但对中断不起作用。 6.异常处理:VxWorks异常处理包,一般是将引起异常的任务休眠,保存任务在异常出错处的状态值。内核和其它任务继续执行。 7.为什么要共享存储区:任务间通信的最简单的方法是采用共享存储区,也即相关的各个任务分享属于它们的地址空间的同一内存区域。 8. 为什么要互斥:当某一地址空间用于数据交换时,为了避免冲突,对于内存的锁定是非常重要的。一般来说,关中断是最有效的解决互斥的方法。但这对于实时应用来说,它阻止系统对外部事件的响应,无法满足实时性的要求。同样,中断延迟也是不能接受。因为它们没有实时性。所以要用信号量来完成互斥,主要是二进制信号量,并且二进制信号量不仅能完成互斥而且能完成同步!,但是关中断应该用到程序的初始化过程中。 9.信号量:VxWorks信号量提供最快速的任务间通信机制,它主要用于解决任务间的互斥和同步。针对不同类型的问题,有以下三种信号量: ⊙二进制信号量使用最快捷、最广泛,主要用于同步或互斥; ⊙互斥信号量主要用于优先级继承、安全删除和回溯; ⊙计数器 VxWorks还提供POSIX信号量和多处理器上信号量的应用。 10.消息队列,任务之间利用消息队列发送和接收消息。 11.管道:管道是一种灵活的消息传送机制,它比消息队列强在有一个select() 12.信号量的创建与删除: semBCreate() 创建(产生并激活)一个二进制信号量 semMCreate() 创建(产生并激活)一个互斥信号量 semCCreate() 创建(产生并激活)制一个计数信号量 semDelete() 中止并自由信号量 semTake()获得信号量

学习vxworks中遇到的问题

1预期目标 用两台pc机建立起由网络进行通讯的vxworks开发环境,开发工具是tornado 2.2 for pentium,vxworks版本为5.5。 2硬件描述 宿主机是一台装有windows xp和tornado 2.2的带有网络接口的笔记本电脑,ip设置为192.168.1.101,目标机是研华的610L型号工控机,后发现在vxworks系统下驱动工控机自带网卡有困难,于是购置了一块tp-link的pci网卡,装在工控机上,网卡芯片是realtek 8139d。 3建立开发环境的方案 目标工控机上已经装有windows xp,文件系统是fat32,经试验得知工控机支持usb-zip启动,考虑到不对windows系统产生影响,决定使用u盘启动作为系统启动的方式。用u盘启动bootrom后通过网络下载存放在笔记本电脑上的vxworks系统镜像,宿主机和目标机通过网络通讯,从而建立起x86构架下的vxworks开发环境。 4工作现状 u盘启动盘通过ultraISO和tornado 2.2自带的一些工具制作成功,并能在工控机上把bootrom 启动起来到命令行,但是在加载vxworks镜像的时候不能成功。 5遇到的问题 在bsp中添加rtl8139网卡驱动,添加驱动的过程如下 (a)下载rtl8139驱动vxworks-8139(140),是适用于tornado 2.0的。 (b)将目录下的h和src两个文件夹复制到tornado 2.2下target文件夹里,把sysRtl81x9End.c 复制到bsp文件夹下。 (c)运行命令行,在C:\Tornado2.2\target\src\drv\end\unsupported目录下运行 make CPU=PENTIUM 成功,但有警告(环境变量已设置好), 在C:\Tornado2.2\target\lib\objPENTIUMgnuvx目录下生成了rtl81x91.o。 (d)修改bsp文件夹里的config.h 修改的第一处 #elif (CPU == PENTIUM) #define DEFAULT_BOOT_LINE \ "rtl(0,0)host:vxWorks h=192.168.1.101 e=192.168.1.102 u=target pw=target" 修改的第二处 #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 INCLUDE_FEI_END /* (END) Intel 8255[7/8/9] PCI interface */ #undef INCLUDE_GEI8254X_END /* (END) Intel 82543/82544 PCI interface */ #undef INCLUDE_LN_97X_END /* (END) AMD 79C97x PCI interface */

基于VXWORKS的嵌入式开发设计课件

一、嵌入式系统简介 1、嵌入式系统的基本特征 (1)专用的嵌入式CPU 该CPU具有高效率、低功耗、体积小和集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部完成,有利于嵌入式系统设计趋于小型化, 移动能力增强,与网络耦合紧密。 (2)专用性和算法的唯一性 设计成完成某一特定任务,和相应具体任务有机结合在一起,具有较长的生命周期。 (3)多种技术的结合体 计算机技术、半导体技术以及电子技术和各行业的具体应用紧密结合在一起的系统。 (4)软硬件紧密的相互依赖性 专用性决定了设计目标是单一的,硬件和软件的依赖性强,用利于版权的保护。 (5)系统对用户透明 用户使用只是按照预定方式使用,不需要用户编程和修改。 (6)大多具有实时性 如工业仪表、控制装置、数控系统、信息家电等。 (7)系统资源有限 速度和存储容量以及扩展接口有限。 (8)多为分布式系统 更易于保证硬实时要求、更便宜和更易于实现。 2、嵌入式软件的特点 (1)多具有实时性 指操作系统内核采用了一种算法,使tc(context swich)和ts(system call)尽可能小、尽可能是常量和可确定。所谓可确定是指tc和ts有一个上限,而不是 一个统计的结果,即不会出现峰值,不会随系统任务的增多而增多。 (2)有并发处理能力 能并发处理各个事件驱动,采用多任务运行机制。 (3)具有快速启动、出错处理和自动复位能力 能从只读存储器中快速启动,具有高容错机制,在系统出现死机前自动重启。 (4)应用软件和操作系统一体化设计 硬件和软件一起设计,以解决特定的问题,不同的系统有不同的配置。 (5)交叉开发环境 二、嵌入式系统软件开发流程 1、需求分析 2、设计思路 (1)概要设计 (2)详细设计 (3)详细写出测试项目(包括测试类别、测试过程、测试预测结果) 3、编码 (1)各芯片代码模块化,有利于移植 (2)需要注意一些小问题(如边界条件、内存越界访问、空指针等) ⅰ

打通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集成环境进行调试。

基于OpenGL的VxWorks图形界面开发

基于OpenGL的VxWorks图形界面开发 摘要 图形用户界面(GUI)是人机交互技术的重要内容,它使用图形图像信息、直观的表达方式与用户交互,使软件系统的人机界面简洁、美观、方便好用,更加人性化。目前GUI已经大量应用在嵌入式领域,但是大多数嵌入式GUI系统提供给用户的显示平面从逻辑设计上讲是二维的,最大的缺点在于反映信息量小,在对真实场景进行模拟显示的时候,无法提供真实的场景数据。随着嵌入式系统硬件功能的不断提高,如何开发一款支持3D建模的嵌入式GUI已成为一个迫切的话题。 本课题来源于实习工作中的“某星载仪表控制计算机”项目,该计算机采用VxWorks作为其操作系统,要求设计出人性化的人机界面,可以实时显示系统的相关参数数据、图形信息等,并提供对3D模块的支持,能够进行3D图形的绘制和显示。本文经过详细分析和设计,实现了将OpenGL/Mesa3D图形库移植到VxWorks系统,并结合VxWorks内核及其多媒体库WindML的相关接口,开发了以消息驱动为核心、具有基本窗口管理功能和仿Windows控件效果、支持中文界面和3D画面绘制显示的GUI系统。从工程应用和测试的效果来看,该GUI系统基本实现了预期功能。 关键词:嵌入式系统VxWorks图形用户界面OpenGL/Mesa WindML

目录I 目录 第一章绪论 (1) 1.1 背景知识介绍 (1) 1.1.1 嵌入式实时系统 (1) 1.1.2 图形用户界面概述 (2) 1.2 国内外研究现状 (4) 1.2.1 嵌入式GUI的现状 (4) 1.2.2 基于VxWorks的图形解决方案 (5) 1.2.3 嵌入式GUI的发展趋势 (7) 1.3 课题来源和意义 (7) 1.4 论文结构 (8) 第二章VxWorks操作系统及媒体库WindML (11) 2.1 VxWorks深入研究 (11) 2.1.1 VxWorks概述[10] (11) 2.1.2 VxWorks实时微内核[11][12] (12) 2.2 VxWorks集成开发环境Tornado (15) 2.2.1 Tornado介绍[13][14] (15) 2.2.2 交叉编译环境 (15) 2.2.3 Tornado的组成 (16) 2.3 WindML媒体库 (18) 2.3.1 WindML概述[16] (18) 2.3.2 WindML事件服务机制 (19) 2.3.3 WindML2D图形库分析 (19) 2.3.4 WindML程序开发流程 (21) 2.4 本章小结 (22) 第三章OpenGL/Mesa及其在VxWorks下的移植 (23) 3.1 OpenGL/Mesa (23) 3.1.1 OpenGL开发库 (23) 3.1.2 OpenGL开发库结构 (24) 3.1.3 Mesa库 (28) 3.2 OpenGL/Mesa库的移植 (29) 3.2.1 工作概述 (29)

vxworks培训教程(10)

Wind River Systems Tornado Training Workshop ? Copyright Wind River Systems 10-1Chapter 10 Exceptions, Interrupts,and Timers Exception Handling and Signals Interrupt Service Routines System Clock, Auxiliary Clock, Watchdog Timers

Wind River Systems Tornado Training Workshop ? Copyright Wind River Systems 10-2Exceptions, Interrupts, and Timers 10.1Exception Handling and Signals Interrupt Service Routines Timers Exception handling Using signals Installing user-de?ned signal handler

Wind River Systems Tornado Training Workshop ? Copyright Wind River Systems 10-3Exception Handling Overview ?An exception is an unplanned event generated by the CPU. Examples include: trap or breakpoint instruction, divide by zero, ?oating point or integer over?ow, illegal instruction, or address error. ?An exception will generate an “internal” interrupt. ?VxWorks installs exception handlers at system startup.These handlers will run on an exception and will try to invoke a user-de?ned exception handler. ? A VxWorks exception handler communicates with a user tasks by sending a signal. The user-installed handler will then run. ?Exceptions vary across CPU architectures. The help page for excLib contains information about generic exception handling, while the page for excArchLib discusses architecture-speci?c routines.

相关文档
最新文档