vxworks入门介绍.ppt

vxworks入门介绍.ppt

ID:49202615

大小:190.00 KB

页数:45页

时间:2020-02-01

vxworks入门介绍.ppt_第1页
vxworks入门介绍.ppt_第2页
vxworks入门介绍.ppt_第3页
vxworks入门介绍.ppt_第4页
vxworks入门介绍.ppt_第5页
资源描述:

《vxworks入门介绍.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VxWorks入门介绍2006/4/19目录VxWorks简介BSP及系统执行流程中断任务调度任务切换任务创建定时器目录任务间通讯信号量二进制信号量消息队列socket集成开发环境Tornado的使用VxWorks简介VxWorks组成VxWorks操作系统由任务的管理与调度、任务的同步与通信、动态内存的管理、时钟的管理、I/O管理、文件系统等几部分组成VxWorks简介对于VxWorks,用户可裁减掉程序员认为没有使用到的功能,直到只剩下最简内核(可以只有10k左右)一般使用的VxWorks为标准

2、的单CPU版本。VxFusion为标准的多CPU版本,应用程序在多个CPU上运行,但仍然象在一个CPU上运行那样进行数据的交换、通信与同步。VxWorks简介VxWorks使用统一的API,对于VxWorks支持的不同的CPU、VxWorks的不同版本,API都是一样的。VxWorks的API是由操作系统内核提供的服务原语搭建起来的。服务原语,是不可打断的,这样可以保证系统调用的时间尽量小、尽量是常量和可确定BSPBSP是系统用来管理外设的部分,由两部分组成:初始化、驱动程序。所谓初始化是指从系统上

3、电复位开始直到windkernel和usrRoot根任务启动的这段时间,系统的执行过程。驱动程序就是一些包含I/O操作的子函数。初始化包括:CPUInit、BoardInit、SystemInit。CPUInit初始化CPU的内部寄存器。BoardInit初始化智能I/O的寄存器,将device打通。SystemInit为系统的运行准备数据结构,进行数据初始化。BSP系统上电代码执行流程执行流程中断中断是实时系统非常重要的组成部分,与linux及windows相比,VxWorks对于中断的相应速度和

4、中断处理程序的处理速度要高很多,实时性最好对于中断处理程序,可能引起阻塞的都不能使用,printf可能引起阻塞,如果在中断处理程序里面需要输出调试信息,可以使用logMsg来输出。中断里面也不要试图获得信号量,接收消息队列里面的消息等操作。中断中断包含三层含义中断引脚号(或从中断控制器中得到)中断号中断向量(对x86是中断号*4)中断处理程序和中断向量必须连接再允许后才能被激活中断对于中断服务程序,越简短越好,为提高VxWorks的中断服务程序与任务的合作性能,最好的机制是信号量。下面例子中我们会看

5、到标准的中断处理过程。中断典型的中断处理过程示例:1。中断连接:intConnect(IV_IRQ6,(FUNCPTR)Isr1,0);参量1:连接的中断向量参量2:中断服务程序参量3:中断服务程序的参量中断中断允许:2。intEnable((int)IV_IRQ6);参量:中断向量3。中断处理程序中断Isr1(){关中断;清中断;semGive(SemId1);/*释放信号量*/}中断4。中断处理任务task1(){for(;;)semTake(SemId1,WAIT_FOREVER)…开中断;}

6、任务间调度VxWorks无条件的使用基于优先级的任务间调度对于同等优先级的任务,如果基于时间片轮循没有打开,任务采取先到先运行,运行完毕再交出cpu,如果打开,则轮流使用cpu。任务里如果有死循环,比它优先级低的任务都不能运行任务切换任务切换速度:us量级,Cache关闭时上升到10us量级。任务的创建VxWorks创建任务,如下例所示创建名为task1的任务:taskSpawn(“tTask1”,55,0,10000,(FUNCPTR)task1,0,0,0,0,0,0,0,0,0,0);参量1:

7、任务名参量2:任务优先级任务的创建参量3:创建时可选参量参量4:任务堆栈尺寸参量5:创建的任务参量6-15:任务的参量定时器VxWorks使用3种定时器time0:用于系统时钟,可用sysClkRateSet()改变速率,默认值时60次/秒,一般我们改为100次/秒,系统时钟变为10ms等级。VxWorks下的watchdog基于timer0,因为是在interrupt尺度,使用必须谨慎,否则会降低系统效率定时器time1:用于辅助时钟,可用sysAuxClkRateSet()改变速度,其精度可以很

8、高,例如1ms,除驱动外,一般不使用。time2:用于时标(timestamp)。从系统开始运行时就一直递增,可以用来获得系统运行时间,在windview工具中被使用。用户程序也可以通过sysTimestamp()得到运行时间。一般不使用。Watchdog定时器使用举例申明:WDOG_IDWdId1;初始化创建:WdId1=wdCreate();初始化启动:wdStart(WdId1,1,(FUNCPTR)function1,0)参数1:定时器ID参数2:延时tick

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。