文档库 最新最全的文档下载
当前位置:文档库 › VxWorks 5.5 学习笔记

VxWorks 5.5 学习笔记

VxWorks 5.5 学习笔记
VxWorks 5.5 学习笔记

VxWorks 5.5开发指南学习笔记

第一章VxWorks概述

1.绪论

VxWorks是一种嵌入式的实时操作系统,所谓嵌入式操作系统就是我们自己设计开发一块可以实现某种功能的板子,一般的功能板上都有一个cpu,嵌入式实施操作系统就是运行于这个cpu之上,使我们能够在板子上作相应得软件开发实现板子功能。

VxWorks支持32位的CPU,包括Intel公司的x86、Motorola公司的68k 和PowerPC、MIPS、ARM、Intel公司的i960、Hitachi公司的SH。我们设计的这块板子通常没有软件的自开发能力,所以我们需要一台通用机来辅助开发,这台通用机可以是PC或工作站,我们称辅助我们软件开发的通用机为宿主机(Host),用户自己开发的板子为目标机(Target)。宿主机上要有一个集成开发环境(IDE)来辅助我们的软件开发,这套集成开发环境可以运行在Windows95/NT 或 UNIX下,包括交叉编译器(Cross Compiler)和交叉调试器(Cross Debugger),所谓交叉编译器就是在宿主机上编译生成可以在目标机上运行的代码IMAGE,交叉调试器就是通过宿主机和目标机之间的某种耦合方式实现前后台调试。我们称宿主机上的这套集成开发环境为Tornado,编译生成的目标机上的可执行代码IMAGE为VxWorks。在系统安装的时候,集成调试环境和VxWorks的原材料(一些obj文件)都安装到宿主机上,编译生成的在目标机上运行的IMAGE内包含操作系统。下面我们分别来介绍这两部分内容。

1.1IMAGE of VxWorks

1.IMAGE的结构

IMAGE可以分为三个层次四个部分,最底层是BSP,中间层是VxWorks其中包含WindKernel 和components两部分,最高层是应用实现层app。

1)BSP

BSP是系统用来管理外设的部分,由两部分组成:初始化、驱动程序。所谓初始化是指从系统上电复位开始直到wind kernel和usrRoot根任务启动的这段时间系统的执行过程。驱动程序就是一些包含I/O操作的子函数,是对一些调试或加载应用程序所需要的外设的驱动程序。初始化可分为3个过程:CPU Init、Board Init、System Init。CPU Init初始化CPU的内部寄存器。Board Init初始化智能I/O的寄存器,将device打通。System Init 为系统的运行准备数据结构,进行数据初始化。驱动程序的特点是不能自动执行,只能被动调用。调用可以有三种方式:任务直接调用、任务调用System Call、任务调用服务。具体如下图1-1所示。

图1-1驱动程序调用关系图

所以驱动程序可以抽象为三个层次:常规操作、与VxWorks 的接口、与Component 的接口。常规操作是设备的固有操作逻辑,有两层含义:体现在I/O 编址的含义上微观上表现为CPU 操作device 的寄存器、宏观上表现为具体操作的含义,如图1-2所示。驱动程序与VxWorks 的接口、驱动程序与Component 的接口有三层含义:I/O 管理;操作类型规整;参数规整。

驱动程序与VxWorks 的接口使Driver 具有更好的层次性,驱动程序与Component 的接口使Driver 具有更好的抽象性。

2.IMAGE 的执行过程

在初始化过程中,是由底层到高层的一个执行过程,而运行是由高层到底层的一个执行过程。

3.IMAGE 在Memory 中的位置

VxWorks 对内存的使用采用的是Flat Mode :静态分配的IMAGE 占用空间(.code 、.data 、.bss )、系统的动态空间(wind kernel 创建的REGION#0)、用户的动态空间。如下图1-3是内存区域划分图。IMAGE 可以被动态或静态链接,VxWorks 在开发阶段可

动态地下载目标文件,并与操作系统及其它目标文件动态链接。这与DOS的*.EXE文件相类似,其地址在链接以后是浮动的,只在装载时才与绝对物理地址相对应;VxWorks成品阶段是采用静态链接的。 Tornado是一个用于软件交叉开发的集成开发环境。它提供了一种高效的开发实施嵌入式系统的高效方法,同时与目标机的相关很少。有如下的组成部分:

●VxWorks,高效能的操作系统。

●应用开发工具

●集成开发环境

第二章Vxworks操作系统

2.1内存管理

实时嵌入式操作系统得内存管理与通用操作系统有很大不同,它有一些特殊的要求:

●快速性:

●可靠性:

●高效性

2.1.1嵌入式系统动态内存分配

1.基本概念

堆:嵌入式系统中,将代码、数据和系统信息等所占的内存之外的部分用于内存的动态分配这个区域称为堆。内存管理只要是管理对内存的分配与回收。

内存单元:堆一般被分为一些固定大小的单元,单元大小为2的乘幂(以B为单位),动态分配程序malloc()实际分配的内存是内存单元的整数倍。假设内存单元是4B,请求分配101B,则实际分配了104B,多余的3B成为内部内存碎片。

内存碎片:除过内部内存碎片,还有一类外部碎片:当堆中空闲内存快都小于请求分配的内存大小时称外部碎片。消除内存碎片的方法是“紧缩”,即通过移动空闲内存快只间的内容是空闲没内存快相邻接合并为较大的内存块。

内存对齐:内存对齐指的是,在特定体系结构中强加在数据项的内存地址上的限制。很多处理器不能在任意地址访问多字节的整数项(如整形)

内存分配表:良好的内存分配表是获得高效内存管理的关键,它决定了下列内存管理是否能够快速有效得实现。1。分配内存时确定是否有足够大的空闲块;释放内存时更新内存管理信息;释放内存时确定当前的内存块是否能与相邻的空闲块合并

2.1.2Vxworks动态内存管理

在Vxworks5.x中,有两个内存池用于动态内存分配:系统内存池和Target Server 内存池。系统内存池面向目标板内存的使用,其管理在目标板上进行。Target Server 内存池在宿主机上进行。

1.管理内存区的数据结构mempart

系统初始化时创建系统内存分区,,管理整个系统内存池中的内存。用户也可以通过memPartlib库中的函数实现自己的分区。分区中所有的空闲内存块通过memPartlib.h中的mempart数据结构在系统初始化时形成一个双向的链表。

2.动态内存分配

在内存分配时,每个块前面会有一个头用于内存的回收、合并、分配。实际占用的内存大小是分配请求的内存大小与头之和。分配函数返回的地址是所获可用内存的起始地址。Malloc()函数会自动边界对齐,有可能造成内存碎片。

3.动态内存的释放

内存释放时,根据块头的信息判断相邻的内存块是否空闲,如果是将进行合并,并修改空闲块长。如果不是将释放的内存插入空闲链表,紧接块头的8个字节用于存放指针用于指向其他的空闲块。

4.Vxworks5.x动态内存管理的局限性

由于系统内存分区属于一种临界资源,由信号量保护,使用malloc()会导致当前程序阻塞,因此不能在ISR中使用。会导致大量的内存碎片,系统会不稳定。

2.1.2Vxworks内存布局

Vxworks5.x的内存按照装载的内容不同可以分为5个区:低端内存区、Vxworks区、Target Server内存池、系统内存池和用户保留区。

●低端内存区

在低端内存区内通常包含了中断向量表、bootline(系统引导配置)和exception message(异常信息)等信息。

●Vxworks区

●系统内存池

2.1.3实现自己的内存分配管理

1.借用消息队列

1)缓冲池的初始化

