




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,VxWorks入门介绍2010/10/1,.,2,目录,VxWorks简介BSP及系统执行流程中断任务调度任务切换任务创建定时器,.,3,目录,任务间通讯信号量二进制信号量消息队列socket集成开发环境Tornado的使用,.,4,VxWorks简介,VxWorks组成VxWorks操作系统由任务的管理与调度、任务的同步与通信、动态内存的管理、时钟的管理、I/O管理、文件系统等几部分组成,.,5,VxWorks简介,对于VxWorks,用户可裁减掉程序员认为没有使用到的功能,直到只剩下最简内核(可以只有10k左右)一般使用的VxWorks为标准的单CPU版本。VxFusion为标准的多CPU版本,应用程序在多个CPU上运行,但仍然象在一个CPU上运行那样进行数据的交换、通信与同步。,.,6,VxWorks简介,VxWorks使用统一的API,对于VxWorks支持的不同的CPU、VxWorks的不同版本,API都是一样的。VxWorks的API是由操作系统内核提供的服务原语搭建起来的。服务原语,是不可打断的,这样可以保证系统调用的时间尽量小、尽量是常量和可确定,.,7,BSP,BSP是系统用来管理外设的部分,由两部分组成:初始化、驱动程序。所谓初始化是指从系统上电复位开始直到windkernel和usrRoot根任务启动的这段时间,系统的执行过程。驱动程序就是一些包含I/O操作的子函数。初始化包括:CPUInit、BoardInit、SystemInit。CPUInit初始化CPU的内部寄存器。BoardInit初始化智能I/O的寄存器,将device打通。SystemInit为系统的运行准备数据结构,进行数据初始化。,.,8,BSP,系统上电代码执行流程执行流程,.,9,中断,中断是实时系统非常重要的组成部分,与linux及windows相比,VxWorks对于中断的相应速度和中断处理程序的处理速度要高很多,实时性最好对于中断处理程序,可能引起阻塞的都不能使用,printf可能引起阻塞,如果在中断处理程序里面需要输出调试信息,可以使用logMsg来输出。中断里面也不要试图获得信号量,接收消息队列里面的消息等操作。,.,10,中断,中断包含三层含义中断引脚号(或从中断控制器中得到)中断号中断向量(对x86是中断号*4)中断处理程序和中断向量必须连接再允许后才能被激活,.,11,中断,对于中断服务程序,越简短越好,为提高VxWorks的中断服务程序与任务的合作性能,最好的机制是信号量。下面例子中我们会看到标准的中断处理过程。,.,12,中断,典型的中断处理过程示例:1。中断连接:intConnect(IV_IRQ6,(FUNCPTR)Isr1,0);参量1:连接的中断向量参量2:中断服务程序参量3:中断服务程序的参量,.,13,中断,中断允许:2。intEnable(int)IV_IRQ6);参量:中断向量3。中断处理程序,.,14,中断,Isr1()关中断;清中断;semGive(SemId1);/*释放信号量*/,.,15,中断,4。中断处理任务task1()for(;)semTake(SemId1,WAIT_FOREVER)开中断;,.,16,任务间调度,VxWorks无条件的使用基于优先级的任务间调度对于同等优先级的任务,如果基于时间片轮循没有打开,任务采取先到先运行,运行完毕再交出cpu,如果打开,则轮流使用cpu。任务里如果有死循环,比它优先级低的任务都不能运行,.,17,任务切换,任务切换速度:us量级,Cache关闭时上升到10us量级。,.,18,任务的创建,VxWorks创建任务,如下例所示创建名为task1的任务:taskSpawn(“tTask1”,55,0,10000,(FUNCPTR)task1,0,0,0,0,0,0,0,0,0,0);参量1:任务名参量2:任务优先级,.,19,任务的创建,参量3:创建时可选参量参量4:任务堆栈尺寸参量5:创建的任务参量615:任务的参量,.,20,定时器,VxWorks使用3种定时器time0:用于系统时钟,可用sysClkRateSet()改变速率,默认值时60次/秒,一般我们改为100次/秒,系统时钟变为10ms等级。VxWorks下的watchdog基于timer0,因为是在interrupt尺度,使用必须谨慎,否则会降低系统效率,.,21,定时器,time1:用于辅助时钟,可用sysAuxClkRateSet()改变速度,其精度可以很高,例如1ms,除驱动外,一般不使用。time2:用于时标(timestamp)。从系统开始运行时就一直递增,可以用来获得系统运行时间,在windview工具中被使用。用户程序也可以通过sysTimestamp()得到运行时间。一般不使用。,.,22,Watchdog定时器,使用举例申明:WDOG_IDWdId1;初始化创建:WdId1=wdCreate();初始化启动:wdStart(WdId1,1,(FUNCPTR)function1,0)参数1:定时器ID参数2:延时tick数,.,23,Watchdog定时器,参数3:定时器到要调用的函数参数4:要调用函数的参数定时要调用的函数function1wdStart(WdId1,1,(FUNCPTR)function1,0),.,24,Watchdog定时器,定时器里面运行的代码与中断有同等的优先级,对于中断所有的约束定时器同样要遵守,会引起阻塞的都不能使用。比如不能使用printf打印,不能接收消息里面的消息,不能试图获得一个信号量等。,.,25,任务间通讯,信号量消息队列管道全局变量socket,.,26,信号量,信号量提供了任务间最快速通信,可以实现任务间同步和互斥。互斥用于资源管理,上锁对共享资源的访问。同步可以协调任务间的执行。,.,27,信号量,信号量的三种类型二进制互斥计数信号量,.,28,信号量,互斥信号量本质也是一种二进制信号量,主要用于解决内在互斥的问题,优先级继承等情况而优化的特殊的二进制信号量计数信号量会随着信号量释放的次数改变而改变二进制信号量最基本,最常用,.,29,二进制信号量,最常用最快的信号量,用于同步和互斥创建信号量的时候,队列类型已经确定。等待信号量的任务可以按照优先级(SEM_Q_PRIORITY)或先进先出(SEM_Q_FIFO)的顺序排队。,.,30,二进制信号量,二进制同步信号量使用举例:申明:SEM_IDSemId1;初始化:SemId1=semBCreate(SEM_Q_FIFO,SEM_EMPTY);,.,31,二进制信号量,任务一释放信号量SemId1Task1()semGive(SemId1);任务二获得信号量后继续执行,否则等待此信号量,.,32,二进制信号量,task2()For(;)semTake(SemId1,WAIT_FOREVER);,.,33,二进制信号量,二进制互斥信号量使用举例:申明:SEM_IDSemId1;初始化:SemId1=semBCreate(SEM_Q_PRIORITY,SEM_FULL);,.,34,二进制信号量,使用function1()semTake(SemId1,WAIT_FOREVER);/*需要保护的代码*/semGive(SemId1);,.,35,消息队列,任务间通讯使用的最常用的方式允许长度可变,数目可变的消息排队用在单CPU任务间通讯任何任务可以发送消息到消息队列任何任务可以从消息队列接收消息两个任务若需要全双工通信,需要两个队列,一发一收,.,36,消息队列,使用举例申明:MSG_Q_IDMsgQ1;创建:MsgQ1=msgQCreate(500,300,MSG_Q_FIFO);参数1:排队的最大消息数量参数2:每个消息允许的最大长度参数3:操作方式,fifo或优先级,.,37,消息队列,发送msgQSend(MsgQ1,pmsgbuf,length,NO_WAIT,MSG_PRI_NORMAL);参数1:队列ID参数2:要发送的消息指针参数3:要发送的消息长度参数4:等待的tick数目,.,38,消息队列,参数5:操作方式,MSG_PRI_NORMAL或MSG_PRI_URGENT,.,39,消息队列,接收Task1()for(;)msgQReceive(MsgQ1,m_buffer,500,WAIT_FOREVER);,.,40,消息队列,参量1:队列ID参量2:接收消息的buffer参量3:buffer的最大长度参量4:等待的tick数目,NO_WAIT不进行等待,WAIT_FOREVER永远等待,.,41,socket,网络是VxWorks和其它系统联系的主要途径。VxWorks实现了与BSD4.4TCP/IP兼容的网络协议栈。通常使用socket编程接口,客户/服务器编程来实现VxWorks与其他系统,如linux,windows等其它系统之间的通信,.,42,socket,SOCKET编程举例例子较长,具体可以参见VxWorksNetworkProgrammersGuide5.57.2BSDSOCKET7.2.2DatagramSockets(UDP)7.2.3StreamSockets(TCP),.,43,Tornado工具使用,Tornado整个开发系统包含三部分组成VxWorks:运行在目标板上的高性
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新版gmp教育培训管理制度
- 服装培训机构销售管理制度
- 科技驱动型私募股权投资的退出机制研究-洞察阐释
- 江苏培训机构从业人员管理制度
- 海南海药公司盈余管理制度
- 物业公司办公室5s管理制度
- 物资再生回收公司安全管理制度
- 文化与文案的深度融合研究-洞察阐释
- 租赁公司发车日常管理制度
- 基于视觉与语音交互的智能家居系统研究-洞察阐释
- 2025年浙江宁波宁海县第一医院招考聘用紧缺专业编外医师笔试历年典型考题解题思路附带答案详解
- 贵州国企招聘2025贵州省粮食储备集团有限公司招聘76人笔试参考题库附带答案详解析集合
- 3D打印食品安全标准-洞察及研究
- 2024-2025学年湘教版七年级数学下册期末素养测试卷(二)含答案
- DB31/T 1204-2020标准先进性评价通用要求
- 2025年中国半球谐振陀螺仪行业市场前景预测及投资价值评估分析报告
- 《奇异空间》课件 -2024-2025学年湘美版(2024)初中美术七年级下册
- 合伙或养鸡协议书
- 2024年西安高新区公办学校教师招聘真题
- 行政管理学科试题及答案分享
- 2023-2024学年上海市浦东区八年级(下)期末数学试卷 (含答案)
评论
0/150
提交评论