msgQCreat()创建一个专用的消息队列,其消息长度为4B,正好等于一个32b的地址指针,消息队列的最大消息数即缓存池可以缓存的区个数。然后动态申请N个等长的缓存区缓存区长度L根据系统的需求而定。将N个缓存区的地址发送到消息队列中。这样就借助于消息队列的管理机制实现了自己的内存分配管理。

2)内存分配

使用msgQRecieve()收消息获得缓存区地址。

3)释放内存:msgQSend(),将内存地址归还到消息队列即可。

2.2实时多任务系统

2.2.1 任务基础

任务是代码运行的一个映象,从系统的角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、I/O设备及内存空间等系统资源,并独立于其它任务,与它们一起并发运行(宏观上如此)。多任务设计能随时打断正在执行着的任务,对内部和外部发生的事件在确定的时间里作出响应。VxWorks实时内核Wind提供了基本的多任务环境。从表面上来看,多个任务正在同时执行,实际上,系统内核根据某一调度策略让它们交替运行。系统调度器使用任务控制块的数据结构(简记为TCB)来管理任务调度功能。任务控制块用来描述一个任务,每一任务都与一个TCB关联。TCB包括了任务的当前状态、优先级、要等待的事件或资源、任务程序码的起始地址、初始堆栈指针等信息。调度器在任务最初被激活时以及从休眠态重新被激活时,要用到这些信息。TCB的主要内容:

任务的程序计数器

处理器的通用计数器,浮点寄存器

局部变量和使用函数调用是的堆栈

标准输入输出和错误输出时的重定向

一个延时定时器

一个时间片定时器

内核控制结构

信号处理程序

调试和性能监视,如断点和列表。

2.2.2任务的调度方式

支持256个优先级(0-255,0最高,255最小)。一般来说,一个任务的优先级在其生存期内是固定的,但也可以根据需要,调用函数taskPrioritySet()动态改变任务的优先级。

支持两种任务调度算法:基于优先级的抢占式和时间片轮转

●基于优先级的抢占式调度算法

一旦一个高优先级的任务进入ready状态,将抢占当前运行任务的CPU资源,进入运行状态。如果某个任务在执行过程中不愿意被打断可以屏蔽抢占tasklock()来关闭抢占,但不能关闭中断,可以暂时关闭中断。

●同一优先级的时间片轮转算法

2.2.3任务编程

1.VxWorks内核的任务管理提供了动态创建、删除和控制任务的功能,具体实现通过如下一些系统调用:

taskInit()创建的任务是挂起的,必须随后调用taskActivate() 来激活这个任务,而taskSpawn() 可以同时完成这两部工作。taskInit()须额外给定任务的TCBzhizhen 和堆栈指针,并且调用成功后返回OK而不是任务ID。

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

taskInit() 初始化一个新任务

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

任务名和ID管理函数

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

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

taskIdSelf() 得到调用该函数的任务ID

任务信息函数

taskPriorityGet() 获得任务的优先级

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

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

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

任务删除:任务可以自行删除,可以使用return语句退出任务或调用exit()函数;删除其他任务可调用taskDelete()函数。在删除任务是将自动释放其在创建时申请的系统资源,但不会自动释放堆内存。在删除任务之前应该显式释放堆内存。

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

taskSafe() 保护被调用任务

taskUnSafe() 解除被调用任务保护

任务控制函数

taskSuspend() 悬置一个任务

taskResume() 恢复一个任务

taskRestart() 重启一个任务

taskDelay() 延迟一个任务

与任务相关的其他函数:提供钩子函数允许当任务创建、任务被删除或发生上下文切换时调用附加函数。

2.可重入代码和任务变量

如果一个子程序可以被多个任务同时调用而不发生冲突,这个程序就是可重入的。而共

享代码必须是可重入的。大部分的Vxworks使用下面的重入机制:

1)局部变量

2)由信号量保护的全局变量或静态变量

3)任务变量:当多个任务在调用一些程序时,对全局变量和静态变量有不同的要求。所以操作系统提供了任务变量机制(四个字节)允许任务的上下文中申明相同的变量作为任务变量。每个任务可以把这个变量的内存地址作为自己的私有变量。taskVarlib 库中提供了对任务变量的操作。任务变量在任务切换时要保存和切换,所以应注意任务变量的大小。

3.Task错误状态与errono

Vxworks中利用全局变量errono来记录当前发生错误的代码。

通常情况下,Vxworks不会主动去清除errono的值,所以他的职永远是记录最后发生的错误编码。在调用其他子程序时发生了错误,记录的就是子程序的错误代码。提供了printErrno()函数来显示错误代码对应含义的字符串。错误代码有固定的定义格式。

2.2.4系统任务

主要用于任务的控制和调试

1)根任务tUsrRoot

内核执行的第一个任务。入口函数是installDir/target/config/all/usrConfig.c中的usrRoot().该任务完成初始化功能,并负责创建其他必要的系统任务,其初始化的内容包括:I/O系统、设备驱动程序、配置网络等必要配置。同时根据系统的符号表来初始化相应工具或者资源,并根据需要创建Shell task、日志任务、异常处理任务、网络任务等。正常情况下,初始化完成后tUsrRoot任务被终止。可以在根任务中添加特殊的初始化代码。

2)日志任务tLogTask

输出系统日志信息的任务。优先级为0。在其他任务中,可以使用LogMsg()象tLogTask 发送日志消息。中断程序中可以使用LogMsg(),但不能使用printf()。

3)异常处理任务:tExcTask

提供了异常处理包,完成中断级不能完成的功能。优先级为0,人物不能被挂起、删除或被改变优先级。

4)网络任务

5)目标代理任务

2.3任务间通信

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

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

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

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

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

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

2.3.1信号量

实现任务互斥、同步操作的主要机制。VxWorks5.x针对不同的应用提供了3种信号量:

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

具有两种状态的标志,信号量满时为可用状态;空时为不可用状态。对二进制信号量的操作有

SEM_ID semBCreat(int options , SEM_B_STATE initialstae) /*创建一个二进制信号量*/

STATUS semDelete(SEM_ID semId) //删除一个信号量

STATUS semTake(SEM_ID semId) //获取一个信号量

STATUS semGive(SEM_ID semId) //释放一个信号量

STATUS semFlush(SEM_ID semId) //唤醒阻塞在一个信号量上的所有任务

使用二进制信号量实现任务同步与互斥的关键是:创建二进制信号量时的初始状态;任务是否成对调用获取、释放操作函数以及调用顺序。

●互斥信号量主要用于优先级继承、安全删除和递归访问;

是一种特殊的二进制信号量,有两个状态。但是在初始化时被固定为满状态。解决优先级倒置、删除安全以及递归访问的处理。

互斥信号量采用了优先级继承算法,很好的解决了优先级倒置的问题;同时互斥信号量可以保证占有它的任务不被删除,所以保证了任务的删除安全。互斥信号量支持占有它的任务反复进行信号量的获取与释放而不会引起该任务的阻塞。

●计数信号量:类似于二进制信号量,可记录信号量释放的次数,监视同一资源上的

多个实例。

VxWorks5.x提供了一套统一的信号量控制函数接口,在semPxLib库中实现。

2.3.2共享内存

VxWorks5.x中的任务运行于一个线性地址空间,个个任务可以通过共享内存实现信息共享和信息传递。共享内存的形式可以是全局变量,数组,链表,环形缓冲以及指针。任务之间如果通过共享内存来共享和传递信息,需要额外的保护措施,如信号量、中断上锁、任务抢占上锁等,否则会产生访问共享内存这段代码的可重入性问题。VxWorks5.x提供了两类共享内存机制:双向链表;环形缓冲。

2.3.3消息队列

提供了一种任务间响应式信息交互方式。多个任务可以操作同一个消息队列,向其发送或者接受消息。对于ISR来说不必等待直接向消息队列发送消息或者从其接收消息。如果多个任务之间要进行全双工通信最好为每一个任务都创建一个消息队列。消息队列中的消息排队方式可以根据FIFO或者优先级设定的。

2.3.4管道

管道机制与消息队列机制比较相似,它创建时也会分配一个消息队列。不同的是,管道作为一种虚拟I/O设备,可以由一套标准的I/O接口来驱动、管理。

创建管道时需要给它制定一个名字,同消息队列一样需要设置管道能容纳的消息数和消息的最大长度。

2.3.5信号

信号是一种由事件触发的软中断,它可以异步地改变信号接收任务的执行流程,使其转而执行对应得信号处理程序。任务或者ISR都可以向某个特定任务发出一个信号,信号接收任务马上进入ready状态。当该接收任务被调度为可以再次执行时,他将转而执行对应得信号处理程序。信号属于任务的上下文,对于信号的设置只对调用任务有效,不会影响其他的任务。信号机制主要应用于错误处理、异常处理。

2.3.6事件

事件机制可以用于任务之间、任务与ISR之间、甚至任务与VxWorks5.x对象之间进行通信。一个任务如果需要从一个资源接收事件,那么它必须在这个资源上进行注册,当资源可用的时候,它通过向已注册任务发送事件来通知任务。在一个资源上只能注册一个任务,一个任务可以注册多个资源。

2.4中断、异常和定时机制

2.4.1中断和异常的基础知识

1.异常:根据触发异常的源可以将异常分为内部异常与异步异常。内部异常:由于内部事件引发的异常,这个内部事件的出现与当前执行的指令密切相关,例如除零。异

步异常:由于外部事件触发,与当前的操作无关。一般来说,这些外部事件都与

某个特定的硬件信号有关,如系统异常复位。

2.中断:中段可以说是异步异常的一种特殊情况,CPU接收来自外设的中断信号,便立即停止当前执行的指令,保存现场,转而执行指定的ISR,在ISR执行结束后恢复

现场,继续被打断的工作。

2.4.2 VxWorks中断服务

1.保存现场

保存被中断任务的现场以便执行完ISR后返回到原来任务,通常有两种方法:集中式保存和分散式保存。集中式在内存中专门设置一块中断现场保存堆栈,所有的中断现场信息都保存在这里;分散式,在每个任务的控制块中设置一个堆栈区。只要处理器的结构允许,VxWorks将采用集中式存储

2.中断管理

采用可编程中断控制器管理多个不同优先级的中断源。VxWorks利用一张中断向量进行描述,表的结构实际为一个结构数组,每项可记录两个内容:用户中断服务程序入口和一个参数指针。系统中的每个中断源于先分配一个中断号,每个中断号对应一个中断向量,这个向量实际是中断在中断向量表中的序号或偏移。

3.中断服务程序(ISR)的特殊限制

●ISR不能调用可引起阻塞得函数

●ISR不能调用那些可以使用浮点协议处理器的函数,因为在由intconnect()创建的驱

动代码中不保存和恢复浮点寄存器

●ISR中可以调用SemGive()来释放一个信号量

4.中断服务程序设置

VxWorks提供一个intconnect()函数将用户给定的中断处理函数与给定的中断相关连,存放于中断向量表的对应表相中,函数原型如下:

intconnect( VOIDFUNCPTR *vector,VOIDFUNCPTR rountin,int parameter) 在中断服务程序和用户任务中可以调用中断屏蔽函数以保证受保护的代码执行过程中不受中断的干扰。但是禁止中断并不会同时禁止任务调度,如果在某个任务中禁止中断之后,由于任务调度而产生上下文切换,那么中断就会被解禁。所以,在禁止中断之前应先禁止任务调度。在受保护的代码中不应该进行系统调用。

2.4.3时钟和定时器

在嵌入式系统中,系统任务或用户任务往往需要在特定的时延之后去执行一个特定的动作。定时器是RTOS中非常重要的组成部分。

1.系统时钟:

VxWorks系统时钟的周期称为tick,大部分与计时相关的函数都是以tick为单位的。Tick 的值可以配置并动态改变,系统时钟一般在BSP中利用SYS-CLOCK- RATE完成其初始配置。SYS-CLOCK- RATE定义的是tick 的频率,即每秒tick的个数。系统默认的值为60,即tick的时长为1/60秒。

只要在工程中定义了INCLUDE—SYSCLK—INT,系统就会自动完成系统时钟的初始化,也就是在usrconfig.c中的usrRoot()函数种,首先调用SysClkConnect()来完成系统时钟ISR的连接,然后再通过调用SysClkRateSet()来设置系统时钟每秒中断的次数。最后调用SysClkEnable()是能对系统时钟的中断响应。

2.系统时钟使用和配置的工程中应注意:

1.Tick频率不宜过高,否则会因为频率处理tick引起的中断系统操作占用过多的CPU 时间。

2.一般来说,无需特殊要求没必要替换ISR。

3.看门狗定时器

在系统时钟的基础上,VxWorks提供了一种看门狗定时器机制,允许用户编写的函数与一个特定的时间延迟相联系。任何一个任务都可以创建看门狗定时器并指定超时后执行的例程。这个例程在时钟中断处理上下文中执行,因此也有优先级。

第3章Tornado开发环境

3.1 Tornado概述

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工具和目标机系统的组件。一般来说,目标代理程序往往是不可见的。

3.2如何构建一个自己的应用工程

为了能获得Tornado工程的全部功能,需要做如下工作:

●获得或创建一个有实际功能的BSP

●用该BSP创建一个工程

●把应用程序的代码加入到该工程中

●创建新的启动映像

3.2.1获得实际BSP

1.采用winderiver或第3方支持板级包BSP

2.针对特定硬件使用特定BSP,可以自己编写需要的BSP。

3.使用仿真器BSP

3.2.2创建基于BSP的可启动工程

通过工程来实现自己的应用程序的启动,选择合适的BSP添加到自己的工程中。

3.3.3开发和添加你的应用程序源代码

通过NEW一个新的文件,并将文件加入工程;然后编辑Vxworks初始化文件usrAppInit.c,在usrAppInit()中添加应用主程序的入口函数名称。为程序的初始化和启动程序添加调用。(有问题)

3.3.4下载你的应用程序到目标板

需要配置Target Server属性以便使主机能够与目标板的Target Agent通信。主机与目标板通信有两种方式:串口通信和网口通信。每种通信方式都要在自己的工程中来选择,并且正确配置每种通信端口。在物理连接正确以及通信端口配置完成后,我们可以将编译后的目标程序下载到目标板并能够通过主机进行交互调试。

以太网及TCPIP通俗理解

1 以太网------EtherNet: ---------------------------参考图解 以太网最早由Xerox(施乐)公司创建,于1980年DEC、lntel和Xerox三家公司联合开发成为一个标准。以太网是应用最为广泛的局域网,包括标准的以太网(10Mbit/s)、快速以太网(100Mbit/s)和10G(10Gbit/s)以太网,采用的是CSMA/CD访问控制法,它们都符合IEEE802.3。 IEEE 802.3标准 IEEE802.3规定了包括物理层的连线、电信号和介质访问层协议的内容。以太网是当前应用最普遍的局域网技术,它很大程度上取代了其他局域网标准。如令牌环、FDDI和ARCNET。历经100M以太网在上世纪末的飞速发展后,目前千兆以太网甚至10G以太网正在国际组织和领导企业的推动下不断拓展应用范围。 常见的802.3应用为: 10M: 10base-T (铜线UTP模式) 100M: 100base-TX (铜线UTP模式) 100base-FX(光纤线) 1000M: 1000base-T(铜线UTP模式) 2 UIP协议: uIP由瑞典计算机科学学院(网络嵌入式系统小组)的Adam Dunkels 开发。其源代码由C 语言编写,并完全公开,uIP 的最新版本是1.0 版本,本指南移植和使用的版本正是此版本。uIP协议栈去掉了完整的TCP/IP中不常用的功能,简化了通讯流程,但保留了网络通信 必须使用的协议,设计重点放在了IP/TCP/ICMP/UDP/ARP这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。 由于uIP协议栈专门为嵌入式系统而设计,因此还具有如下优越功能: 1)代码非常少,其协议栈代码不到6K,很方便阅读和移植。 2)占用的内存数非常少,RAM 占用仅几百字节。 3)其硬件处理层、协议栈层和应用层共用一个全局缓存区,不存在数据的拷贝,且发送和接收都是依靠这个缓存区,极大的节省空间和时间。 4)支持多个主动连接和被动连接并发。 5)其源代码中提供一套实例程序:web 服务器,web 客户端,电子邮件发送程序(SMTP 客户端),Telnet服务器,DNS主机名解析程序等。通用性强,移植起来基本不用修改就可以通过。 6)对数据的处理采用轮循机制,不需要操作系统的支持。 由于uIP对资源的需求少和移植容易,大部分的8位微控制器都使用过uIP 协议栈,而且很多的著名的嵌入式产品和项目(如卫星,Cisco 路由器,无线传感器网络)中都在使用uIP 协议栈。 3 TCP/IP协议: TCP/IP是(Transmission Control Protocol/Internet Protocol)的简写,中译名为传输控制协

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

虚拟演播室方案

虚拟演播室是视频技术于计算机技术结合的产物,把计算机图形图像处理技术与传统的色键技术集合起来形成的。是一种新颖的独特的电视节目制作技术。 虚拟演播室技术原理:虚拟演播室技术与色键技术十分相像,他是由前景主持人为主的画面和背景画面,采用色键的方法构成一个整体,产生人物置身于背景中的组合画面。 虚拟演播室工作原理 虚拟演播室装修的总体要求: 建立一个功能完善的虚拟演播室,需要做到如下基本要求: 1、要求演播室的拾音空间首先具有较好的语言清晰度、可懂度,其次是要有良好的声音丰满度, 2、要求演播室内各处要有合适的响度和均匀度,具有相应的满足拾音要求的混响频率特性。 3、抑制影响听、拾音音质的声缺陷,防止出现声聚焦、驻波、颤动回声、低频嗡声等。 4、演播室内墙面的声学装饰考虑在装饰大方美观、造型新颖的基础上对于高中低各频段的声学处理方式,特别是低频段的声学处理方式方法。 演播室的建声指标:混响时间≤0.6S±0.05S;噪声评价曲线NR-30---NR-35。 设计的隔声门隔声量大于35dB并具有好的密封性。 5、演播室声学建声装饰所选用的材料符合国家相应的强制消防要求,要求采用达到B1、B2级标准的材料。 6、演播室声学建声装饰所选用的材料符合国家相应的强制环保要求,特别是要求甲醛的释放量为<0。1mg/m3。墙面装饰层内禁止使用不安全和危害性较高的吸声材料。 7、装饰踢脚线兼做视音频线槽并做屏蔽处理。 8、演播室配置录制指示灯和紧急逃生指示灯。 9、装饰层内的综合布线按要求做穿管处理。 10、演播室现有的位置南边部分为玻璃幕墙,不利于演播室的隔声,所以要对原幕墙部分进行隔断,制作隔声封闭处理,在保证整体装饰的美观性和隔声性的同时,还应保证演播室正常的通风换气。 11、导控室地面用防静电地板,装修过程中做好设备布线(强电,弱电),做好防雷,接地各类设施的设计施工。 12、装修预留好空调位置,并配合本台做好空调,配电等设备的安装施工。

嵌入式系统的比较

嵌入式系统的比较 简单介绍ecos, uc/OS,uClinux,RTlinux,Linux 到目前为止接触过QNX、RTLinux、uC/OS-II、Nucleus Plus、VRTX、VxWorks、eCos,总结下来有以下特点: Ecos:多任务抢占机制,可配置(特色),可配置文件系统 uc/OS:代码很少,多任务抢占机制,需自己扩展文件系统 uClinux:非抢占式,没有MMU管理存储器,有文件系统等许多功能 RTlinux:通过在L inux内核与硬件中断之间增加一个精巧的可抢先的实时内核,把标准的Linux内核作为实时内核的一个进程与用户进程一起调度,标准的L inux内核的优先级最低,可以被实时进程抢断。正常的Linux进程仍可以在Linux内核上运行。 Linux:有MMU管理存储器。 1:QNX 的可靠性很好,协议栈、各种外设驱动稳定,只是运行所需资源有些多,需要MMU。如果需要高可靠性应用,QNX可能是最好的选择。 2:RTLinux的实时性与其它RTOS相比有些差。但是,因为好多Linux资源可以利用,是RTLinux的优点。但是运行所需资源比QNX还多,也是需要MMU。可以选用开源的RTLinux 或内容新的商用RTLinux。 3:uC/OS-II比较小巧,移植容易,网上资源很多,核心可以做得很小。但不是免费的,并且驱动需要自己编写,协议栈、图形驱动都要另外加。 4:Nucleus Plus比uC/OS-II庞大,另外提供了文件系统、协议栈、图形界面等许多东西。当然也是分开卖的,不是免费的东西。使用起来比较容易上手。 5:VRTX 是一款比较早的RTOS,现在使用的人已经很少。运行还是比较可靠。配套的文件、协议栈等模块很少。 6:VxWorks是RTOS中的大牛,国内外用的人很多,开发工具功能强大,使用方便,但是价格昂贵。也有基于MMU的高可靠性的产品。所需资源比QNX小,比uC/OS、eCos 多。对于一些私企或者好似小公司来说,可用性值得商榷。 7:eCos是开源的RTOS。针对不同的CPU已经做了许多现成的移植。代码尺寸比Nucleus 的略大。如果不用USB host等,并且不想花费太多的金钱,应该是不错的选择。 μC/OS和uClinux的比较 引言 随着现代计算机技术的飞速发展和互联网技术的广泛应用,从PC时代过渡到了以个人数字助理、手持个人电脑和信息家电为代表的3C(计算机、通信、消费电子)一体的后PC 时代。后PC时代里,嵌入式系统扮演了越来越重要的角色,被广泛应用于信息电器、移动设备、网络设备和工控仿真等领域。 嵌入式系统是以嵌入式计算机为核心,面向用户、面向产品、面向应用,软硬件可裁减的,适用于对功能、可靠性、体积、成本、功耗等综合性能有严格要求的计算机系统。随着

2012.11.6战略智慧笔记 陈果

N 《战略智慧》 --陈果 如何建立战略思维? 你现在最需要解决的是什么问题? 1、未来老百姓的健康生活方式? 2、房产中介的人力资源 3、企业做到一定程度,如何把规模缩小? 4、如何使用90后? 5、外贸出口利润越来越低,公司成本越来越大,如何突破?需要经营的: 1、原始积累(财富) 2、内部团队(精神共同体) 团队是利润,是巨大财富 3、忠实客户(了解客户需求) 企业一定要战略升级,为谁请命? 老板需要经营“空手套白狼”的本领。 企业做大的因素: 1、政府的力量 2、资金对你的加持 3、消费者对你的关注 4、优秀的人才向你靠齐

利润 (如:外婆家) 如:宋城集团,通过做“宋城千古情”项目,获得政府的支持 大老板:看似很傻,实际很厉害,用一年的时间赚10年的钱 如:王志纲老师用三十年的时间做中国最好的“战略思想智库”,一转身获得无数的财富 经营企业就是经营人,经营企业就是经营价值。 企业、产品都是媒介,关键是你想到哪里去。 战略思维思考的问题是:我要到哪里去? 老板必须为战略负责! 战略是唯一不能让职业经理人去做的事情。 没有战略就没有人追随,如果成功也是偶然的。 如:王建林(万达集团),当初做商业地产,所有人都反对如:吴亚军,(南湖地产,温州人)当初做战略十几人的核心团队全部走掉,但今天成为中国女首富。 老板不是所有事情都需要你来做,而是那些事情是你必须要做的。

如:华为,力排众议做最适合当下的战略 这是一场越来越激烈的商战,不要妄想今天的困难明天就过去了,要有打战的思维 如:微软 在战争当中总结经验,这是老板需要修炼的 战略智慧金三角: 找定位 定打法 开模具 战略之道的根本是定位。 打法和模具的关系: 模具是企业超级杀伤力的武器 如:工作室:帮企业找魂,帮企业开模具书院班:帮企业开模具,寻找战略突破打法:合适的发射装置 打法与模具的关系是炮弹和炮筒的关系 孵化人的板块: 从老板到老师的智慧

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

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

虚拟演播室系统方案

VS-VSCENE 虚拟演播室系统方案建议书北京华视恒通系统技术有限公司

北京华视恒通系统技术有限公司 目栩 公司简介................................................................................................................................................................... 3.. . 惊)前悅........................................................................................................................................................................................ 4.. . . 二)系统方案设计.................................................................................................................................................. 4.. . 1、设计原则........................................................................................................................................... 4.. . 2、设计方案........................................................................................................................................... 5.. . 3、系统结构原枞图............................................................................................................................. 7.. . 4、系统功能特点 ................................................................................................................................ 1..0. 5、TOPACK-C抠K 像卡................................................................................................................ 1..2 6、TOPACK-CG/AUD旓IO幕混愃卡 ................................................................................ 1..3 三)软件系统功能................................................................................................................................................. 1..5. 1、系统参数设敢 ................................................................................................................................ 1..5. 2、抠像参数设敢 ................................................................................................................................ 1..7. 3、场景编排.......................................................................................................................................... 1..8. 4、实时控敥.......................................................................................................................................... 2..0. 5、远程旓幕客户端............................................................................................................................ 2..2. 四)设备悪本及效果图........................................................................................................................................ 2..3. 五)系统配敢........................................................................................................................................................................................ 2..4 . 售后服务措施及承诺 ............................................................................................................................................. 2..6.

vxworks653编程手册

一.V xWorks653运行时系统 1.1. 运行时层 一个vxworks653模块由下面四层组成: ■core OS—必需 ■partition—至少需要一个(vThreads 或COIL-based),每个都在一个分区的操作系统之中■APEX shared library—ARINC 653 应用所需 ■POSIX shared library—POSIX 应用所需 1.1.1.Core OS层 核心操作系统提供服务给分区。 缺省的,核心操作系统使用ARINC653规范中的时间抢占的调度(TPS)来调度分区。Vxworks653的核心操作系统还可以采用APPS调度策略在TPS调度的空闲时间内调度优先级

抢占调度(PPS)使能的分区。 核心操作系统提供给每个VThreads分区操作系统的服务包括: ●分区系统资源 ●调度分区 ●代表分区的操作系统执行trap异常 ●定义和强制分区边界 ●装载分区 ●使用端口和通道在分区间传递消息 ●处理I/O ●代表应用完成系统调用 ●支持分区的调试 ●监控分区和系统的健康 1.1. 2.vThreads 层 vThreads分区操作系统在核心操作系统分配给该分区的时间内调度vThreads中的线程。vThreads不直接与设备交互,而是通过核心操作系统的系统调用。 1.1.3.APEX 层 构建在vThreads之上,遵循ARINC653规范,并且提供相应功能和API。 1.1.4.POSIX层 构建在vThreads之上,遵循用于实时扩展的POSIX标准(1003.1b)。 1.2. 装载和启动 当目标板加电时,按照下面的步骤进行装载和启动 ●初始的启动码装载核心操作系统,分区操作系统,共享库,以及应用 ●核心操作系统初始化自身,启动它自己的子系统 ●核心操作系统创建分区 ●核心操作系统启动分区调度器,并且让应用初始化自身 核心操作系统可以在初始化完成之后下载在线装载的应用程序到分区。应用可以在分区运行之时装载到分区。

常见的嵌入式操作系统

常见的嵌入式操作系统 分类:嵌入式操作系统2012-12-11 10:06 459人阅读评论(1) 收藏举报嵌入式操作系统 嵌入式操作系统与通用的操作相比较主要特点在于: 1.小内核,稳定可靠。 2.需要可装卸、可裁剪,以便能灵活应对各种不同的硬件平台。 3.面向应用,强实时性,可用于各种设备控制当中。 国际上常见的嵌入式操作系统大约有40种左,右如:Linux、uClinux、WinCE、PalmOS、Symbian、eCos、uCOS-II、VxWorks、pSOS、Nucleus、ThreadX 、Rtems 、QNX、INTEGRITY、OSE、C Executive 。他们基本可以分为两类,一类是面向控制、通信等领域的实时操作系统,如windriver公司的vxworks、isi的psos、qnx系统软件公司的qnx、ati的nucleus等;另一类是面向消费电子产品的非实时操作系统,这类产品包括个人数字助理(pda)、移动电话、机顶盒、电子书、webphone等,系统有Microsoft的WinCE,3Com 的Palm,以及Symbian和Google的Android等。 一、VxWorks VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是T ornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。VxWorks具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。 然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。 二、Windows CE Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操

uip移植笔记

本笔记适用于uIP1.0。 移植平台介绍:MSP430F149+cs8900a+IAR 1、阅读The uIP Embedded TCP/IP Stack The uIP 1.0 Reference Manual. 2、建立一个文件夹,起名myport,将uip-1.0下的uIP和lib两个文件夹拷贝过去,然后再在myport下建立app文件夹。 3、将unix子文件夹下的clock-arch.c、clock-arch.h拷贝到myport下,这个文件实现协议栈所用的时钟,由430的定时器完成,有三个函数: clock_time_t clock_time(void) { return ticks; } void clock_init(void) { 定时器的初始化工作 } __interrupt void timer_interrupt(void)/*定时器中断函数*/ { ++ticks; }。 4、将unix子文件夹下的uip-conf.h拷贝到myport下,这个文件实现协议栈所用的配置,按照需要修改之。 5、写cs8900a的驱动函数,这里采用8位、查询模式,替换tapdev.c 或slipdev.c。 6、将unix子文件夹下的main.c函数拷贝到myport下,这个是主调度流程,按照需要修改。 7、建立自己的工程,将以上文件包含。 8、调试,改错。 其中,uip的缓冲区是以字节数组的形式产生,为了保证它的起始地址是偶数,必须指定地址。 UDP的初始化如下 void myudp_init(void) { uip_ipaddr_t ipaddr;//定义IP类型变量 uip_ipaddr(ipaddr, 210,29,104,88); //远程IP为210.29.104.88 if(myudp_conn != NULL) { uip_udp_remove(myudp_conn);//如果连接已经建立,则删除之 } myudp_conn = uip_udp_new(&ipaddr, HTONS(1000));//建立到远程ipaddr,端口为1000的连接 if(myudp_conn != NULL) {

VxWorks操作系统RTP介绍和使用方法

VxWorks 操作系统RTP 介绍和使用方法 从VxWorks 6.x开始引入RTP(VxWorks real time process projec模t) 式编程,这种模式的优点是应用程序相互独立,互不影响,而且增加了内核的稳定性,缺点是由于“内核态”与“用户态”的内存拷贝,其执行效率有所降低,随着CPU 速度越来越快,这点效率的牺牲已经越来越不重要。相比较于传统的DKM (downloadable kernel module project ),RTP适合多个团队独立运作,然后汇总 联试,这种模式除了全局函数不能再shell 里直接调用外,其对应用程序几乎不 做任何约束,原有的DKM 工程代码稍作修改即可正常运行。内核变化较大,需 要添加较多的组件,内存需要较好的划分,为保持应用程序直接调用函数调试的 习惯,需要封装接口供用户使用。 现简单的介绍RTP使用方法,并给出demo 代码供参考。 1. 新建并编译工程: (1) File->new-> VxWorks real time process projec如t, 图【1】 图【1】 (2) 一路next 后,选择如图【2】所示的编译器

图【2】 (3) 选择Finish 后,工程新建完毕。 (4) 导入源文件:这里的源文件名称是fooRtpApp.c ,一种较快捷的方式是选 中新建的工程,按下F5,源文件会出现在工程中. (5) 右键选择编译,出现如图【3】,选择Continue 继续。 图【3】 编译完成后,会生成vxe 格式的可执行文件,此处为usrAppA.vxe 。 2. 下载可执行性文件 待板子启动后,使用ftp 将vxe 文件下载到板子中。步骤如下: (1)运行->cmd,打开对话窗口,如图【4】所示:

物联网操作系统的必备特性

物联网操作系统的必备特性 物联网所带来的机遇与挑战都是空前的。要抓住机遇,迎接挑战,是否拥有最佳的操作系统做为基础是极为关键的问题。 那么,物联网环境对操作系统提出了哪些不同于以往的需求?产品开发商采用怎样的操作系统,拥有哪些特征或技术,最有可能在物联网的发展中把握先机?基本上,今后的RTOS 不仅必须具备传统的实时性、确定性和可靠性,还必须提供高度互联、全面安全、远程管理等物联网环境所要求的全新能力。最近,风河公司推出了VxWorks7,对这套在嵌入式领域主导多年的RTOs(实时操作系统)进行了再次创新,其目标正是“物联网市场已达 实时操作系统 (The RTOS for thelnternet of Things) ”。实时性依然是物联网操作系统的必备特性 实时操作系统( RTOS,RealTimeOperation System)是指能够在确定的时间对内部或者外部的事件做出正确的响应。在实时操作系统中,进程执行结果的正确与否不仅与逻辑运算或数学计算结果的正确性相关,而且与得出这个正确结果的时间有关。也就

是说,在实时系统 中,如果一个进程的运算结果虽然 是正确的,但是由 于它完成的时间超出了给定的最后期限,那么这个结果就是毫无意义的。 例如汽车中使用的气囊。当报告车辆碰撞的传感器通知CPu 后,操作系统应快速地发出打开气囊的任务,并且不允许任何其他非实时处理进行干扰,晚一秒钟展开气囊比没有气囊的情况更糟糕,这就是一个典型的实时系统。 通常认为,实时操作系统要求速度非常快。但实际上,实时操作系统强调的不仅仅是速度,而是时间关系的次序和确定性。例如,一条货轮在码头等待各地的卡车运来货物之后装船运往海外,规定好了离港启航的时间。那么,如果有一辆卡车在货轮离港时间之后才把货物运到了码头,逻辑上它虽然完成了陆地货运任务,但已经没有任何意义了。货车行驶速度和气囊打开速度当然不可相提并论,但就它与货轮配合的时间顺序而言具有同样都是实时系统,都必须要满足的是时序确定性,而跟速度有多快不一定相关! 再例如,如果使用足够高性能的CPU,Windows 可以提供非常快的速度。但是,当某些后台任务正在运行时,有时候响应会变得非常漫长,以至于某一个简单的读取文件的任务也会很长时间无响应。并不是说Windows 不够

ucos操作系统在ARM上的移植

UC/OS-II 嵌入式系统在ARM 上的移植 UC/OS-II 操作系统是一款完全公开的源代码,它非常精简,整个操作系统的代码只有几千行,是专门针对于嵌入式开发而产生的一款代码。它有几个特点,分别是可移植性(Portable )、可固化(ROMable )、可裁剪(Scalable )、多任务、可确定性、任务栈、系统服务、中断管理、稳定性可靠性。 UC/OS-II 主要就是一个内核,由ANSIC 语言编写而成。负责任务管理和任务调度,没有文件系统和界面系统。它的代码是公开的,系统的实时性强、移植性好、可多任务。 UC/OS-II 作为基于优先级的抢占式多任务的实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步和内存管理的功能。它使得任务的独立性,不相互干涉,非常的准时和高效,且易于设计和扩展。 UO/OS-II 共有16个内核文件,11个与CPU 类型无关,就是说可以直接使用不需要修改。还有3个内核文件与CPU 有关系,要根据需要作出相应的改动。剩下的两个内核文件和具体的应用有关。如图所示UC/OS-II 的16个内核文件的层次。 μC/OS -II 内核文件 软件 硬件

多任务操作的核心是系统调度器,利用TCB来管理任务调度功能。它的主要功能是保存任务的当前态、优先级、等待事件、代码起始地址、初始堆栈指针等。程序的设计关键就是确定划分多任务的问题,以及任务优先级和任务通信。 优先级的意思是每个任务都是无限循环的,有运行态度、就绪态、休眠态、挂起态和中断五种状态。当有高一级优先级的任务就绪后,低优先级立即停止运行,转为挂起态或就绪态。这就是可剥夺型的内核。当中断一个高优先级任务,中断时 挂起,中断结束后任务继续运行,并立即剥夺低优先级的任务。 对于这种可剥夺型内核,CPU的使用时可以确定的,可优化任务级响应。在很多单片机或ARM板上很容易就可以移植UC/OS-II。当然本次设计使用的TQ2440,也可以完美的移植它。移植程序在网上都可以找得到,所以设计中就不做解释了。 本次设计实现的是串口协议和网口协议组合成的一个数据网关。其主要的流程图如下所示:

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

几种主流嵌入式操作系统分析

几种主流嵌入式操作系统分析 1.嵌入式Linux 嵌入式Linux(Embedded Linux)是指对标准Linux经过小型化裁剪处理之后,能够固化 在容量只有几KB或者几MB 字节的存储器芯片或者单片机中,是适合于特定嵌入式应用场合的专用Linux操作系统。在目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux。 这与它自身的优良特性是分不开的。 嵌入式Linux 同Linux 一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络支持等优点。另外,为了更好地适应嵌入式领域的开发,嵌入式Linux 还在Linux 基础上 做了部分改进,如下所示。 ? 改善的内核结构 Linux 内核采用的是整体式结构(Monolithic),整个内核是一个单独的、非常大的程序,这____________样虽然能够使系统的各个部分直接沟通,提高系统响应速度,但与嵌入式系统存储容量小、 资源有限的特点不相符合。因此,在嵌入式系统经常采用的是另一种称为微内核(Microkernel) 的体系结构,即内核本身只提供一些最基本的操作系统功能,如任务调度、内存管理、中断 处理等,而类似于文件系统和网络协议等附加功能则运行在用户空间中,并且可以根据实际 需要进行取舍。这样就大大减小了内核的体积,便于维护和移植。 ? 提高的系统实时性 由于现有的Linux 是一个通用的操作系统,虽然它也采用了许多技术来加快系统的运行 和响应速度,但从本质上来说并不是一个嵌入式实时操作系统。因此,利用Linux 作为底层 操作系统,在其上进行实时化改造,从而构建出一个具有实时处理能力的嵌入式系统,如RT-Linux 已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等 各种领域。 嵌入式Linux 同Linux 一样,也有众多的版本,其中不同的版本分别针对不同的需要在内核等方面加入了特定的机制。嵌入式Linux 的主要版本如表4.1所示。 表4.1 嵌入式Linux主要版本 版本简单介绍 μCLinux 开放源码的嵌入式Linux 的典范之作。它主要是针对目标处理器没有存储管理单元 MMU,其运行稳定,具有良好的移植性和优秀的网络功能,对各种文件系统有完备 的支持,并提供标准丰富的API RT-Linux 由美国墨西哥理工学院开发的嵌入式Linux硬实时操作系统。它已有广泛的应用 Embedix 根据嵌入式应用系统的特点重新设计的Linux发行版本。它提供了超过25种的Linux 《嵌入式Linux应用程序开发详解》——第4章、嵌入式系统基础 系统服务,包括Web服务器等。此外还推出了Embedix的开发调试工具包、基于图 形界____________面的浏览器等。可以说,Embedix是一种完整的嵌入式Linux解决方案

VxWorks操作系统MakeFile

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

相关文档